ninja_van_api 0.1.0 → 0.2.0

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: 498b64c23b4c90326050957887a23552deda6444bdf1ee6b779015d007a7da3a
4
- data.tar.gz: 831f91cba7c2368c42ac03325df4d2eadf602c3b23286a62180a3d89e34286bc
3
+ metadata.gz: 8e52db5dc47fb26dc3db9e5bc25fd170d377240a3d79dae39f02069bfb0de840
4
+ data.tar.gz: a277b4cee9e41a804617d3341455400cd9c4548e66a8ae113e7c9c3b74135e06
5
5
  SHA512:
6
- metadata.gz: a8017469ab59a08951a908bf9f7a89b7da7d558351d785e4cc3714aa5b82f7f05402355a56f3666066659c69494f2f2f2a643f22218879206cdf5608e971fa2e
7
- data.tar.gz: 4388e9cfba5ec46a464e283a61fb007aa4560613a40f6fda3bc65980038004238c33e234975b4097d4ab1db3e6fa036d515d9e1a939868a0b0d18a4d220bf6aa
6
+ metadata.gz: a4c035d321e2d0715492b790f6d9f595db4a9cae1ecad05f62f12d24c03f7cc7858ec4394b472e842ecd05a6d19e38b406b516caad2f8df3c524bceeb5db1336
7
+ data.tar.gz: e6615160d71b61dc4a7354c5b55af8b0ccc51ab574f5d24282f67e21103765c439829d7e80c56baa85a9a0e0db13b8abf7cd0189875b0b28cbe8a94933dc877e
@@ -21,17 +21,17 @@ module NinjaVanAPI
21
21
  def verify_webhook_signature
22
22
  # Extract country code from the request path
23
23
  # Example: /ninjavan/sg/webhooks -> 'sg'
24
- country_code = request.path.split('/')[2]&.downcase
24
+ country_code = request.path.split("/")[2]&.downcase
25
25
  return head :unauthorized unless country_code.present?
26
26
 
27
27
  webhook_secret = NinjaVanAPI.configuration.get_webhook_secret(country_code)
28
28
  return head :unauthorized unless webhook_secret
29
29
 
30
- signature = request.headers['X-Ninjavan-Hmac-Sha256']
30
+ signature = request.headers["X-Ninjavan-Hmac-Sha256"]
31
31
  return head :unauthorized unless signature.present?
32
32
 
33
33
  payload = request.raw_post
34
- hash = OpenSSL::HMAC.digest('sha256', webhook_secret, payload)
34
+ hash = OpenSSL::HMAC.digest("sha256", webhook_secret, payload)
35
35
  expected_signature = Base64.encode64(hash).strip
36
36
 
37
37
  return head :unauthorized unless Rack::Utils.secure_compare(signature, expected_signature)
@@ -30,8 +30,7 @@ module NinjaVanAPI
30
30
  # access_token will be evaluated on each request using proc
31
31
  conn.request :authorization, :Bearer, -> { access_token }
32
32
  conn.request :json
33
- conn.response :json
34
- conn.response :raise_error # Raises error on 4xx and 5xx responses
33
+ conn.response :json, content_type: "application/json"
35
34
  end
36
35
  end
37
36
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support'
4
- require 'active_support/core_ext/string'
3
+ require "active_support"
4
+ require "active_support/core_ext/string"
5
5
 
6
6
  module NinjaVanAPI
7
7
  class BaseResource
@@ -16,18 +16,21 @@ module NinjaVanAPI
16
16
  end
17
17
 
18
18
  def post_request(url, body:, headers: {})
19
- handle_response client.connection.post(url, parse_body(body), headers)
19
+ handle_response client.connection.post(url, body, headers)
20
20
  end
21
21
 
22
22
  def put_request(url, body:, headers: {})
23
- handle_response client.connection.put(url, parse_body(body), headers)
23
+ handle_response client.connection.put(url, body, headers)
24
24
  end
25
25
 
26
26
  def delete_request(url, body: {}, headers: {})
27
- response = client.connection.delete(url) do |request|
28
- request.body = parse_body(body)
29
- request.headers = request.headers.merge(headers)
30
- end
27
+ response =
28
+ client
29
+ .connection
30
+ .delete(url) do |request|
31
+ request.body = body
32
+ request.headers = request.headers.merge(headers)
33
+ end
31
34
 
