nation_builder 0.0.1 → 0.0.3

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: cccb7eb1c3d1dc53effa526e296fb742c9dc01a3
4
- data.tar.gz: 3f277fbcb6b8a99dfbbb13a66bb860bb5ef4efc3
3
+ metadata.gz: a690f247d652e6ed9c0e73f98f67b7798c26089e
4
+ data.tar.gz: 4ce029e2e0c9b06ec46421e0e5aaf2054979d77d
5
5
  SHA512:
6
- metadata.gz: 7a361ffd70ef869f8b23cfd42b063d1554ad43d145245e3f0e036060b3ddc1b18b7562eb048e29a492c6bb0220e6c78e94b796b66cca6cacef3d4982f77ec791
7
- data.tar.gz: e3c3cc516ccd0e66e783175ab2fbf156ccee4122d0a807e68f4656edaa685cbcacc2725949a42f5b3c7eb894ca5d8aa5c5575afd3a063d00983b7386d2e1f844
6
+ metadata.gz: 2804a14221e6ac4531845e88702679a85990ab99657f1b4a52fa82f1c1f3e76bda281fb673a03e7081825a0761c8a10b1320dd793963d00904fe49a64b1b5419
7
+ data.tar.gz: 1de559e31f2125e456b656b828b21edd6e08cc02a575cbf96e922e9ca03e8df1f30e3d83e978bddd97000c996ef5618a174d85c0fa889cf7cead387587680e63
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
data/Gemfile CHANGED
@@ -1,8 +1,10 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'oauth2'
3
+ # NationBuilder puts error messages in a different location.
4
+ gem 'oauth2', git: 'https://github.com/controlshift/oauth2.git'
4
5
 
5
6
  group :development do
7
+ gem 'webmock'
6
8
  gem 'pry'
7
9
  gem 'pry-debugger'
8
10
  gem "rspec"
data/Gemfile.lock CHANGED
@@ -1,3 +1,14 @@
1
+ GIT
2
+ remote: https://github.com/controlshift/oauth2.git
3
+ revision: 7e60e15878e503f80c8708f5c2cca5d17664fc61
4
+ specs:
5
+ oauth2 (0.9.2)
6
+ faraday (~> 0.8)
7
+ jwt (~> 0.1.4)
8
+ multi_json (~> 1.0)
9
+ multi_xml (~> 0.5)
10
+ rack (~> 1.2)
11
+
1
12
  GEM
2
13
  remote: http://rubygems.org/
3
14
  specs:
@@ -5,6 +16,8 @@ GEM
5
16
  builder (3.2.2)
6
17
  coderay (1.0.9)
7
18
  columnize (0.3.6)
19
+ crack (0.4.1)
20
+ safe_yaml (~> 0.9.0)
8
21
  debugger (1.6.1)
9
22
  columnize (>= 0.3.1)
10
23
  debugger-linecache (~> 1.2.0)
@@ -24,7 +37,6 @@ GEM
24
37
  oauth2
25
38
  hashie (2.0.5)
26
39
  highline (1.6.19)
27
- httpauth (0.2.0)
28
40
  jeweler (1.8.7)
29
41
  builder
30
42
  bundler (~> 1.0)
@@ -42,13 +54,6 @@ GEM
42
54
  multi_xml (0.5.5)
43
55
  multipart-post (1.2.0)
44
56
  nokogiri (1.5.10)
45
- oauth2 (0.9.2)
46
- faraday (~> 0.8)
47
- httpauth (~> 0.2)
48
- jwt (~> 0.1.4)
49
- multi_json (~> 1.0)
50
- multi_xml (~> 0.5)
51
- rack (~> 1.2)
52
57
  pry (0.9.12.2)
53
58
  coderay (~> 1.0.5)
54
59
  method_source (~> 0.8)
@@ -68,7 +73,11 @@ GEM
68
73
  rspec-expectations (2.14.2)
69
74
  diff-lcs (>= 1.1.3, < 2.0)
70
75
  rspec-mocks (2.14.3)
76
+ safe_yaml (0.9.7)
71
77
  slop (3.4.6)
78
+ webmock (1.13.0)
79
+ addressable (>= 2.2.7)
80
+ crack (>= 0.3.2)
72
81
 
73
82
  PLATFORMS
74
83
  ruby
@@ -76,7 +85,8 @@ PLATFORMS
76
85
  DEPENDENCIES
77
86
  bundler
78
87
  jeweler (~> 1.8.7)
79
- oauth2
88
+ oauth2!
80
89
  pry
