synapse_client 0.1.3 → 0.1.4

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: c46836e82f8fd5cadaf0f92f1f63a3d1ea1e8aef
4
- data.tar.gz: 0ecf16d300d068f81a8492e14c37b20d87424a9a
3
+ metadata.gz: 1383017e5b19893e1e5a72491da9ca52acfb5160
4
+ data.tar.gz: 1a7fd28f77a7f4a030907c890c0c0a90300367b7
5
5
  SHA512:
6
- metadata.gz: d0b24502cc145f806e2a2aab43df57154f6dd7de6f7153c594764b64af6bf994485495d1a0ac0543aa50e951150da6499667d22ca8d57bcc539795ed8df636ea
7
- data.tar.gz: 555c437e3273c0c4a0a0ab2f192c80079a2e1a4a15a6791e8ce587edd1ee5f0999581a2f7ad9681e2187c6bae0192a725cf9711f8d750345e30591c97edab2fc
6
+ metadata.gz: 5afe0053efeaf1ba4b0b55859afb5283b7dd4bc18470ea93ce7dae8a5d18b8743fff0d505f637bea7c1b72f987b62239affa3feaf7222453a57a9a484f58732d
7
+ data.tar.gz: bf5d82448ff3e4129de3f7fa29494af779cdf89c96ec07aa90211a6ad0d6f474766f8a9471358866537e9b6c2182b72369fe3aaadb47ebd20bc027aa1c356cd6
@@ -94,11 +94,15 @@ module SynapseClient
94
94
  }
95
95
 
96
96
  #
97
- #begin
97
+ begin
98
98
  response = execute_request(request_opts)
99
99
  # TODO: https://github.com/stripe/stripe-ruby/blob/master/lib/stripe.rb#L127
100
- #rescue
101
- #end
100
+ rescue RestClient::Exception, Errno::ECONNREFUSED => e
101
+ return SynapseClient::APIOperations::Response.new({
102
+ :success => false,
103
+ :status_code => e.http_code
104
+ })
105
+ end
102
106
 
103
107
  parse(response)
104
108
  end
@@ -3,17 +3,19 @@ module SynapseClient
3
3
  class Response
4
4
  attr_reader :data
5
5
  attr_reader :error_msg
6
- attr_reader :success
7
6
  attr_reader :cookies
7
+ attr_reader :status_code
8
+ attr_reader :success
8
9
  alias_method :successful?, :success
9
10
 
10
11
  def initialize(response, cookies=nil)
11
12
  response = Map.new(response)
12
13
 
13
- @success = response.delete(:success)
14
- @error_msg = response.delete(:reason)
15
- @data = response
16
- @cookies = cookies
14
+ @status_code = response.delete(:status_code)
15
+ @success = response.delete(:success)
16
+ @error_msg = response.delete(:reason)
17
+ @data = response
18
+ @cookies = cookies
17
19
  end
18
20
  end
19
21
  end
@@ -41,13 +41,22 @@ module SynapseClient
41
41
  end
42
42
 
43
43
  def self.retrieve(access_token, refresh_token)
44
- response = SynapseClient.request(:post, url + "show", {:access_token => access_token})
44
+ response = Customer.get_user({
45
+ :access_token => access_token,
46
+ :refresh_token => refresh_token
47
+ })
48
+
49
+ unless response.successful? # refresh tokens & try once more.
50
+ new_tokens = Customer.refresh_tokens(access_token, refresh_token)
51
+ return new_tokens if new_tokens.instance_of?(SynapseClient::Error)
52
+ return Customer.get_user({
53
+ :access_token => new_tokens.access_token,
54
+ :refresh_token => new_tokens.refresh_token,
55
+ :expires_in => new_tokens.expires_in
56
+ })
57
+ end
45
58
 
46
- return response unless response.successful?
47
- Customer.new(response.data.user.merge({
48
- :access_token => access_token,
49
- :refresh_token => refresh_token
50
- }))
59
+ response
51
60
  end
52
61
 
53
62
  # TODO
@@ -99,21 +108,30 @@ module SynapseClient
99
108
  end
100
109
  end
101
110
 
102
- def refresh_tokens
111
+ def self.refresh_tokens(access_token, refresh_token)
103
112
  rt = SynapseClient::RefreshedTokens.new({
104
- :old_access_token => @access_token,
105
- :old_refresh_token => @refresh_token
113
+ :old_access_token => access_token,
114
+ :old_refresh_token => refresh_token
106
115
  }).refresh_old_tokens
107
116
 
108
117
  return rt if rt.instance_of?(SynapseClient::Error)
109
118
 
110
- @access_token = rt.new_access_token
111
- @refresh_token = rt.new_refresh_token
112
- @expires_in = rt.new_expires_in
113
-
114
- return self
119
+ Map.new({
120
+ :access_token => rt.new_access_token,
121
+ :refresh_token => rt.new_refresh_token,
122
+ :expires_in => rt.new_expires_in
123
+ })
115
124
  end
116
125
 
126
+ def self.get_user(opts={})
127
+ response = SynapseClient.request(:post, url + "show", {:access_token => opts[:access_token]})
128
+
129
+ return response unless response.successful?
130
+
131
+ opts.delete(:expires_in) if opts[:expires_in].nil?
132
+
133
+ Customer.new(response.data.user.merge(opts))
134
+ end
117
135
 
118
136
  private
119
137
  def update_attributes(data)
@@ -1,3 +1,3 @@
1
1
  module SynapseClient
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -64,16 +64,32 @@ describe SynapseClient::Customer do
64
64
  end
65
65
  end
66
66
 
67
- describe "refreshing a customer's token" do
67
+ describe "refreshing and retrieving customer" do
68
68
  it "should successfully get new oauth consumer key, refresh token, and expires in." do
69
69
  customer = SynapseClient::Customer.retrieve(@customer.access_token, @customer.refresh_token)
70
70
 
71
71
  old_access_token = @customer.access_token.dup
72
72
  old_refresh_token = @customer.refresh_token.dup
73
73
 
74
- response = customer.refresh_tokens
74
+ response = SynapseClient::Customer.refresh_tokens(old_access_token, old_refresh_token)
75
75
 
76
- expect(response).to be_a SynapseClient::Customer
76
+ expect(response).to be_a Map
77
+
78
+ expect(response.access_token).to be_a String
79
+ expect(response.refresh_token).to be_a String
80
+ expect(response.expires_in).to be_a Fixnum
81
+
82
+ expect(response.access_token).not_to be eq(old_access_token)
83
+ expect(response.refresh_token).not_to be eq(old_refresh_token)
84
+ end
85
+
86
+ it "should successfully retrieve a customer with a broken access token" do
87
+ old_access_token = @customer.access_token.dup
88
+ old_refresh_token = @customer.refresh_token.dup
89
+
90
+ customer = SynapseClient::Customer.retrieve("accexpired", @customer.refresh_token)
91
+
92
+ expect(customer).to be_a SynapseClient::Customer
77
93
 
78
94
  expect(customer.access_token).to be_a String
79
95
  expect(customer.refresh_token).to be_a String
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synapse_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Matthias
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-11 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client