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

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