81
90
  pry-debugger
82
91
  rspec
92
+ webmock
data/README.md CHANGED
@@ -4,17 +4,24 @@ A very simple ruby gem for interacting with NB people API.
4
4
 
5
5
  http://nationbuilder.com/api_documentation
6
6
 
7
- ## Usage
7
+ ### Usage
8
8
 
9
9
  ```
10
10
  require 'nation_builder'
11
11
  client = NationBuilder.new(hostname: 'whatever.nationbuilder.com', client_id: 'id', client_secret: 'secret', username: 'you@nation.com', password: 'pass')
12
+ client.people.create('person' => {'first_name' => 'George', 'last_name' => 'Washington', 'email' => 'george@washington.com'})
13
+ client.people.match('email' => 'george@washington.com) # either a person hash or nil.
12
14
  client.people.list # returns people in nation
13
-
14
15
  ```
15
16
 
16
- ## Copyright
17
+ ### Contributing
18
+
19
+ The current gem is minimalist -- but we'd welcome pull requests with additional functionality!
20
+
21
+ [![Build Status](https://travis-ci.org/controlshift/nation_builder.png?branch=master)](https://travis-ci.org/controlshift/nation_builder)
22
+
23
+ ### Copyright
17
24
 
18
- Copyright (c) 2013 Nathan Woodhull. See LICENSE.txt for
25
+ Copyright (c) 2013 ControlShift Ltd. See LICENSE.txt for
19
26
  further details.
20
27
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.3
@@ -6,17 +6,37 @@ module NationBuilder
6
6
  args.each do |key, value|
7
7
  self.send("#{key}=".intern, value)
8
8
  end
9
- client = OAuth2::Client.new(client_id, client_secret, :site => "https://#{hostname}", authorize_url: "https://#{hostname}/oauth/authorize", token_url: "https://#{hostname}/oauth/token" )
10
- self.token = client.password.get_token(username, password)
9
+ self.token = setup_client
11
10
  end
12
11
 
13
-
14
12
  def people
15
13
  NationBuilder::People.new(self)
16
14
  end
17
15
 
18
- def get(path)
19
- self.token.get "https://#{hostname}/#{path}"
16
+ def get(path, opts={})
17
+ self.token.get "#{base_uri}#{path}", opts.merge(headers: headers)
18
+ end
19
+
20
+ def post(path, opts={})
21
+ self.token.post "#{base_uri}#{path}", opts.merge(headers: headers)
22
+ end
23
+
24
+ private
25
+
26
+ def setup_client
27
+ client = OAuth2::Client.new(client_id, client_secret, :site => "https://#{hostname}", authorize_url: "https://#{hostname}/oauth/authorize", token_url: "https://#{hostname}/oauth/token" )
28
+ client.password.get_token(username, password)
29
+ end
30
+
31
+ def headers
32
+ {
33
+ 'Content-Type' => 'application/json',
34
+ 'Accept' => 'application/json'
35
+ }
36
+ end
37
+
38
+ def base_uri
39
+ "https://#{hostname}/"
20
40
  end
21
41
  end
22
42
  end
@@ -6,8 +6,25 @@ module NationBuilder
6
6
  self.client = client
7
7
  end
8
8
 
9
- def list()
9
+ def match(params)
10
+ begin
11
+ JSON.parse(client.get('/api/v1/people/match', params: params).response.env[:body])
12
+ rescue OAuth2::Error => e
13
+ if e.code == 'no_matches'
14
+ return nil
15
+ else
16
+ raise e
17
+ end
18
+ end
19
+ end
20
+
21
+ def list
10
22
  JSON.parse(client.get('/api/v1/people').response.env[:body])
11
23
  end
24
+
25
+ def create params
26
+ body = JSON.generate(params)
27
+ JSON.parse(client.post('/api/v1/people', body: body).response.env[:body])
28
+ end
12
29
  end
13
30
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "nation_builder"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Nathan Woodhull", "Dan Schneiderman"]
12
- s.date = "2013-09-16"
12
+ s.date = "2013-09-17"
13
13
  s.description = "Ruby wrapper for NationBuilder API"
14
14
  s.email = "nathan@controlshiftlabs.com"
15
15
  s.extra_rdoc_files = [
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  ".rspec",
22
22
  ".ruby-gemset",
23
23
  ".ruby-version",
24
+ ".travis.yml",
24
25
  "Gemfile",
25
26
  "Gemfile.lock",
26
27
  "LICENSE.txt",
@@ -31,7 +32,9 @@ Gem::Specification.new do |s|
31
32
  "lib/nation_builder/client.rb",
32
33
  "lib/nation_builder/people.rb",
33
34
  "nation_builder.gemspec",
35
+ "spec/client_spec.rb",
34
36
  "spec/nation_builder_spec.rb",
37
+ "spec/people_spec.rb",
35
38
  "spec/spec_helper.rb"
36
39
  ]
37
40
  s.homepage = "http://github.com/controlshift/nation_builder"
@@ -45,6 +48,7 @@ Gem::Specification.new do |s|
45
48
 
46
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
50
  s.add_runtime_dependency(%q<oauth2>, [">= 0"])
51
+ s.add_development_dependency(%q<webmock>, [">= 0"])
48
52
  s.add_development_dependency(%q<pry>, [">= 0"])
49
53
  s.add_development_dependency(%q<pry-debugger>, [">= 0"])
50
54
  s.add_development_dependency(%q<rspec>, [">= 0"])
@@ -52,6 +56,7 @@ Gem::Specification.new do |s|
52
56
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
53
57
  else
54
58
  s.add_dependency(%q<oauth2>, [">= 0"])
59
+ s.add_dependency(%q<webmock>, [">= 0"])
55
60
  s.add_dependency(%q<pry>, [">= 0"])
56
61
  s.add_dependency(%q<pry-debugger>, [">= 0"])
57
62
  s.add_dependency(%q<rspec>, [">= 0"])
@@ -60,6 +65,7 @@ Gem::Specification.new do |s|
60
65
  end
61
66
  else
62
67
  s.add_dependency(%q<oauth2>, [">= 0"])
68
+ s.add_dependency(%q<webmock>, [">= 0"])
63
69
  s.add_dependency(%q<pry>, [">= 0"])
64
70
  s.add_dependency(%q<pry-debugger>, [">= 0"])
65
71
  s.add_dependency(%q<rspec>, [">= 0"])
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'Client' do
4
+ specify { pending 'spec client behavior'}
5
+ end
@@ -1,7 +1,10 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "NationBuilder" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
3
+ describe NationBuilder do
4
+ before(:each) do
5
+ NationBuilder::Client.any_instance.stub(:setup_client).and_return(true)
6
6
  end
7
+
8
+ specify { subject.should respond_to :people }
9
+ specify { subject.new.should be_a(NationBuilder::Client)}
7
10
  end
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'People' do
4
+ specify { pending 'spec people behavior'}
5
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,11 +2,45 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
4
  require 'nation_builder'
5
+ require 'webmock/rspec'
6
+
5
7
 
6
8
  # Requires supporting files with custom matchers and macros, etc,
7
9
  # in ./support/ and its subdirectories.
8
10
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
11
 
10
12
  RSpec.configure do |config|
11
-
13
+ config.color_enabled = true
14
+ end
15
+
16
+
17
+ RSpec.configure do |config|
18
+ config.include WebMock::API
19
+
20
+ config.before(:each) do
21
+ WebMock.reset!
22
+ end
23
+ config.after(:each) do
24
+ WebMock.reset!
25
+ end
26
+ end
27
+
28
+ def stub_get(path)
29
+ stub_nation_builder_request(:get, path)
30
+ end
31
+
32
+ def stub_post(path)
33
+ stub_nation_builder_request(:post, path)
34
+ end
35
+
36
+ def stub_nation_builder_request(method, path)
37
+ stub_request(method, "https://test.com" + path)
38
+ end
39
+
40
+ def fixture_path
41
+ File.expand_path("../fixtures", __FILE__)
42
+ end
43
+
44
+ def fixture(file)
45
+ File.new(File.join(fixture_path, '/', file))
12
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nation_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Woodhull
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-16 00:00:00.000000000 Z
12
+ date: 2013-09-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth2
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: webmock
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: pry
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +121,7 @@ files:
107
121
  - .rspec
108
122
  - .ruby-gemset
109
123
  - .ruby-version
124
+ - .travis.yml
110
125
  - Gemfile
111
126
  - Gemfile.lock
112
127
  - LICENSE.txt
@@ -117,7 +132,9 @@ files:
117
132
  - lib/nation_builder/client.rb
118
133
  - lib/nation_builder/people.rb
119
134
  - nation_builder.gemspec
135
+ - spec/client_spec.rb
120
136
  - spec/nation_builder_spec.rb
137
+ - spec/people_spec.rb
121
138
  - spec/spec_helper.rb
122
139
  homepage: http://github.com/controlshift/nation_builder
123
140
  licenses: