shark-on-lambda 1.0.0.rc2 → 1.0.0.rc3

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
  SHA256:
3
- metadata.gz: 404addc89268452b9ffbc6bb94ad7133dcac67f9df3f419abf0b673a5de20493
4
- data.tar.gz: 328a87cf1a29c0e0322731ec83b94e4a0f029f87a8e37c1615062fc132da7b4d
3
+ metadata.gz: 57eec1d01b2f0b45cbc69cc1a9864d72fe763768864a248ce433018c9516b785
4
+ data.tar.gz: dc538a1815cecb6dfcb60fdf5405da99a80779deaff4541720ab8aaa13550603
5
5
  SHA512:
6
- metadata.gz: 7874706fa45ad80560518176e9a5ee6f6f61c0e139ec785f6ce90e8aeed04e023a8fa890c121ca93b53203d25589b0d6a8cefdc5eb82f590eb040010d4c13890
7
- data.tar.gz: 70fb9f45d5ad2c92d6643c1d20bf5aa70ff1883233814604870b2993501b761df588e577aa119d5b089c573fa86220183d10f4b076bf5587b5b3be9fc0e82e3a
6
+ metadata.gz: 34f5bca1123bc3538e0dfdc4f8a8d4386cb6e112afcd9d9b76d3b09da2b5260ab003a0eaf9c35aee6d17fe4e7a709facdde2be5ac68e9c7df8e2469a0fed8f48
7
+ data.tar.gz: fe358c47d3219b942c526bd1837b52f8a23794eced69e6d56419fb4e610335d9fcb7a435cf8b007365b3c675e9ffb8142faaf3d06c3fdc9d4d753213221c35ee
data/gems.locked CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shark-on-lambda (1.0.0.rc2)
4
+ shark-on-lambda (1.0.0.rc3)
5
5
  actionpack
6
6
  activesupport
7
7
  jsonapi-rb
@@ -53,7 +53,8 @@ module SharkOnLambda
53
53
  result = Base64.decode64(result) if event['isBase64Encoded']
54
54
 
55
55
  {
56
- 'rack.input' => StringIO.new(result).set_encoding(Encoding::BINARY)
56
+ 'rack.input' => StringIO.new(result).set_encoding(Encoding::BINARY),
57
+ 'CONTENT_LENGTH' => result.bytesize.to_s
57
58
  }
58
59
  end
59
60
 
@@ -11,6 +11,7 @@ module SharkOnLambda
11
11
  @action = options.fetch(:action)
12
12
 
13
13
  @headers = (options[:headers] || {}).deep_stringify_keys
14
+ @headers.transform_keys! { |key| key.downcase }
14
15
  @params = options[:params]
15
16
 
16
17
  initialize_env
@@ -46,7 +47,7 @@ module SharkOnLambda
46
47
  body = params.to_json
47
48
 
48
49
  env['rack.input'] = StringIO.new(body).set_encoding(Encoding::BINARY)
49
- env['CONTENT_TYPE'] = 'application/json'
50
+ env['CONTENT_TYPE'] = headers['content-type']
50
51
  env['CONTENT_LENGTH'] = body.bytesize.to_s
51
52
  end
52
53
 
@@ -54,6 +54,10 @@ module SharkOnLambda
54
54
  end&.description
55
55
  end
56
56
 
57
+ def default_content_type
58
+ 'application/json'
59
+ end
60
+
57
61
  def dispatch_request(env, skip_middleware: false)
58
62
  return SharkOnLambda.application.call(env) unless skip_middleware
59
63
 
@@ -66,10 +70,19 @@ module SharkOnLambda
66
70
  response.prepare!
67
71
  end
68
72
 
73
+ def headers_with_content_type(headers)
74
+ headers ||= {}
75
+ headers.transform_keys! { |key| key.to_s.downcase }
76
+ headers['content-type'] ||= default_content_type
77
+ headers
78
+ end
79
+
69
80
  def make_request(method, action, options = {})
70
81
  raise ArgumentError, 'Cannot find controller name.' unless controller?
71
82
 
72
83
  options = options.with_indifferent_access
84
+ options[:headers] = headers_with_content_type(options[:headers])
85
+
73
86
  env = build_env(method, action, options)
74
87
 
75
88
  status, headers, body = dispatch_request(
@@ -19,6 +19,10 @@ module SharkOnLambda
19
19
 
20
20
  private
21
21
 
22
+ def default_content_type
23
+ 'application/vnd.api+json'
24
+ end
25
+
22
26
  def parsed_body
23
27
  @parsed_body ||= JSON.parse(response.body).with_indifferent_access
24
28
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SharkOnLambda
4
- VERSION = '1.0.0.rc2'
4
+ VERSION = '1.0.0.rc3'
5
5
  end
@@ -52,6 +52,8 @@ module SharkOnLambda
52
52
  end
53
53
 
54
54
  def initialize!
55
+ enable_jsonapi!
56
+
55
57
  yield(config, secrets)
56
58
 
57
59
  Configuration.load(stage)
@@ -89,7 +91,13 @@ module SharkOnLambda
89
91
  Secrets.instance
90
92
  end
91
93
 
92
- protected
94
+ private
95
+
96
+ def enable_jsonapi!
97
+ ::Mime::Type.register('application/vnd.api+json', :jsonapi)
98
+ ::ActionDispatch::Request.parameter_parsers[:jsonapi] =
99
+ ::ActionDispatch::Request.parameter_parsers[:json].dup
100
+ end
93
101
 
94
102
  def run_initializers
95
103
  initializers_path = root.join('config', 'initializers')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shark-on-lambda
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc2
4
+ version: 1.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huy Dinh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-02 00:00:00.000000000 Z
11
+ date: 2020-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack