shift-api-core 0.1.0 → 0.4.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
- SHA1:
3
- metadata.gz: 22e90c061afc5f050f592daba4e6aa3cd40a5e7b
4
- data.tar.gz: b230e1daa6dc660f80290c7c945799e5d0b50e1d
2
+ SHA256:
3
+ metadata.gz: '02480b0039e54bd391537d9944d2d9b2318e7026d63a46d23504671443f8c57e'
4
+ data.tar.gz: a242e65bcb3294a46b22bbba81dea3f4743d37d16d21b92403b445dd1545fe47
5
5
  SHA512:
6
- metadata.gz: 0dbd4ed6ed783184ec2794f82f8d3105ed41bf285b7e1418eed2dc9e841256f7f934247ee52a876ded667bedf14aa7f102bed6784041ad6f8c66b609a7aa4447
7
- data.tar.gz: 333d829672f168a424139bdfa700761aa73a53731dd2b8d5e006f09eeae70fba77c4421500a969b40c84564ecb356ac865cc27358fc067c7c6284f61f6b21809
6
+ metadata.gz: 78bbdd3c63a8fd364fe9da187293ebf300ed42b09aebf12770e03be491e0d61afc4b95ae630a44e2b50a92e8a38022722b87a022ac8fd471f7bf6cdfda06d7d6
7
+ data.tar.gz: fa22be8969a47f3ed231b83023e84e49c44a30936915bf413737e5a7eb973b7ec890818798ee2ba94d5239a638d4a06fb3eb936efe5323293c83b21354846a10
@@ -6,19 +6,24 @@ module Shift
6
6
  # world in case we ever migrate from it.
7
7
  module Errors
8
8
  class ApiError < StandardError
9
- attr_reader :env
10
- def initialize(env)
9
+ attr_reader :env, :original_exception
10
+
11
+ def initialize(env, original_exception)
11
12
  @env = env
13
+ @original_exception = original_exception
12
14
  end
13
15
 
14
16
  def self.from_jsonapi_client(ex)
15
- new(ex.env)
17
+ new(ex.env, ex)
16
18
  end
17
19
  end
18
20
 
19
21
  class ClientError < ApiError
20
22
  end
21
23
 
24
+ class ServiceUnavailable < ApiError
25
+ end
26
+
22
27
  class AccessDenied < ClientError
23
28
  end
24
29
 
@@ -29,10 +34,34 @@ module Shift
29
34
  end
30
35
 
31
36
  class ServerError < ApiError
37
+ # Replace message with more useful error from the API
32
38
  def message
33
- "Internal server error"
39
+ default_message = "Internal Server Error\n#{env.response.body}"
40
+
41
+ api_errors = env.response.body["errors"]
42
+ return default_message if api_errors.nil?
43
+
44
+ api_exception = api_errors[0].dig("meta", "exception")
45
+ api_exception ? api_exception : default_message
46
+ end
47
+
48
+ # Prepend API backtrace to the backtrace from the gem
49
+ def backtrace
50
+ original_backtrace = super
51
+ return nil if original_backtrace.nil?
52
+
53
+ api_errors = env.response.body["errors"]
54
+ return original_backtrace if api_errors.nil?
55
+
56
+ api_backtrace = api_errors[0].dig("meta", "backtrace")
57
+ return original_backtrace if api_backtrace.nil?
58
+
59
+ api_backtrace.map { |entry| "/<shift_api>#{entry}" }.concat(original_backtrace)
34
60
  end
35
61
  end
62
+
63
+ class InternalServerError < ServerError
64
+ end
36
65
 
37
66
  class Conflict < ServerError
38
67
  def message
@@ -1,7 +1,7 @@
1
1
  module Shift
2
2
  module Api
3
3
  module Core
4
- VERSION = "0.1.0"
4
+ VERSION = "0.4.0"
5
5
  end
6
6
  end
7
7
  end
@@ -22,10 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.14'
25
+ spec.add_development_dependency 'bundler', '~> 2.2'
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
27
27
  spec.add_development_dependency 'rspec', '~> 3.0'
28
28
  spec.add_development_dependency 'byebug'
29
29
  spec.add_development_dependency 'webmock', '~> 2.3'
30
- spec.add_runtime_dependency 'json_api_client', '~> 1.5'
30
+ spec.add_runtime_dependency 'json_api_client', '>= 1.6.0'
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shift-api-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shift Commerce Ltd
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-12 00:00:00.000000000 Z
11
+ date: 2021-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '2.2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: json_api_client
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.5'
89
+ version: 1.6.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.5'
96
+ version: 1.6.0
97
97
  description: Core gem for all shift commerce API gems
98
98
  email:
99
99
  - team@shiftcommerce.com
@@ -128,7 +128,7 @@ homepage: https://github.com/shiftcommerce
128
128
  licenses:
129
129
  - MIT
130
130
  metadata: {}
131
- post_install_message:
131
+ post_install_message:
132
132
  rdoc_options: []
133
133
  require_paths:
134
134
  - lib
@@ -143,9 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.6.10
148
- signing_key:
146
+ rubygems_version: 3.2.22
147
+ signing_key:
149
148
  specification_version: 4
150
149
  summary: Core gem for all shift commerce API gems
151
150
  test_files: []