nationbuilder-rb 1.4.3 → 1.5.0

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
  SHA1:
3
- metadata.gz: cf96a097d7dc9537d878eb7126432734976413ab
4
- data.tar.gz: fe1ea5df69c91cfac7413fb5d79c2335aaec8394
3
+ metadata.gz: c5dbf155a35ce3dc4e6e6a589a2e21ee3cc72c8a
4
+ data.tar.gz: fa021eae289bd54ce766f9830c8209d9945fbf86
5
5
  SHA512:
6
- metadata.gz: 11fc1a4ea5b90e1975064f71d10ecbf0b5ca97bac3a49fe18a08bdfac1e3e403d834efaf105e4af775d457e9cc35dd5fc05a908a7684b15ab1e7b2543c264a77
7
- data.tar.gz: 250a305f388d469a4186005a5aec3e5a602598cedb8831a53264fef7401f2a4f7e183598e633b16bddf6429c4415d0ba8f12ceed1b2c79294458804c68693484
6
+ metadata.gz: 2c52251b51f1f8e525d18bfd7bf3875a480a525a32176441c6770bbe300ac5e532aa5d84aecb0cdacb2dde1f6aca278482f74a99c797b8877183e985e9d7f7df
7
+ data.tar.gz: 5391541f46bc04bad1e0e7eab1332094b52c917f3d2b7c4d30a4bca22aca0591b8c770e9266c52fa03e3445e92e9c2c48a7165a9ccb3189ec292dcb9a4e0de33
@@ -1,7 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
3
  - 2.1.0
6
4
  - 2.2.5
7
5
  - 2.3.1
