toast 1.0.3 → 1.0.4

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: 277d6133963ef4bab7c92dec2cfcf4e57c59f7e3
4
- data.tar.gz: f592710bc8498778fd12760cd8439eea36bab6f5
3
+ metadata.gz: bdefce8bc09422d780b660db05cbe93fbf3dd3d0
4
+ data.tar.gz: 9d596dba374e4602c302b83b5944683f1881981a
5
5
  SHA512:
6
- metadata.gz: 95033345cb023b2ffcdf47b2ea000b6c2147a9daab5268de4e4bc565ae811fc6d6e3d5fd06a2d431b16d79c21b00872bc44d44f6913f70b4601d60e23b43a0f4
7
- data.tar.gz: 7db559b1ae70778c937c1bb59c4888fb508e29e30f83cfa0c5cf65d7197d010583c479b31ebb8b2aae5194fcff97a8fdd8808012a66c981e89467bedcc71961f
6
+ metadata.gz: 837a7d4e4518a105190ee3dcf7ca9898ad3fc7e8397379cbe84b046afa5825cc9cd1dac0a0ddd1805c105197d8628dc090a0030d8e30edc4338943edbf890d94
7
+ data.tar.gz: 55d02a759ac0fa75686b5a7b0137d1cc479b339beaaa4f58ac3f82cfd20debc8f7e65d295e8444def7b41308c80bfdecb681a029fd9824c6a7363991a4f97946
@@ -7,7 +7,7 @@ class Toast::CanonicalRequest
7
7
  def initialize id, base_config, auth, request
8
8
  @id = id
9
9
  @base_config = base_config
10
- @selected_attributes = request.query_parameters.delete(:toast_select).try(:split,',')
10
+ @selected_attributes = request.query_parameters[:toast_select].try(:split,/ *, */)
11
11
  @uri_params = request.query_parameters
12
12
  @base_uri = base_uri(request)
13
13
  @verb = request.request_method.downcase
@@ -35,19 +35,17 @@ class Toast::CanonicalRequest
35
35
  msg: "GET not configured"
36
36
  else
37
37
  begin
38
- model = @base_config.via_get.handler.call(
39
- @base_config.model_class.find(@id), @uri_params
40
- )
38
+ model_instance = @base_config.model_class.find(@id)
41
39
 
42
40
  # call allow blocks to authorize
43
- if @base_config.via_get.permissions.all?{|p| p.call(@auth, model, @uri_params)}
44
- response :ok,
45
- headers: {"Content-Type" => @base_config.media_type},
46
- msg: "sent #{model.class}##{model.id}",
47
- body: represent(model, @base_config)
48
- else
49
- response :unauthorized, msg: "authorization failed"
50
- end
41
+ call_allow @base_config.via_get.permissions, @auth, model_instance, @uri_params
42
+
43
+ model_instance = call_handler(@base_config.via_get.handler, model_instance, @uri_params)
44
+
45
+ response :ok,
46
+ headers: {"Content-Type" => @base_config.media_type},
47
+ msg: "sent #{model_instance.class}##{model_instance.id}",
48
+ body: represent(model_instance, @base_config)
51
49
 
52
50
  rescue ActiveRecord::RecordNotFound
53
51
  response :not_found, msg: "#{@base_config.model_class}##{@id} not found"
@@ -55,6 +53,15 @@ class Toast::CanonicalRequest
55
53
  rescue BadRequest => error
56
54
  response :bad_request, msg: "`#{error.message}' in: #{error.source_location}"
57
55
 
56
+ rescue AllowError => error
57
+ response :internal_server_error,
58
+ msg: "exception raised in allow block: `#{error.orig_error.message}' in #{error.source_location}"
59
+ rescue HandlerError => error
60
+ response :internal_server_error,
61
+ msg: "exception raised in via_get handler: `#{error.orig_error.message}' in #{error.source_location}"
62
+ rescue NotAllowed => error
63
+ response :unauthorized, msg: "not authorized by allow block in: #{error.source_location}"
64
+
58
65
  rescue => error
59
66
  response :internal_server_error, msg: "exception from via_get handler: " + error.message
60
67
  end
@@ -11,7 +11,7 @@ class Toast::CollectionRequest
11
11
  @base_uri = base_uri(request)
12
12
  @verb = request.request_method.downcase
13
13
  @requested_range = Toast::HttpRange.new(request.env['HTTP_RANGE'])
14
- @selected_attributes = request.query_parameters.delete(:toast_select).try(:split,',')
14
+ @selected_attributes = request.query_parameters[:toast_select].try(:split,/ *, */)
15
15
  @uri_params = request.query_parameters
16
16
  @auth = auth
17
17
  @request = request
@@ -10,7 +10,7 @@ class Toast::PluralAssocRequest
10
10
  @id = id
11
11
  @config = config
12
12
  @base_config = base_config
13
- @selected_attributes = request.query_parameters.delete(:toast_select).try(:split,',')
13
+ @selected_attributes = request.query_parameters[:toast_select].try(:split,/ *, */)
14
14
  @uri_params = request.query_parameters
15
15
  @base_uri = base_uri(request)
16
16
  @verb = request.request_method.downcase
@@ -7,7 +7,7 @@ class Toast::SingleRequest
7
7
  def initialize config, base_config, auth, request
8
8
  @config = config
9
9
  @base_config = base_config
10
- @selected_attributes = request.query_parameters.delete(:toast_select).try(:split,',')
10
+ @selected_attributes = request.query_parameters[:toast_select].try(:split,/ *, */)
11
11
  @uri_params = request.query_parameters
12
12
  @base_uri = base_uri(request)
13
13
  @verb = request.request_method.downcase
@@ -9,7 +9,7 @@ class Toast::SingularAssocRequest
9
9
  @id = id
10
10
  @config = config
11
11
  @base_config = base_config
12
- @selected_attributes = request.query_parameters.delete(:toast_select).try(:split,',')
12
+ @selected_attributes = request.query_parameters[:toast_select].try(:split,/ *, */)
13
13
  @uri_params = request.query_parameters
14
14
  @base_uri = base_uri(request)
15
15
  @verb = request.request_method.downcase
data/lib/toast/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Toast
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - robokopp (Robert Annies)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-14 00:00:00.000000000 Z
11
+ date: 2017-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails