tokyo_api 1.1.2 → 1.2.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 +4 -4
- data/VERSION +1 -1
- data/lib/tokyo_api/campact.rb +43 -0
- data/lib/tokyo_api/client.rb +4 -0
- data/lib/tokyo_api.rb +4 -3
- data/spec/campact_spec.rb +112 -0
- data/spec/fixtures/responses/campact/full_user_success +1 -0
- data/tokyo_api.gemspec +6 -3
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c13c06a403dbc3eeb297a65c97be04e9c6c4ecdc57faf3319fcaffc13a65752
|
4
|
+
data.tar.gz: b7809a0fbf2cb061a1d187727485dfa4486c8eb82e93f22fb4eca82a3d303fa3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ba8f238329548d345363e5b7819172104559e6dda78cf8fd188978562e71e0578362091f57a5129862473e61b41f619bb737694eb61f05cce72aa35156becc7
|
7
|
+
data.tar.gz: a31540d25ae73fd9758d68b8e985a37f94defeacb2e833117927b6c8778d63226fc02c90127c0aed5969e94c85439aa58b400bf859039a427210a06db6208c41
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module TokyoApi
|
2
|
+
class Campact < Base
|
3
|
+
def base_path
|
4
|
+
'campact'
|
5
|
+
end
|
6
|
+
|
7
|
+
def full_user(session_id)
|
8
|
+
client.get_request("#{normalized_base_path}full_user/#{url_escape(session_id)}").body
|
9
|
+
end
|
10
|
+
|
11
|
+
def session_status(session_id)
|
12
|
+
client.get_request("#{normalized_base_path}session_status/#{url_escape(session_id)}").body
|
13
|
+
end
|
14
|
+
|
15
|
+
def subscription_status(token)
|
16
|
+
begin
|
17
|
+
client.get_request(subscription_status_path(token)).body
|
18
|
+
rescue Vertebrae::ResponseError => e
|
19
|
+
# Status 404 is expected in these calls
|
20
|
+
if e.status_code == 404
|
21
|
+
return nil
|
22
|
+
end
|
23
|
+
|
24
|
+
raise
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def user_path(session_id, petition_id:, with_subscription_status: false, required_fields: nil)
|
29
|
+
path = "/#{normalized_base_path}user/#{url_escape(session_id)}?petition_id=#{url_escape(petition_id)}"
|
30
|
+
if with_subscription_status
|
31
|
+
path << '&with_subscription_status=true'
|
32
|
+
end
|
33
|
+
unless required_fields.nil?
|
34
|
+
path << "&#{required_fields_param(required_fields)}"
|
35
|
+
end
|
36
|
+
path
|
37
|
+
end
|
38
|
+
|
39
|
+
def subscription_status_path(token)
|
40
|
+
"/#{normalized_base_path}subscription_status/#{url_escape(token)}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/tokyo_api/client.rb
CHANGED
data/lib/tokyo_api.rb
CHANGED
@@ -2,10 +2,11 @@ require 'vertebrae'
|
|
2
2
|
require 'tokyo_api/base'
|
3
3
|
require 'tokyo_api/actionkit'
|
4
4
|
require 'tokyo_api/bluestatedigital'
|
5
|
-
require 'tokyo_api/
|
6
|
-
require 'tokyo_api/identity'
|
7
|
-
require 'tokyo_api/expire'
|
5
|
+
require 'tokyo_api/campact'
|
8
6
|
require 'tokyo_api/client'
|
7
|
+
require 'tokyo_api/expire'
|
8
|
+
require 'tokyo_api/identity'
|
9
|
+
require 'tokyo_api/krautbuster'
|
9
10
|
|
10
11
|
module TokyoApi
|
11
12
|
extend Vertebrae::Base
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe TokyoApi::Campact do
|
4
|
+
subject { TokyoApi.new(host: 'test.com') }
|
5
|
+
|
6
|
+
describe 'configuration' do
|
7
|
+
it 'should propagate the host' do
|
8
|
+
expect(subject.campact.client.connection.configuration.host).to eq 'test.com'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#full_user' do
|
13
|
+
let(:body) { fixture('responses/full_user_success') }
|
14
|
+
let(:request_path) { '/campact/full_user/123abc456' }
|
15
|
+
let(:status) { 200 }
|
16
|
+
|
17
|
+
before(:each) do
|
18
|
+
stub_get(request_path).to_return(:body => body, :status => status,
|
19
|
+
:headers => { content_type: "application/json; charset=utf-8"})
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'error' do
|
23
|
+
let(:body) { fixture('responses/full_user_error') }
|
24
|
+
|
25
|
+
it 'should return an error message' do
|
26
|
+
expect(subject.campact.full_user('123abc456')).to eq({'error' => 'Connection refused'})
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'success' do
|
31
|
+
let(:body) { fixture('responses/campact/full_user_success') }
|
32
|
+
|
33
|
+
it 'should find an organisation' do
|
34
|
+
expect(subject.campact.full_user('123abc456')).to eq({'first_name' => 'Homer', 'last_name' => 'Simpson',
|
35
|
+
'country' => 'DE', 'postal' => '12345', 'email' => 'foo@bar.com' })
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#subscription_status' do
|
41
|
+
let(:client) { double }
|
42
|
+
let(:token) { '2134567890abcdef' }
|
43
|
+
|
44
|
+
subject { TokyoApi::Campact.new(client: client) }
|
45
|
+
|
46
|
+
before :each do
|
47
|
+
expect(subject).to receive(:subscription_status_path).with(token).and_return("/campact/subscription_status?token=#{token}")
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should perform request on subscription_status_path' do
|
51
|
+
expect(client).to receive(:get_request).with("/campact/subscription_status?token=#{token}").and_return(double(body: {subscribed: true}))
|
52
|
+
|
53
|
+
subs_status = subject.subscription_status(token)
|
54
|
+
|
55
|
+
expect(subs_status).to eq({subscribed: true})
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should return nil if tokyo responds with 404' do
|
59
|
+
expect(client).to receive(:get_request).with("/campact/subscription_status?token=#{token}").and_raise(Vertebrae::ResponseError.new(404, {method: 'get', url: "/campact/subscription_status?token=#{token}", status: '404', body: 'Not Found'}))
|
60
|
+
|
61
|
+
subs_status = subject.subscription_status(token)
|
62
|
+
|
63
|
+
expect(subs_status).to be_nil
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should raise if tokyo responds with other error code' do
|
67
|
+
expect(client).to receive(:get_request).with("/campact/subscription_status?token=#{token}").and_raise(Vertebrae::ResponseError.new(500, {method: 'get', url: "/campact/subscription_status?token=#{token}", status: '500', body: 'Something bad happened'}))
|
68
|
+
|
69
|
+
expect { subject.subscription_status(token) }.to raise_error Vertebrae::ResponseError
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#user_path' do
|
74
|
+
context 'without required_fields' do
|
75
|
+
it "should return relative path to user API endpoint" do
|
76
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees')).to eq '/campact/user/123abc456?petition_id=save-the-trees'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'with required_fields' do
|
81
|
+
it "should return relative path to user API endpoint" do
|
82
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees', required_fields: [:first_name, :last_name, :email])).to eq '/campact/user/123abc456?petition_id=save-the-trees&required_fields=first_name,last_name,email'
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should url-escape field names with weird characters' do
|
86
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees', required_fields: ['email', 'fish & chips'])).to eq '/campact/user/123abc456?petition_id=save-the-trees&required_fields=email,fish+%26+chips'
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'with_subscription_status argument' do
|
91
|
+
it 'should not include query string parameter if argument is missing' do
|
92
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees')).not_to match /.+with_subscription_status=.+/
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should not include query string parameter if argument is false' do
|
96
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees', with_subscription_status: false)).not_to match /.+with_subscription_status=.+/
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should include query string parameter if argument is true' do
|
100
|
+
expect(subject.campact.user_path('123abc456', petition_id: 'save-the-trees', with_subscription_status: true)).to match /.+with_subscription_status=true.*/
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe '#subscription_status_path' do
|
106
|
+
subject { TokyoApi::Campact.new }
|
107
|
+
|
108
|
+
it 'should return correct path' do
|
109
|
+
expect(subject.subscription_status_path('abc123')).to eq '/campact/subscription_status/abc123'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"first_name":"Homer","last_name":"Simpson","country":"DE","postal":"12345","email":"foo@bar.com"}
|
data/tokyo_api.gemspec
CHANGED
@@ -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: tokyo_api 1.
|
5
|
+
# stub: tokyo_api 1.2.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "tokyo_api".freeze
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.2.0"
|
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 = ["Nathan Woodhull".freeze]
|
14
|
-
s.date = "2018-
|
14
|
+
s.date = "2018-08-31"
|
15
15
|
s.description = "Tokyo is a CRM middleware, this gem helps apps talk to it.".freeze
|
16
16
|
s.email = "nathan@controlshiftlabs.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
@@ -35,17 +35,20 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/tokyo_api/actionkit.rb",
|
36
36
|
"lib/tokyo_api/base.rb",
|
37
37
|
"lib/tokyo_api/bluestatedigital.rb",
|
38
|
+
"lib/tokyo_api/campact.rb",
|
38
39
|
"lib/tokyo_api/client.rb",
|
39
40
|
"lib/tokyo_api/expire.rb",
|
40
41
|
"lib/tokyo_api/identity.rb",
|
41
42
|
"lib/tokyo_api/krautbuster.rb",
|
42
43
|
"spec/actionkit_spec.rb",
|
43
44
|
"spec/bluestatedigital_spec.rb",
|
45
|
+
"spec/campact_spec.rb",
|
44
46
|
"spec/client_spec.rb",
|
45
47
|
"spec/expire_spec.rb",
|
46
48
|
"spec/fixtures/expire/success",
|
47
49
|
"spec/fixtures/responses/actionkit/full_user_success",
|
48
50
|
"spec/fixtures/responses/bluestatedigital/full_user_success",
|
51
|
+
"spec/fixtures/responses/campact/full_user_success",
|
49
52
|
"spec/fixtures/responses/full_user_error",
|
50
53
|
"spec/fixtures/responses/full_user_success",
|
51
54
|
"spec/fixtures/responses/identity/full_user_success",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tokyo_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Woodhull
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vertebrae
|
@@ -118,17 +118,20 @@ files:
|
|
118
118
|
- lib/tokyo_api/actionkit.rb
|
119
119
|
- lib/tokyo_api/base.rb
|
120
120
|
- lib/tokyo_api/bluestatedigital.rb
|
121
|
+
- lib/tokyo_api/campact.rb
|
121
122
|
- lib/tokyo_api/client.rb
|
122
123
|
- lib/tokyo_api/expire.rb
|
123
124
|
- lib/tokyo_api/identity.rb
|
124
125
|
- lib/tokyo_api/krautbuster.rb
|
125
126
|
- spec/actionkit_spec.rb
|
126
127
|
- spec/bluestatedigital_spec.rb
|
128
|
+
- spec/campact_spec.rb
|
127
129
|
- spec/client_spec.rb
|
128
130
|
- spec/expire_spec.rb
|
129
131
|
- spec/fixtures/expire/success
|
130
132
|
- spec/fixtures/responses/actionkit/full_user_success
|
131
133
|
- spec/fixtures/responses/bluestatedigital/full_user_success
|
134
|
+
- spec/fixtures/responses/campact/full_user_success
|
132
135
|
- spec/fixtures/responses/full_user_error
|
133
136
|
- spec/fixtures/responses/full_user_success
|
134
137
|
- spec/fixtures/responses/identity/full_user_success
|