32
35
  handle_response response
33
36
  end
@@ -66,27 +69,16 @@ module NinjaVanAPI
66
69
  end
67
70
 
68
71
  def retry_request(env, retry_count)
69
- request = client.connection.build_request(env.method.downcase) do |req|
70
- req.url env.url.to_s
71
- req.body = env.request_body
72
- req.headers = env.request_headers
73
- end
72
+ request =
73
+ client
74
+ .connection
75
+ .build_request(env.method.downcase) do |req|
76
+ req.url env.url.to_s
77
+ req.body = env.request_body
78
+ req.headers = env.request_headers
79
+ end
74
80
 
75
81
  handle_response(request.run, retry_count)
76
82
  end
77
-
78
- def parse_body(params)
79
- if params.is_a?(Array)
80
- params.map { |value| parse_body(value) }
81
- elsif params.is_a?(Hash)
82
- params.deep_transform_keys { |key| key.to_s.underscore }
83
- else
84
- params
85
- end
86
- end
87
-
88
- def parse_response(response)
89
- response.body.deep_transform_keys { |key| key.to_s.underscore }
90
- end
91
83
  end
92
84
  end
@@ -3,13 +3,13 @@
3
3
  module NinjaVanAPI
4
4
  class OrderResource < BaseResource
5
5
  def create(params = {})
6
- response = post_request('/4.2/orders', body: params)
7
- Order.new(parse_response(response))
6
+ response = post_request("/4.2/orders", body: params)
7
+ Order.new(response.body)
8
8
  end
9
9
 
10
10
  def cancel(tracking_number)
11
11
  response = delete_request("/2.2/orders/#{tracking_number}")
12
- Order.new(parse_response(response))
12
+ Order.new(response.body)
13
13
  end
14
14
  end
15
15
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NinjaVanAPI
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/ninja_van_api.rb CHANGED
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'ninja_van_api/version'
3
+ require_relative "ninja_van_api/version"
4
4
 
5
5
  module NinjaVanAPI
6
6
  # Objects
7
- autoload :Base, 'ninja_van_api/objects/base'
8
- autoload :Order, 'ninja_van_api/objects/order'
7
+ autoload :Base, "ninja_van_api/objects/base"
8
+ autoload :Order, "ninja_van_api/objects/order"
9
9
 
10
10
  # Resources
11
- autoload :BaseResource, 'ninja_van_api/resources/base_resource'
12
- autoload :OrderResource, 'ninja_van_api/resources/order_resource'
11
+ autoload :BaseResource, "ninja_van_api/resources/base_resource"
12
+ autoload :OrderResource, "ninja_van_api/resources/order_resource"
13
13
 
14
14
  # Core components
15
- autoload :Client, 'ninja_van_api/client'
16
- autoload :Error, 'ninja_van_api/error'
17
- autoload :UnsupportedCountryCodeError, 'ninja_van_api/error'
18
- autoload :AuthenticationError, 'ninja_van_api/error'
15
+ autoload :Client, "ninja_van_api/client"
16
+ autoload :Error, "ninja_van_api/error"
17
+ autoload :UnsupportedCountryCodeError, "ninja_van_api/error"
18
+ autoload :AuthenticationError, "ninja_van_api/error"
19
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ninja_van_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jane Trang Mai Nguyen
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description:
112
126
  email:
113
127
  - jane.trangm@gmail.com
@@ -127,7 +141,6 @@ files:
127
141
  - lib/ninja_van_api.rb
128
142
  - lib/ninja_van_api/client.rb
129
143
  - lib/ninja_van_api/configuration.rb
130
- - lib/ninja_van_api/engine.rb
131
144
  - lib/ninja_van_api/error.rb
132
145
  - lib/ninja_van_api/objects/base.rb
133
146
  - lib/ninja_van_api/objects/order.rb
@@ -1,14 +0,0 @@
1
- require 'rails/engine'
2
-
3
- module NinjaVanAPI
4
- class Engine < ::Rails::Engine
5
- isolate_namespace NinjaVanAPI
6
-
7
-
8
- config.generators do |g|
9
- g.test_framework :rspec
10
- g.assets false
11
- g.helper false
12
- end
13
- end
14
- end