netprospex 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +3 -0
- data/lib/netprospex/client.rb +2 -2
- data/lib/netprospex/configuration.rb +10 -3
- data/lib/netprospex/middleware/raise_exceptions.rb +4 -1
- data/lib/netprospex/version.rb +1 -1
- data/spec/netprospex/client_spec.rb +8 -0
- data/spec/netprospex/configuration_spec.rb +13 -0
- data/spec/netprospex/middleware/raise_exceptions_spec.rb +10 -0
- data/spec/vcr_helper.rb +1 -1
- metadata +2 -2
data/.gitignore
CHANGED
data/Rakefile
CHANGED
data/lib/netprospex/client.rb
CHANGED
@@ -26,9 +26,9 @@ module NetProspex
|
|
26
26
|
def api_base
|
27
27
|
@api_base ||= case NetProspex.environment
|
28
28
|
when :production
|
29
|
-
"http://api.netprospex.com
|
29
|
+
"http://api.netprospex.com/#{NetProspex.version}"
|
30
30
|
when :sandbox
|
31
|
-
"http://api-sb.netprospex.com
|
31
|
+
"http://api-sb.netprospex.com/#{NetProspex.version}"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -1,15 +1,21 @@
|
|
1
1
|
module NetProspex
|
2
2
|
module Configuration
|
3
3
|
attr_accessor :consumer_key, :consumer_secret
|
4
|
-
attr_reader :environment
|
4
|
+
attr_reader :environment, :version
|
5
|
+
|
5
6
|
def environment=(env)
|
6
|
-
|
7
|
+
env = env.to_sym
|
8
|
+
if [:production, :sandbox].include?(env)
|
7
9
|
@environment = env
|
8
10
|
else
|
9
|
-
raise NetProspex::ConfigurationError.new("Unknown environment")
|
11
|
+
raise NetProspex::ConfigurationError.new("Unknown environment #{env}")
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
15
|
+
def version=(v)
|
16
|
+
@version = v
|
17
|
+
end
|
18
|
+
|
13
19
|
def self.extended(base)
|
14
20
|
base.reset
|
15
21
|
end
|
@@ -18,6 +24,7 @@ module NetProspex
|
|
18
24
|
self.consumer_key = nil
|
19
25
|
self.consumer_secret = nil
|
20
26
|
self.environment = :production
|
27
|
+
self.version = "1.1"
|
21
28
|
end
|
22
29
|
|
23
30
|
def configure
|
@@ -5,7 +5,8 @@ module NetProspex
|
|
5
5
|
class RaiseExceptions < Faraday::Middleware
|
6
6
|
def call(environment)
|
7
7
|
@app.call(environment).on_complete do |env|
|
8
|
-
next unless env[:body].is_a?(Hash) &&
|
8
|
+
next unless env[:body].is_a?(Hash) && env[:body][:response][:error]
|
9
|
+
error = env[:body][:response][:error]
|
9
10
|
case error[:code]
|
10
11
|
when "ACL"
|
11
12
|
raise NetProspex::AccessDenied.new(error[:message])
|
@@ -23,6 +24,8 @@ module NetProspex
|
|
23
24
|
raise NetProspex::ZeroBalanceError.new(error[:message])
|
24
25
|
when "FAULT","UNX"
|
25
26
|
raise NetProspex::ApiError.new(error[:message])
|
27
|
+
else
|
28
|
+
raise NetProspex::ApiError.new(error[:message])
|
26
29
|
end
|
27
30
|
end
|
28
31
|
end
|
data/lib/netprospex/version.rb
CHANGED
@@ -10,9 +10,17 @@ describe NetProspex::Client do
|
|
10
10
|
c.environment = :sandbox
|
11
11
|
end
|
12
12
|
end
|
13
|
+
after(:each) { NetProspex.reset }
|
13
14
|
|
14
15
|
let(:client) { NetProspex::Client.new(ENV['NETPROSPEX_USER_TOKEN'], ENV['NETPROSPEX_USER_SECRET']) }
|
15
16
|
|
17
|
+
it "builds the version into the api url" do
|
18
|
+
NetProspex.configure { |c| c.version = "9.9" }
|
19
|
+
stub = stub_request(:get, %r(api-sb\.netprospex\.com/9\.9/.*)).to_return(body: '{"response":{}}', headers: {'Content-Type' => 'application/json'})
|
20
|
+
client.get("/industries.json")
|
21
|
+
stub.should have_been_requested
|
22
|
+
end
|
23
|
+
|
16
24
|
it "makes GET requests" do
|
17
25
|
VCR.use_cassette("industries") do
|
18
26
|
client.get("/industries.json")
|
@@ -2,16 +2,24 @@ require "spec_helper"
|
|
2
2
|
require_relative "../../lib/netprospex.rb"
|
3
3
|
|
4
4
|
describe NetProspex::Configuration do
|
5
|
+
after(:each) { NetProspex.reset }
|
6
|
+
|
5
7
|
it "can be configured" do
|
6
8
|
expect {
|
7
9
|
NetProspex.configure do |config|
|
8
10
|
config.consumer_key = "foo"
|
9
11
|
config.consumer_secret = "bar"
|
10
12
|
config.environment = :sandbox
|
13
|
+
config.version = "1.1"
|
11
14
|
end
|
12
15
|
}.to_not raise_exception
|
13
16
|
end
|
14
17
|
|
18
|
+
it "stores the api version" do
|
19
|
+
NetProspex.configure { |config| config.version = "9.9" }
|
20
|
+
NetProspex.version.should == "9.9"
|
21
|
+
end
|
22
|
+
|
15
23
|
it "validates environment" do
|
16
24
|
expect {
|
17
25
|
NetProspex.configure do |config|
|
@@ -19,4 +27,9 @@ describe NetProspex::Configuration do
|
|
19
27
|
end
|
20
28
|
}.to raise_exception(NetProspex::ConfigurationError)
|
21
29
|
end
|
30
|
+
|
31
|
+
it "accepts environment as a string" do
|
32
|
+
NetProspex.configure { |config| config.environment = "sandbox" }
|
33
|
+
NetProspex.environment.should == :sandbox
|
34
|
+
end
|
22
35
|
end
|
@@ -80,4 +80,14 @@ describe NetProspex::Middleware::RaiseExceptions do
|
|
80
80
|
puts client.get('/person/list.json', organization_name: 'Pardot')
|
81
81
|
}.to raise_exception(NetProspex::ApiError)
|
82
82
|
end
|
83
|
+
|
84
|
+
it "raises ApiError for version error" do
|
85
|
+
stub_request(:get, %r(api-sb\.netprospex\.com/1\.1/person/list\.json)).to_return(
|
86
|
+
body: '{"response":{"version":"1.1","responseId":"8A3837BF-AB10-F3B4-EA19-0606207939CE","responseType":"error","request":{"startTime":"2013-09-04 09:18:21","requestType":"person_list","url":"\/1.1\/person\/list.json?firstName=Bob&lastName=Colananni&preview=1","userId":"1aebe6ed-6c79-11e2-a4df-f04da23ce7b0"},"transaction":{"accountId":"1ad39da8-6c79-11e2-a4df-f04da23ce7b0","accountStartBalance":100000,"accountEndBalance":null},"error":{"message":"invalid API version=1.1","code":"ARG"},"debug":{"requestTime":0.0185089111328}}}',
|
87
|
+
headers: {'Content-Type' => 'application/json'}
|
88
|
+
)
|
89
|
+
expect {
|
90
|
+
puts client.get('/person/list.json', organization_name: 'Pardot')
|
91
|
+
}.to raise_exception(NetProspex::ApiError)
|
92
|
+
end
|
83
93
|
end
|
data/spec/vcr_helper.rb
CHANGED
@@ -3,7 +3,7 @@ require "vcr"
|
|
3
3
|
VCR.configure do |c|
|
4
4
|
c.cassette_library_dir = "fixtures/cassettes"
|
5
5
|
c.hook_into :webmock
|
6
|
-
c.default_cassette_options = { :record => :
|
6
|
+
c.default_cassette_options = { :record => :once }
|
7
7
|
c.configure_rspec_metadata!
|
8
8
|
c.filter_sensitive_data('<NETPROSPEX_KEY>') { ENV['NETPROSPEX_KEY'] }
|
9
9
|
c.filter_sensitive_data('<NETPROSPEX_SECRET>') { ENV['NETPROSPEX_SECRET'] }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netprospex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|