@@ -1,3 +1,6 @@
1
+ # 1.5.0
2
+ - [#31] Allow for a user provided HTTPClient
3
+
1
4
  # 1.4.3
2
5
  - [#34] Fix `Content-Type` header check
3
6
 
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'httpclient', '~> 2.7'
4
4
 
5
5
  group :development do
6
- gem 'jeweler', '~> 2.0'
6
+ gem 'rake', '~> 10.4'
7
7
  gem 'rspec', '~> 3.2'
8
8
  gem 'simplecov', '~> 0.8'
9
9
  gem 'vcr', '~> 2.9'
@@ -2,54 +2,13 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.3.7)
5
- builder (3.2.2)
6
5
  crack (0.4.2)
7
6
  safe_yaml (~> 1.0.0)
8
- descendants_tracker (0.0.4)
9
- thread_safe (~> 0.3, >= 0.3.1)
10
7
  diff-lcs (1.2.5)
11
8
  docile (1.1.5)
12
- faraday (0.9.1)
13
- multipart-post (>= 1.2, < 3)
14
- git (1.2.9.1)
15
- github_api (0.12.3)
16
- addressable (~> 2.3)
17
- descendants_tracker (~> 0.0.4)
18
- faraday (~> 0.8, < 0.10)
19
- hashie (>= 3.3)
20
- multi_json (>= 1.7.5, < 2.0)
21
- nokogiri (~> 1.6.3)
22
- oauth2
23
- hashie (3.4.0)
24
- highline (1.6.21)
25
9
  httpclient (2.7.0.1)
26
- jeweler (2.0.1)
27
- builder
28
- bundler (>= 1.0)
29
- git (>= 1.2.5)
30
- github_api
31
- highline (>= 1.6.15)
32
- nokogiri (>= 1.5.10)
33
- rake
34
- rdoc
35
- json (1.8.2)
36
- jwt (1.2.1)
37
- mini_portile2 (2.0.0)
38
10
  multi_json (1.10.1)
39
- multi_xml (0.5.5)
40
- multipart-post (2.0.0)
41
- nokogiri (1.6.7.2)
42
- mini_portile2 (~> 2.0.0.rc2)
43
- oauth2 (1.0.0)
44
- faraday (>= 0.8, < 0.10)
45
- jwt (~> 1.0)
46
- multi_json (~> 1.3)
47
- multi_xml (~> 0.5)
48
- rack (~> 1.2)
49
- rack (1.6.4)
50
- rake (10.4.2)
51
- rdoc (4.2.0)
52
- json (~> 1.4)
11
+ rake (10.5.0)
53
12
  rspec (3.2.0)
54
13
  rspec-core (~> 3.2.0)
55
14
  rspec-expectations (~> 3.2.0)
@@ -69,7 +28,6 @@ GEM
69
28
  multi_json (~> 1.0)
70
29
  simplecov-html (~> 0.8.0)
71
30
  simplecov-html (0.8.0)
72
- thread_safe (0.3.4)
73
31
  vcr (2.9.3)
74
32
  webmock (1.20.4)
75
33
  addressable (>= 2.3.6)
@@ -80,11 +38,11 @@ PLATFORMS
80
38
 
81
39
  DEPENDENCIES
82
40
  httpclient (~> 2.7)
83
- jeweler (~> 2.0)
41
+ rake (~> 10.4)
84
42
  rspec (~> 3.2)
85
43
  simplecov (~> 0.8)
86
44
  vcr (~> 2.9)
87
45
  webmock (~> 1.18)
88
46
 
89
47
  BUNDLED WITH
90
- 1.11.2
48
+ 1.13.6
data/README.md CHANGED
@@ -123,6 +123,15 @@ Endpoint: basic_pages
123
123
  ...
124
124
  ```
125
125
 
126
+ ## Modifying the underlying HTTPClient
127
+
128
+ The `NationBuilder::Client` object can use a provided [HTTPClient](http://www.rubydoc.info/gems/httpclient/frames) object if you need some customizations, such as to enable logging, change TLS settings, or add a proxy. For example to force a proxy for all traffic:
129
+
130
+ ```Ruby
131
+ httpclient = HTTPClient.new('http://myproxy:8080')
132
+ client = NationBuilder::Client.new(nation_builder_slug, nation_builder_auth_token, retries: 8, http_client: httpclient)
133
+ ```
134
+
126
135
  ## Development
127
136
 
128
137
  To update the API specification that powers this client, first make
data/Rakefile CHANGED
@@ -1,19 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require 'jeweler'
4
-
5
- Jeweler::Tasks.new do |gem|
6
- gem.name = 'nationbuilder-rb'
7
- gem.homepage = 'http://github.com/nationbuilder/nationbuilder-rb'
8
- gem.license = 'MIT'
9
- gem.summary = 'A Ruby client to the NationBuilder API'
10
- gem.description = 'A Ruby client to the NationBuilder API'
11
- gem.email = 'schmitt@nationbuilder.com'
12
- gem.authors = ['David Huie', 'Alexandre Schmitt']
13
- end
14
-
15
- Jeweler::RubygemsDotOrgTasks.new
16
-
17
3
  require 'rspec/core'
18
4
  require 'rspec/core/rake_task'
19
5
 
@@ -6,6 +6,7 @@ require 'uri'
6
6
 
7
7
  module NationBuilder; end
8
8
 
9
+ require 'nationbuilder/version'
9
10
  require 'nationbuilder/client'
10
11
  require 'nationbuilder/endpoint'
11
12
  require 'nationbuilder/method'
@@ -6,6 +6,7 @@ class NationBuilder::Client
6
6
  @name_to_endpoint = {}
7
7
  @base_url = opts[:base_url] || 'https://:nation_name.nationbuilder.com'
8
8
  @retries = opts[:retries] || 8
9
+ @http_client = opts[:http_client] || HTTPClient.new
9
10
 
10
11
  if @retries < 0
11
12
  raise 'Retries must be at least zero'
@@ -81,7 +82,7 @@ class NationBuilder::Client
81
82
 
82
83
  (@retries + 1).times do |i|
83
84
  begin
84
- raw_response = HTTPClient.send(method, url, request_args)
85
+ raw_response = @http_client.send(method, url, request_args)
85
86
  parsed_response = parse_response_body(raw_response)
86
87
  rescue NationBuilder::RateLimitedError => e
87
88
  exception_to_reraise = e
@@ -0,0 +1,5 @@
1
+ module NationBuilder
2
+
3
+ VERSION = '1.5.0'.freeze
4
+
5
+ end
@@ -1,17 +1,13 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: nationbuilder-rb 1.4.2 ruby lib
1
+ require './lib/nationbuilder/version'
6
2
 
7
3
  Gem::Specification.new do |s|
8
4
  s.name = "nationbuilder-rb"
9
- s.version = "1.4.3"
5
+ s.version = NationBuilder::VERSION
10
6
 
11
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
8
  s.require_paths = ["lib"]
13
9
  s.authors = ["David Huie", "Alexandre Schmitt"]
14
- s.date = "2016-11-28"
10
+ s.date = "2016-12-06"
15
11
  s.description = "A Ruby client to the NationBuilder API"
16
12
  s.email = "schmitt@nationbuilder.com"
17
13
  s.executables = ["nbdoc"]
@@ -31,7 +27,6 @@ Gem::Specification.new do |s|
31
27
  "LICENSE.txt",
32
28
  "README.md",
33
29
  "Rakefile",
34
- "VERSION",
35
30
  "bin/nbdoc",
36
31
  "lib/api_spec/.ruby-gemset",
37
32
  "lib/api_spec/.ruby-version",
@@ -73,6 +68,7 @@ Gem::Specification.new do |s|
73
68
  "lib/nationbuilder/parameter.rb",
74
69
  "lib/nationbuilder/spec_parser.rb",
75
70
  "lib/nationbuilder/url.rb",
71
+ "lib/nationbuilder/version.rb",
76
72
  "nationbuilder-rb.gemspec",
77
73
  "spec/fixtures/delete.yml",
78
74
  "spec/fixtures/paginated_get_page2.yml",
@@ -95,14 +91,14 @@ Gem::Specification.new do |s|
95
91
 
96
92
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
97
93
  s.add_runtime_dependency(%q<httpclient>, ["~> 2.7"])
98
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
94
+ s.add_development_dependency(%q<rake>, ["~> 10.4"])
99
95
  s.add_development_dependency(%q<rspec>, ["~> 3.2"])
100
96
  s.add_development_dependency(%q<simplecov>, ["~> 0.8"])
101
97
  s.add_development_dependency(%q<vcr>, ["~> 2.9"])
102
98
  s.add_development_dependency(%q<webmock>, ["~> 1.18"])
103
99
  else
104
100
  s.add_dependency(%q<httpclient>, ["~> 2.7"])
105
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
101
+ s.add_dependency(%q<rake>, ["~> 10.4"])
106
102
  s.add_dependency(%q<rspec>, ["~> 3.2"])
107
103
  s.add_dependency(%q<simplecov>, ["~> 0.8"])
108
104
  s.add_dependency(%q<vcr>, ["~> 2.9"])
@@ -110,7 +106,7 @@ Gem::Specification.new do |s|
110
106
  end
111
107
  else
112
108
  s.add_dependency(%q<httpclient>, ["~> 2.7"])
113
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
109
+ s.add_dependency(%q<rake>, ["~> 10.4"])
114
110
  s.add_dependency(%q<rspec>, ["~> 3.2"])
115
111
  s.add_dependency(%q<simplecov>, ["~> 0.8"])
116
112
  s.add_dependency(%q<vcr>, ["~> 2.9"])
@@ -9,6 +9,18 @@ describe NationBuilder::Client do
9
9
  )
10
10
  end
11
11
 
12
+ describe '#initialize' do
13
+ describe 'with a provided httpclient' do
14
+ let(:httpclient) { double('HTTPClient') }
15
+
16
+ subject { described_class.new('slug', 'token', http_client: httpclient) }
17
+
18
+ it 'uses the provided client instead of a new one' do
19
+ expect(subject.instance_variable_get(:@http_client)).to be(httpclient)
20
+ end
21
+ end
22
+ end
23
+
12
24
  describe '#endpoints' do
13
25
 
14
26
  it 'should contain all defined endpoints' do
@@ -144,16 +156,22 @@ describe NationBuilder::Client do
144
156
  end
145
157
 
146
158
  describe '#perform_request_with_retries' do
147
- it 'should raise non-rate limiting execeptions' do
148
- expect(HTTPClient).to receive(:send)
159
+ let(:httpclient) { double('HTTPClient') }
160
+
161
+ before do
162
+ allow(HTTPClient).to receive(:new).and_return(httpclient)
163
+ end
164
+
165
+ it 'should reraise non-rate limiting execeptions' do
166
+ expect(httpclient).to receive(:send)
149
167
  expect(client).to receive(:parse_response_body) { raise StandardError.new('boom') }
150
168
  expect do
151
169
  client.perform_request_with_retries(nil, nil, nil)
152
- end.to raise_error
170
+ end.to raise_error(StandardError)
153
171
  end
154
172
 
155
173
  it 'should return a response if the rate limit is eventually dropped' do
156
- expect(HTTPClient).to receive(:send).twice
174
+ expect(httpclient).to receive(:send).twice
157
175
  expect(Kernel).to receive(:sleep)
158
176
 
159
177
  allow(client).to receive(:parse_response_body) do
@@ -174,7 +192,7 @@ describe NationBuilder::Client do
174
192
  end
175
193
 
176
194
  it 'on the last retry, it should reraise the rate limiting exception ' do
177
- expect(HTTPClient).to receive(:send).twice
195
+ expect(httpclient).to receive(:send).twice
178
196
  expect(Kernel).to receive(:sleep).twice
179
197
 
180
198
  allow(client).to receive(:parse_response_body) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nationbuilder-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Huie
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-28 00:00:00.000000000 Z
12
+ date: 2016-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
@@ -26,19 +26,19 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '2.7'
28
28
  - !ruby/object:Gem::Dependency
29
- name: jeweler
29
+ name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: '10.4'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.0'
41
+ version: '10.4'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -115,7 +115,6 @@ files:
115
115
  - LICENSE.txt
116
116
  - README.md
117
117
  - Rakefile
118
- - VERSION
119
118
  - bin/nbdoc
120
119
  - lib/api_spec/.ruby-gemset
121
120
  - lib/api_spec/.ruby-version
@@ -157,6 +156,7 @@ files:
157
156
  - lib/nationbuilder/parameter.rb
158
157
  - lib/nationbuilder/spec_parser.rb
159
158
  - lib/nationbuilder/url.rb
159
+ - lib/nationbuilder/version.rb
160
160
  - nationbuilder-rb.gemspec
161
161
  - spec/fixtures/delete.yml
162
162
  - spec/fixtures/paginated_get_page2.yml
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  version: '0'
189
189
  requirements: []
190
190
  rubyforge_project:
191
- rubygems_version: 2.4.8
191
+ rubygems_version: 2.5.2
192
192
  signing_key:
193
193
  specification_version: 4
194
194
  summary: A Ruby client to the NationBuilder API
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.4.3