parakeet 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1981e58dc296402626ec3df314f2789dcdd76f3
4
- data.tar.gz: 65d7e4316c006d955ade4cbd24e4060be6e754f3
3
+ metadata.gz: ec7882c8e0e5b061e780ddfd41b8e0f1f864ddb9
4
+ data.tar.gz: 707d3e319cc66a346e34e6e33c2f856055f41969
5
5
  SHA512:
6
- metadata.gz: 72109436b186fb8914955701fa5fd19fd3c8f45dc5da75073cf04f4be3cd3dd791cc81508b22c6a505fe6e86fe7bb4b3c019f0e3aae2bf06901858528f6b3e79
7
- data.tar.gz: bf92acb325ef52f2e1d08b681b5879e8b79cf014e3ff1404687bf641ab8e523190ecf77233f206c696958d12f4fbe1cd8e026f0ca08f4d1041d8171ad076283b
6
+ metadata.gz: 20b61447864c99b376b561ce0bc59ffe57c09d22b37002bf696ebbec42a876a5bd75f9cf6272112e9b8a29aac15683393ee167b579af5446726626cc50f0c5c1
7
+ data.tar.gz: 99f8a299d03ca6fcf787055888d18e5d2dbabf6cc8e7e5bd873750693d8bc1962d2ac0fafa4c1432f9d7f23e0218bc08e2a12ed995dfb980b9cd4f3922603b33
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parakeet (0.1.0)
4
+ parakeet (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,37 @@
1
+ Summary:
2
+ 1) before_action is going to run before each of the actions in the controller
3
+ 2) Enable ability to select individual actions or all, this may just be covered
4
+ if the before_action has an entry in the hash for that action or not.
5
+ 3) An initializer/configuration file will be used to set the configuration of Parakeet and to pass in
6
+ the hash that will contain the controller, action, parameter name, and parameter type.
7
+ 4) The before_action will iterate over the expected params for this action, check
8
+ if they are in the params hash, and if they are, check if they are in the correct format.
9
+ 5) Return an object with errors. Probably similar to the error already returned by rails.
10
+ Maybe actively try to mimic the format. Give list of parameters that are
11
+ missing/invalid and return to the user as an instance variable.
12
+
13
+ Features:
14
+ 1) Mandatory/Optional parameter checking in the param hash for both existence,
15
+ and format/value.
16
+ 2) Potentially try and turn parameters into the expect form. Turn a string into
17
+ an int if that is desired.
18
+ 3) CLI to create the configuration file.
19
+ 4) Maybe create a way for the API to automatically return an error with the error object.
20
+ 5) Perhaps enable customization of the error message/error response.
21
+
22
+ Classes/Modules:
23
+ 1) Error
24
+ 2) Expected parameter (perhaps created on initialization with the configuration info, probably no reason for this anyways.)
25
+ 3) Configuration?
26
+ 4) ControllerAdditions (To handle the items mixed in to the base Controller)
27
+
28
+ ToDo:
29
+ 1) Review other gems to see class/module set up.
30
+ 1b) Flesh out a bit more sophisticated class layout then this document presents to make it
31
+ easier to move forward.
32
+ 1c) A clearer vision will also enable me to do a bit more targeted TDD as opposed to just
33
+ winging it
34
+
35
+ In Progress Design Doc
36
+ https://docs.google.com/document/d/1WQjCEmi5zS6S2IsDhvgS57BlsKrz9Erc3782GcBuG9s/edit
37
+ Last Updated: January 31st
File without changes
@@ -0,0 +1,27 @@
1
+ module Parakeet
2
+ # TODO: Update to 2017 using ActiveSupport::Concern
3
+ module ControllerAddons
4
+ module ClassMethods
5
+ def verify_parameters
6
+ self.send(:before_action, :verify_parameters)
7
+ end
8
+
9
+ def guideline
10
+ @guideline ||= ::Guideline.new
11
+ end
12
+ end
13
+ module InstanceMethods
14
+ def check_mixin
15
+ puts "ClassMethod successfully mixed in 12"
16
+ end
17
+ def verify_parameters
18
+ logger.info ActionController::Base.guideline.controller_actions
19
+ end
20
+ end
21
+ end
22
+
23
+ if defined? ActionController::Base
24
+ ActionController::Base.extend ControllerAddons::ClassMethods
25
+ ActionController::Base.include ControllerAddons::InstanceMethods
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ module Parakeet
2
+ module Guideline
3
+
4
+ # This will be included in a Guideline class that the user will
5
+ # generate and define the parameters/vallidations.
6
+ # class Guideline
7
+ # include Parakeet::Guideline
8
+ # def initialize
9
+ # verify_params('user#create', 'first_name', :string, { exists: true, length: 'under 10' })
10
+ # end
11
+ # end
12
+
13
+ # This seems like a super duplicative way to do this.
14
+ # Can pass in object that contains controller/action and ActionController
15
+ # and all parameters/types/validations instead. Is that just as messy?
16
+ # TODO: Update with a DRYer solution considering multiple parameters for a
17
+ # controller action
18
+ def verify_params(controller_action, parameter, type, validations)
19
+ # TODO: I'm thinking that this should create an object that represents
20
+ # an action. Then into that object insert the individual parameter rules.
21
+ # controller_actions[controller_action] = [] if controller_actions[controller_action].nil?
22
+ controller_actions[controller_action] << Parameter.new(parameter, type, validations)
23
+ end
24
+
25
+ def controller_actions
26
+ @controller_actions ||= Hash.new{ |hash, key| hash[key] = [] }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ module Parakeet
2
+ class Parameter
3
+ # TODO: Need to do some checking on the inputs here
4
+ def initialize(parameter, type, validations)
5
+ @name = parameter
6
+ @type = type
7
+ @validations = validations
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Parakeet
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/parakeet.rb CHANGED
@@ -1,19 +1,4 @@
1
1
  require "parakeet/version"
2
-
3
- module Parakeet
4
- module ClassMethods
5
- def check_mixin
6
- puts "ClassMethod successfully mixed in"
7
- end
8
- end
9
-
10
- def self.included(base)
11
- base.extend ClassMethods
12
- end
13
- end
14
-
15
- if defined? ActionController::Base
16
- ActionController::Base.class_eval do
17
- include Parakeet
18
- end
19
- end
2
+ require "parakeet/controller_addons"
3
+ require "parakeet/parameter"
4
+ require "parakeet/guideline"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parakeet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin Fike
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-20 00:00:00.000000000 Z
11
+ date: 2017-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,7 +70,12 @@ files:
70
70
  - Rakefile
71
71
  - bin/console
72
72
  - bin/setup
73
+ - design_document.txt
73
74
  - lib/parakeet.rb
75
+ - lib/parakeet/action.rb
76
+ - lib/parakeet/controller_addons.rb
77
+ - lib/parakeet/guideline.rb
78
+ - lib/parakeet/parameter.rb
74
79
  - lib/parakeet/version.rb
75
80
  - parakeet.gemspec
76
81
  homepage: https://github.com/colinfike/parakeet