apiphobic-middleware 1.1.0 → 1.2.0

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
  SHA256:
3
- metadata.gz: ea2e68845e50dd710e7207df81b3dc11c2103468b581e5dfec8f56405f5bc34d
4
- data.tar.gz: '086978783ea45c875a89d8312423fcc80889d5407ef99e069768b003ad821566'
3
+ metadata.gz: d5fc848c052df27e6f94826ab6401718c276e1d24f1055b3eda185591cee5362
4
+ data.tar.gz: 9a20b4f0002aa360ec928e7cc501721b85b75afd28463c629e6f78be4c942b89
5
5
  SHA512:
6
- metadata.gz: ba24fcbdd61b5f71236a3621672acecc1f64c68c42f20e1644ab0c20c8439ff5a7dfaab8a60b4c74f7cc348091f5bfec87a387cc10ec680d737c701006f7b8b2
7
- data.tar.gz: 36d93467b45fa35046bf09340139e27cf51faad6e8190909b45554f03fe43c7489fa4f3674243e3021a58a2c0d8bc7ebe73ccd35f3ac39563feaf3a54184ed1f
6
+ metadata.gz: 9a079597f41bebd6ada817d9470b974f86f3e66678bc2a342bfe6e3bd1adcf8333cc9e635456aa6a6f54637bcb7a7e8582bd8e39f5f34517854a18bcc1b4a713
7
+ data.tar.gz: 78bcf6c812b9017d35172a3dc0e494311227b0f8df6321bbc3e9b6afa7fdfdf8ea561f8a8f6d4b46014be9c249095cdd342c9e128549a486fda07a9f6b542d57
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,6 +3,7 @@
3
3
  require 'json'
4
4
  require 'apiphobic/requests/transform_json_api'
5
5
  require 'apiphobic/responses/invalid_request_body'
6
+ require 'apiphobic/responses/transform_json_api'
6
7
 
7
8
  module Apiphobic
8
9
  module Middleware
@@ -17,7 +18,11 @@ class JsonApiParameters
17
18
 
18
19
  json_api_request = request.transform
19
20
 
20
- @app.call(json_api_request)
21
+ raw_response = @app.call(json_api_request)
22
+
23
+ response = Responses::TransformJsonApi.new(*raw_response)
24
+
25
+ response.transform
21
26
  rescue JSON::ParserError
22
27
  Responses::InvalidRequestBody.call(env)
23
28
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Apiphobic
4
4
  module Middleware
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Apiphobic
4
+ module Responses
5
+ class TransformJsonApi
6
+ attr_accessor :status,
7
+ :headers,
8
+ :body
9
+
10
+ def initialize(status, headers, body)
11
+ self.status = status
12
+ self.headers = headers
13
+ self.body = body
14
+ end
15
+
16
+ def transform
17
+ [
18
+ status,
19
+ transformed_headers,
20
+ body,
21
+ ]
22
+ end
23
+
24
+ private
25
+
26
+ def transformed_headers
27
+ headers[content_parameter] = transformed_body
28
+
29
+ headers
30
+ end
31
+
32
+ def transformed_body
33
+ return request_body if request_body == '' || request_body.nil?
34
+
35
+ relationships = request_hash.dig('data', 'relationships') || {}
36
+
37
+ relationships.dup.each do |relationship_name, data|
38
+ relationships.delete(relationship_name)
39
+ relationships[relationship_name.tr('_', '-')] = data
40
+ end
41
+
42
+ JSON.dump(request_hash)
43
+ end
44
+
45
+ def content_parameter
46
+ headers['rack.input'] ? 'rack.input' : 'RACK_INPUT'
47
+ end
48
+
49
+ def request_hash
50
+ @request_hash ||= JSON.parse(request_body)
51
+ end
52
+
53
+ def request_body
54
+ if headers['rack.input']
55
+ headers['rack.input'].read
56
+ else
57
+ headers['RACK_INPUT'].to_s
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apiphobic-middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -163,6 +163,7 @@ files:
163
163
  - lib/apiphobic/responses/invalid_request_body.rb
164
164
  - lib/apiphobic/responses/invalid_subdomain.rb
165
165
  - lib/apiphobic/responses/invalid_token.rb
166
+ - lib/apiphobic/responses/transform_json_api.rb
166
167
  homepage: ''
167
168
  licenses:
168
169
  - MIT
metadata.gz.sig CHANGED
Binary file