upland_mobile_commons_rest 0.3.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
2
  SHA256:
3
- metadata.gz: 6af9508f63531c934fab5b8d4129d5132609bf316e846cc7dedc02e255b8f809
4
- data.tar.gz: 36186a816bdcb8841f48d2f5f9af4c484c0c516af6529b4c255bbac42101b0ea
3
+ metadata.gz: 64826a63e52f8acfb89b11bffe980ecf792d85d46e1411d9b64c32bbfb370ebe
4
+ data.tar.gz: 1531851674b67567bb8dc9bbb07d835b223e0bf947e7dc326dcc60c5300f1b44
5
5
  SHA512:
6
- metadata.gz: 74ac3b2e39fd5e888c4d0b66097dfab977306a23b353a667a9eb5d51df74ac4945542cfd35ea3e951a928dfa45382ab4e280e18e0257bd92cf5d0c19e4bdb270
7
- data.tar.gz: 0037b025610ce66dbdb592e8e4b8010085d1c2fc30b9ff0ee3c0cc96b8af00771e04fc5fe0f222dfff756a2061e4eb126eb635238eef967c5c95f67a4f79256b
6
+ metadata.gz: f0b51a4a4a404ac3cc3b7652039adbd3d58420c15bd60844db1bd5869558913db700b1dc68e632ad4e2d2e3ceeb282ca1acaf2e457ee1015175565ea871d44e1
7
+ data.tar.gz: 4b60067ac93f25cb21446d26d9dcd4bb170edd9548f9cb07dcc4d60e6bd122e3fae109bcd41dd9b7c7367da1d93259bf666eecc776740184690cae2b16cc3b0a
@@ -6,9 +6,9 @@ jobs:
6
6
  runs-on: ubuntu-latest
7
7
  steps:
8
8
  - uses: actions/checkout@v2
9
- - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
9
+ - uses: ruby/setup-ruby@v1
10
10
  with:
11
- ruby-version: 2.7
11
+ ruby-version: 3.4
12
12
  bundler-cache: true
13
13
  - run: bundle install
14
14
  - run: bundle exec rspec
@@ -16,9 +16,9 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  steps:
18
18
  - uses: actions/checkout@v2
19
- - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
19
+ - uses: ruby/setup-ruby@v1
20
20
  with:
21
- ruby-version: 2.7
21
+ ruby-version: 3.4
22
22
  bundler-cache: true
23
23
  - run: bundle install
24
24
  - run: bundle exec rubocop
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.4
1
+ 3.4.5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -21,21 +21,26 @@ module UplandMobileCommonsRest
21
21
 
22
22
  class BadGatewayError < NetworkError; end
23
23
  class GatewayTimeoutError < NetworkError; end
24
+ class UnauthorizedError < NetworkError; end
24
25
 
25
26
  # This middleware runs *before* XML parsing, so we can include the raw response body in the exception.
26
27
  class HttpErrorMiddleware < Faraday::Response::Middleware
27
28
  def on_complete(response)
28
29
  status_code = response[:status].to_i
29
30
 
30
- # Raise an exception for 5xx errors.
31
- # Q: Shouldn't we also raise for 4xx errors?
31
+ # Raise an exception for 401 and 5xx errors.
32
+ # Q: Shouldn't we also raise for the remaining 4xx errors?
32
33
  # A: We let TypedErrorMiddleware handle those, in case they have useful info.
33
34
  case status_code
35
+ when 401
36
+ raise UnauthorizedError.new(response)
34
37
  when 502
35
38
  raise BadGatewayError.new(response)
36
39
  when 503
37
40
  if /This website is under heavy load/.match?(response.body)
38
41
  raise HeavyLoadError, response.body
42
+ elsif /Site Maintenance/.match?(response.body)
43
+ raise SiteMaintenanceError, response.body
39
44
  else
40
45
  raise UnknownError, response.body
41
46
  end
@@ -55,6 +60,8 @@ module UplandMobileCommonsRest
55
60
 
56
61
  class HeavyLoadError < MobileCommonsError; end
57
62
 
63
+ class SiteMaintenanceError < MobileCommonsError; end
64
+
58
65
  class UnknownError < MobileCommonsError; end
59
66
 
60
67
  class InvalidCampaignId < MobileCommonsError; end
data/spec/client_spec.rb CHANGED
@@ -82,6 +82,20 @@ describe UplandMobileCommonsRest::Client do
82
82
  include_examples 'error code parsing'
83
83
  end
84
84
 
85
+ context '401 status response' do
86
+ let(:response_status) { 401 }
87
+ let(:response_body) { '<html><head><title>401 Unauthorized Error</title></head><body><center><h1>401 Unauthorized Error</h1></center></body></html>' }
88
+
89
+ it 'should raise an UnauthorizedError' do
90
+ expect do
91
+ subject.post_request('do_something', request_params)
92
+ end.to raise_error(UplandMobileCommonsRest::UnauthorizedError) do |error|
93
+ expect(error.body).to eq response_body
94
+ expect(error.to_s).to include(response_body)
95
+ end
96
+ end
97
+ end
98
+
85
99
  context '502 status response' do
86
100
  let(:response_status) { 502 }
87
101
  let(:response_body) { '<html><head><title>502 Bad Gateway</title></head><body><center><h1>502 Bad Gateway</h1></center></body></html>' }
