reel_template 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0a78cf770740cd41f90afa8b6b533cbb211c863
4
- data.tar.gz: 42e365017954bc5c12ca36d1e0d98e459358d92d
3
+ metadata.gz: a1517f28622ae1969ecbe03740539f63a200a606
4
+ data.tar.gz: f17540bd89a3f2e4d6619c1b63e5ffd6db97994e
5
5
  SHA512:
6
- metadata.gz: 8d7ff9ce77e8e894e70b4a4f7ae53eefcc74b138f39535cfbefffc2935d7368293e0b2f621513d86ef58c781452059b1a07f6d7cacb67a0ef566f00b28c5aebc
7
- data.tar.gz: 7c8948d04bf080b4855c00158ad90cc366272b4d7829fe3c90fe649608ea285372733a5079ec2d9bd024214cbfa7403d8ca719f35a0863b6fc85b27eabdf71f2
6
+ metadata.gz: 24c8db48181528af449d39ddfde1aea8c36982dbae6c087c7c12e4e2553d46c40ae81ae52d90e416673ee5baa165c84387ae4e70a5bd24c8c48b4acbaa39a9f1
7
+ data.tar.gz: 47371943250a4bc8b0282dde762001c72ed3fe9ffb1d01528d6c3234c1d6617174491b8e53d1b65b93012af5987090c6a7fa93039416647e6b4e43baa4e16f8d
@@ -1,3 +1,3 @@
1
1
  module ReelTemplate
2
- VERSION = %w(0 0 5).join('.')
2
+ VERSION = %w(0 0 6).join('.')
3
3
  end
@@ -7,8 +7,8 @@ module <%= @app_module %>
7
7
 
8
8
  require '<%= @app_name %>/commands/base'
9
9
 
10
- # REQUIRE YOUR COMMMANDS HERE
11
- require '<%= @app_name %>/commands/test'
10
+ # Require all files from the 'commands' directory
11
+ <%= @app_module %>.require_dir 'commands'
12
12
 
13
13
  end
14
14
  end
@@ -0,0 +1,19 @@
1
+ <%
2
+ @file_name = "lib/#{@app_name}/commands/create.rb"
3
+ %>
4
+ module <%= @app_module %>::Commands
5
+ class Create < Command
6
+
7
+ def execute
8
+ record = <%= @app_module %>::Models::Test.new(params)
9
+
10
+ if record.save
11
+ success record
12
+ else
13
+ failure record, t(:invalid, model: "ModelName") # Returns failure code with an invalid message (from locale/en.yml file)
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -5,10 +5,12 @@
5
5
  module <%= @app_module %>
6
6
  module Commands
7
7
 
8
- class Test < Command
8
+ class GetAll < Command
9
9
 
10
10
  def execute
11
- success nil, "Test Command completed successfully"
11
+ database_records = <%= @app_module %>::Models::Test.all
12
+
13
+ success database_records
12
14
  end
13
15
 
14
16
  end
@@ -17,6 +17,14 @@ module <%= @app_module %>
17
17
  <%= @app_const %>_ROOT
18
18
  end
19
19
 
20
+ # Requires all .rb files in the named directory
21
+ # Useful for loading all commands / endpoints / models / etc...
22
+ # @param [String] directory The directory to load files from
23
+ def require_dir(directory)
24
+ directory = File.expand_path("../#{directory}", __FILE__)
25
+ Dir["#{directory}/**/*.rb"].each { |f| require f }
26
+ end
27
+
20
28
  # Determines the current environment from the system ENV variable. Defaults to development
21
29
  # @return [String] The current application environment
22
30
  def env
@@ -11,8 +11,8 @@ module <%= @app_module %>
11
11
  require '<%= @app_name %>/endpoints/base'
12
12
  require '<%= @app_name %>/support/authentication'
13
13
 
14
- # REQUIRE YOUR ENDPOINTS HERE
15
- require '<%= @app_name %>/endpoints/test_endpoint'
14
+ # Require all files from the 'endpoints' directory
15
+ <%= @app_module %>.require_dir 'endpoints'
16
16
 
17
17
  end
