toast 1.0.3 → 1.0.4

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: 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