@@ -119,6 +133,18 @@ describe UplandMobileCommonsRest::Client do
119
133
  end
120
134
  end
121
135
  end
136
+
137
+ context 'with Site Maintenance message' do
138
+ let(:response_body) { "<title>Site Maintenance</title><p>Sorry for the inconvenience but we're performing some maintenance at the moment. If you need to you can always <a href=\"mailto:mc_support@uplandsoftware.com\">contact us</a>, otherwise we'll be back online shortly!</p>" }
139
+
140
+ it 'should raise a SiteMaintenanceError' do
141
+ expect do
142
+ subject.post_request('do_something', request_params)
143
+ end.to raise_error(UplandMobileCommonsRest::SiteMaintenanceError) do |error|
144
+ expect(error.to_s).to include(response_body)
145
+ end
146
+ end
147
+ end
122
148
  end
123
149
 
124
150
  context '504 status response' do
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: upland_mobile_commons_rest 0.3.0 ruby lib
5
+ # stub: upland_mobile_commons_rest 0.4.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "upland_mobile_commons_rest".freeze
9
- s.version = "0.3.0"
9
+ s.version = "0.4.0".freeze
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Kathy Lu".freeze, "Diego Marcet".freeze, "Grey Moore".freeze, "Nathan Woodhull".freeze]
14
- s.date = "2022-07-05"
14
+ s.date = "1980-01-02"
15
15
  s.description = "A simple ruby API client gem for the Upland Mobile Commons REST API".freeze
16
16
  s.email = "team@controlshiftlabs.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -57,37 +57,21 @@ Gem::Specification.new do |s|
57
57
  ]
58
58
  s.homepage = "http://github.com/controlshift/upland_mobile_commons_rest".freeze
59
59
  s.licenses = ["MIT".freeze]
60
- s.rubygems_version = "3.1.6".freeze
60
+ s.rubygems_version = "3.6.9".freeze
61
61
  s.summary = "API client gem for Upland Mobile Commons".freeze
62
62
 
63
- if s.respond_to? :specification_version then
64
- s.specification_version = 4
65
- end
63
+ s.specification_version = 4
66
64
 
67
- if s.respond_to? :add_runtime_dependency then
68
- s.add_runtime_dependency(%q<vertebrae>.freeze, [">= 0"])
69
- s.add_development_dependency(%q<bundler>.freeze, ["> 2.0"])
70
- s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
71
- s.add_development_dependency(%q<dotenv>.freeze, [">= 0"])
72
- s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
73
- s.add_development_dependency(%q<rdoc>.freeze, ["> 3.12"])
74
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
75
- s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
76
- s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
77
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
78
- s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
79
- else
80
- s.add_dependency(%q<vertebrae>.freeze, [">= 0"])
81
- s.add_dependency(%q<bundler>.freeze, ["> 2.0"])
82
- s.add_dependency(%q<byebug>.freeze, [">= 0"])
83
- s.add_dependency(%q<dotenv>.freeze, [">= 0"])
84
- s.add_dependency(%q<juwelier>.freeze, [">= 0"])
85
- s.add_dependency(%q<rdoc>.freeze, ["> 3.12"])
86
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
87
- s.add_dependency(%q<rubocop>.freeze, [">= 0"])
88
- s.add_dependency(%q<shoulda>.freeze, [">= 0"])
89
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
90
- s.add_dependency(%q<webmock>.freeze, [">= 0"])
91
- end
65
+ s.add_runtime_dependency(%q<vertebrae>.freeze, [">= 0".freeze])
66
+ s.add_development_dependency(%q<bundler>.freeze, ["> 2.0".freeze])
67
+ s.add_development_dependency(%q<byebug>.freeze, [">= 0".freeze])
68
+ s.add_development_dependency(%q<dotenv>.freeze, [">= 0".freeze])
69
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0".freeze])
70
+ s.add_development_dependency(%q<rdoc>.freeze, ["> 3.12".freeze])
71
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
72
+ s.add_development_dependency(%q<rubocop>.freeze, [">= 0".freeze])
73
+ s.add_development_dependency(%q<shoulda>.freeze, [">= 0".freeze])
74
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
75
+ s.add_development_dependency(%q<webmock>.freeze, [">= 0".freeze])
92
76
  end
93
77
 
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upland_mobile_commons_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kathy Lu
8
8
  - Diego Marcet
9
9
  - Grey Moore
10
10
  - Nathan Woodhull
11
- autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2022-07-05 00:00:00.000000000 Z
13
+ date: 1980-01-02 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: vertebrae
@@ -214,7 +213,6 @@ homepage: http://github.com/controlshift/upland_mobile_commons_rest
214
213
  licenses:
215
214
  - MIT
216
215
  metadata: {}
217
- post_install_message:
218
216
  rdoc_options: []
219
217
  require_paths:
220
218
  - lib
@@ -229,8 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
227
  - !ruby/object:Gem::Version
230
228
  version: '0'
231
229
  requirements: []
232
- rubygems_version: 3.1.6
233
- signing_key:
230
+ rubygems_version: 3.6.9
234
231
  specification_version: 4
235
232
  summary: API client gem for Upland Mobile Commons
236
233
  test_files: []