18
18
  end
@@ -45,10 +45,22 @@ module <%= @app_module %>::Endpoints
45
45
  @params ||= Hashie::Mash.new( combined_params )
46
46
  end
47
47
 
48
+ # Returns the current user
49
+ # @current_user could be set from inside the `basic_auth` block located in support/authentication.rb
48
50
  def current_user
49
51
  @current_user || nil
50
52
  end
51
53
 
54
+ # Returns an array of allowed HTTP methods (GET, POST, etc...)
55
+ def self.allowed_methods
56
+ raise NotImplementedError
57
+ end
58
+
59
+ # @private
60
+ def allowed_methods
61
+ self.class.allowed_methods
62
+ end
63
+
52
64
  private
53
65
 
54
66
  # Retrieves all parameters from request body, URL segments and URL query string
@@ -5,20 +5,43 @@
5
5
  module <%= @app_module %>
6
6
  module Endpoints
7
7
 
8
+ # Endpoint allows for the use of Webmachine resource callbacks
8
9
  class TestEndpoint < Endpoint
9
10
 
10
- def allowed_methods
11
- %w(GET)
11
+ # Only allow GET and POST requests to this endpoint
12
+ def self.allowed_methods
13
+ %w(GET POST)
12
14
  end
13
15
 
16
+ # All URLs route to this endpoint
14
17
  def self.path
15
- ["test"]
18
+ ["*"]
16
19
  end
17
20
 
21
+ # POST requests create a resource
22
+ def post_is_create?
23
+ true
24
+ end
25
+
26
+ # Webmachine callback for POST requests
27
+ def create_path
28
+ create_command = <%= @app_module %>::Commands::Create.new(params)
29
+ @create_response = create_command.execute
30
+
31
+ "/#{@create_response.id}" # Returns the path to the created resource
32
+ end
33
+
34
+ # Called during POST and PUT requests
35
+ def from_json
36
+ send_response! @create_response
37
+ end
38
+
39
+ # Called for GET requests
18
40
  def to_json
19
- test = <%= @app_module %>::Commands::Test.new(params)
20
- send_response! test.execute
41
+ get_all = <%= @app_module %>::Commands::GetAll.new(params)
42
+ send_response! get_all.execute
21
43
  end
44
+
22
45
  end
23
46
 
24
47
  end
@@ -9,8 +9,8 @@ module <%= @app_module %>
9
9
 
10
10
  require '<%= @app_name %>/support/serializable_attributes'
11
11
 
12
- # REQUIRE YOUR MODELS HERE
13
- # require '<%= @app_name %>/models/user'
12
+ # Require all files from the 'models' directory
13
+ <%= @app_module %>.require_dir 'models'
14
14
 
15
15
  end
16
16
  end
@@ -12,8 +12,9 @@ module <%= @app_module %>
12
12
  set_collection_name 'test'
13
13
 
14
14
  key :test_field, String
15
+ validates_presence_of :test_field
15
16
 
16
- serialize_attributes :id, :test_field
17
+ serialize_attrs :id, :test_field # Only these fields are included in the response JSON output
17
18
  end
18
19
 
19
20
  end
@@ -35,7 +35,7 @@ module <%= @app_module %>
35
35
  app.routes do
36
36
  # Add each registered endpoint to router
37
37
  <%= @app_module %>::Endpoints.all.each do |ep|
38
- add ep.path, ep
38
+ add ep.path, ->(request) { ep.allowed_methods.include? request.method }, ep
39
39
  end
40
40
  end
41
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reel_template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Dayton
@@ -50,7 +50,8 @@ files:
50
50
  - template/lib/app.rb.erb
51
51
  - template/lib/appname/commands.rb.erb
52
52
  - template/lib/appname/commands/base.rb.erb
53
- - template/lib/appname/commands/test.rb.erb
53
+ - template/lib/appname/commands/create.rb.erb
54
+ - template/lib/appname/commands/get_all.rb.erb
54
55
  - template/lib/appname/config.rb.erb
55
56
  - template/lib/appname/core.rb.erb
56
57
  - template/lib/appname/endpoints.rb.erb