thrillcall-api 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 793a971e76c9cd13149ceaaf7824e1b0efeadfaf
4
+ data.tar.gz: 593ff4d5f5d967e7c265b572b75c437860399f81
5
+ SHA512:
6
+ metadata.gz: c35f9a08d52b4537721d632b826195f36bc2efb192b674d0e76a553aae9f561a54cb6c12a8dd1456fe3f0a48e6f24702185dc05f215d5f23df564391574bc762
7
+ data.tar.gz: 14729005883456a0330bbd5b67991a991f9466c5837f8f3d5416b6b9d442af24cda83481755a382df3aab7aa66aa2358b9d2117df82ca504d6c97d3509061ae4
@@ -4,30 +4,32 @@ require "#{File.expand_path("../thrillcall-api/exceptions", __FILE__)}"
4
4
  require "#{File.expand_path("../thrillcall-api/result", __FILE__)}"
5
5
  require "#{File.expand_path("../thrillcall-api/version", __FILE__)}"
6
6
  require 'net/http'
7
+ require 'open-uri'
7
8
  require 'retriable'
9
+ require 'retriable/core_ext/kernel'
8
10
 
9
11
  module ThrillcallAPI
10
12
 
11
- RETRY_ERRNO = [Errno::ECONNREFUSED,
12
- Errno::ECONNRESET,
13
- Errno::EHOSTUNREACH,
14
- Errno::EHOSTDOWN,
15
- Errno::EINVAL]
16
- RETRY_NET = [Net::HTTPBadResponse,
17
- Net::HTTPRequestTimeOut,
18
- Net::HTTPServerError, # 5xx
19
- Net::HTTPInternalServerError, # 500
20
- Net::HTTPNotImplemented, # 501
21
- Net::HTTPBadGateway, # 502
22
- Net::HTTPServiceUnavailable, # 503
23
- Net::HTTPGatewayTimeOut, # 504
24
- Net::HTTPVersionNotSupported] # 505
25
- RETRY_FARADAY = [Faraday::Error,
26
- Faraday::Error::ClientError]
27
- RETRY_DEFAULT = [Timeout::Error,
28
- EOFError,
29
- SocketError]
30
- RETRY_ALL = RETRY_DEFAULT + RETRY_ERRNO + RETRY_NET + RETRY_FARADAY
13
+ RETRY_EXCEPTIONS = {
14
+ Errno::ECONNREFUSED => nil,
15
+ Errno::ECONNRESET => nil,
16
+ Errno::EHOSTUNREACH => nil,
17
+ Errno::EHOSTDOWN => nil,
18
+ Errno::EINVAL => nil,
19
+ Net::HTTPBadResponse => nil,
20
+ Net::HTTPRequestTimeOut => nil,
21
+ Net::HTTPServerError => nil, # 5xx
22
+ Net::HTTPInternalServerError => nil, # 500
23
+ Net::HTTPNotImplemented => nil, # 501
24
+ Net::HTTPBadGateway => nil, # 502
25
+ Net::HTTPServiceUnavailable => nil, # 503
26
+ Net::HTTPGatewayTimeOut => nil, # 504
27
+ Net::HTTPVersionNotSupported => nil, # 505
28
+ OpenURI::HTTPError => /5[0-9][0-9]|400/,
29
+ Timeout::Error => nil,
30
+ EOFError => nil,
31
+ SocketError => nil
32
+ }
31
33
 
32
34
  class << self
33
35
  attr_accessor :cur_api_key, :base, :result, :conn
@@ -43,7 +45,7 @@ module ThrillcallAPI
43
45
 
44
46
  opts = default_options.merge(options)
45
47
 
46
- @retry_exceptions = opts[:retry_exceptions] || RETRY_ALL
48
+ @retry_exceptions = opts[:retry_exceptions] || RETRY_EXCEPTIONS
47
49
  @retry_tries = opts[:retry_tries] || 5
48
50
  @retry_timeout = opts[:timeout] || 10
49
51
 
@@ -101,7 +103,7 @@ module ThrillcallAPI
101
103
  req.url endpoint, params.merge(:api_key => @cur_api_key)
102
104
  end
103
105
  end
104
- JSON.parse(r.body)
106
+ return JSON.parse(r.body)
105
107
  end
106
108
 
107
109
  def post(endpoint, params, method = :post)
@@ -7,11 +7,11 @@ module ThrillcallAPI
7
7
  class Result
8
8
  attr_accessor :ran, :request_keys, :options, :set_methods, :http_method
9
9
  attr_reader :data
10
-
10
+
11
11
  def initialize
12
12
  reset
13
13
  end
14
-
14
+
15
15
  def reset
16
16
  if @set_methods
17
17
  unset_methods
@@ -24,7 +24,7 @@ module ThrillcallAPI
24
24
  @set_methods = []
25
25
  @http_method = :get
26
26
  end
27
-
27
+
28
28
  # Removes any dynamically defined methods
29
29
  def unset_methods
30
30
  @set_methods.each do |s|
@@ -32,15 +32,15 @@ module ThrillcallAPI
32
32
  undef_method s
33
33
  end
34
34
  end
35
-
35
+
36
36
  @set_methods = []
37
37
  end
38
-
38
+
39
39
  # Dynamically defines any methods available to data.
40
40
  # i.e. it puts on a "#{data.class}" costume
41
41
  def reassign(data)
42
42
  unset_methods
43
-
43
+
44
44
  data.public_methods.each do |meth|
45
45
  @set_methods << meth
46
46
  (class << self; self; end).class_eval do
@@ -50,18 +50,18 @@ module ThrillcallAPI
50
50
  end
51
51
  end
52
52
  end
53
-
53
+
54
54
  # Append the name of the method and any args to the current
55
55
  # request being built
56
56
  def append(key, *args)
57
-
57
+
58
58
  # If this is called but we've already fetched data, reset
59
59
  if @ran
60
60
  reset
61
61
  end
62
-
62
+
63
63
  @request_keys << key
64
-
64
+
65
65
  if args
66
66
  if args.is_a? Array
67
67
  args = args.flatten
@@ -81,7 +81,7 @@ module ThrillcallAPI
81
81
  end
82
82
  end
83
83
  end
84
-
84
+
85
85
  def run(method, *args, &block)
86
86
  # Fetch data if necessary. This will also "put on the
87
87
  # data.class costume" and allow the method to respond to a
@@ -89,24 +89,24 @@ module ThrillcallAPI
89
89
  if !@ran
90
90
  fetch_data
91
91
  end
92
-
92
+
93
93
  # Send the requested method out to the newly defined method
94
94
  self.send(method, *args, &block)
95
95
  end
96
-
96
+
97
97
  def fetch_data
98
98
  url = URI.escape(@request_keys.join("/"))
99
-
99
+
100
100
  @data = ThrillcallAPI.send(@http_method, url, @options)
101
-
101
+
102
102
  # Now we define the instance methods present in the data object
103
103
  # so that we can use this object *as if* we are using the data
104
104
  # object directly and we don't encounter method_missing
105
105
  reassign(@data)
106
-
106
+
107
107
  @ran = true
108
108
  end
109
-
109
+
110
110
  def post(args = {}, method = :post)
111
111
  if @ran
112
112
  raise ArgumentError, "This request has already been made!"
@@ -117,13 +117,13 @@ module ThrillcallAPI
117
117
  end
118
118
  @data
119
119
  end
120
-
120
+
121
121
  def put(args = {})
122
122
  post(args, :put)
123
123
  end
124
-
124
+
125
125
  def method_missing(method, *args, &block)
126
-
126
+
127
127
  if @ran
128
128
  # NoMethodError
129
129
  super
@@ -141,6 +141,6 @@ module ThrillcallAPI
141
141
  end
142
142
  end
143
143
  end
144
-
144
+
145
145
  end
146
- end
146
+ end
@@ -1,3 +1,3 @@
1
1
  module ThrillcallAPI
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thrillcall-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Healy
@@ -11,248 +10,218 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-06-10 00:00:00.000000000 Z
13
+ date: 2017-09-15 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: bundler
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - ">="
22
20
  - !ruby/object:Gem::Version
23
21
  version: 1.0.0
24
22
  type: :development
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - ">="
30
27
  - !ruby/object:Gem::Version
31
28
  version: 1.0.0
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: rake
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ~>
33
+ - - "~>"
38
34
  - !ruby/object:Gem::Version
39
35
  version: 0.9.2.2
40
36
  type: :development
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
- - - ~>
40
+ - - "~>"
46
41
  - !ruby/object:Gem::Version
47
42
  version: 0.9.2.2
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: rspec
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
- - - ~>
47
+ - - "~>"
54
48
  - !ruby/object:Gem::Version
55
49
  version: 2.7.0
56
50
  type: :development
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
- - - ~>
54
+ - - "~>"
62
55
  - !ruby/object:Gem::Version
63
56
  version: 2.7.0
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: ZenTest
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
- - - ~>
61
+ - - "~>"
70
62
  - !ruby/object:Gem::Version
71
- version: 4.6.2
63
+ version: 4.11.0
72
64
  type: :development
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
- - - ~>
68
+ - - "~>"
78
69
  - !ruby/object:Gem::Version
79
- version: 4.6.2
70
+ version: 4.11.0
80
71
  - !ruby/object:Gem::Dependency
81
72
  name: autotest
82
73
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
74
  requirements:
85
- - - ~>
75
+ - - "~>"
86
76
  - !ruby/object:Gem::Version
87
77
  version: 4.4.6
88
78
  type: :development
89
79
  prerelease: false
90
80
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
81
  requirements:
93
- - - ~>
82
+ - - "~>"
94
83
  - !ruby/object:Gem::Version
95
84
  version: 4.4.6
96
85
  - !ruby/object:Gem::Dependency
97
86
  name: autotest-growl
98
87
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
88
  requirements:
101
- - - ~>
89
+ - - "~>"
102
90
  - !ruby/object:Gem::Version
103
91
  version: 0.2.16
104
92
  type: :development
105
93
  prerelease: false
106
94
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
95
  requirements:
109
- - - ~>
96
+ - - "~>"
110
97
  - !ruby/object:Gem::Version
111
98
  version: 0.2.16
112
99
  - !ruby/object:Gem::Dependency
113
100
  name: autotest-fsevent
114
101
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
102
  requirements:
117
- - - ~>
103
+ - - "~>"
118
104
  - !ruby/object:Gem::Version
119
- version: 0.2.8
105
+ version: 0.2.12
120
106
  type: :development
121
107
  prerelease: false
122
108
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
109
  requirements:
125
- - - ~>
110
+ - - "~>"
126
111
  - !ruby/object:Gem::Version
127
- version: 0.2.8
112
+ version: 0.2.12
128
113
  - !ruby/object:Gem::Dependency
129
114
  name: awesome_print
130
115
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
116
  requirements:
133
- - - ~>
117
+ - - "~>"
134
118
  - !ruby/object:Gem::Version
135
119
  version: 1.0.1
136
120
  type: :development
137
121
  prerelease: false
138
122
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
123
  requirements:
141
- - - ~>
124
+ - - "~>"
142
125
  - !ruby/object:Gem::Version
143
126
  version: 1.0.1
144
127
  - !ruby/object:Gem::Dependency
145
128
  name: redcarpet
146
129
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
130
  requirements:
149
- - - ~>
131
+ - - "~>"
150
132
  - !ruby/object:Gem::Version
151
133
  version: 1.17.2
152
134
  type: :development
153
135
  prerelease: false
154
136
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
137
  requirements:
157
- - - ~>
138
+ - - "~>"
158
139
  - !ruby/object:Gem::Version
159
140
  version: 1.17.2
160
141
  - !ruby/object:Gem::Dependency
161
142
  name: nokogiri
162
143
  requirement: !ruby/object:Gem::Requirement
163
- none: false
164
144
  requirements:
165
- - - ~>
145
+ - - "~>"
166
146
  - !ruby/object:Gem::Version
167
- version: 1.4.6
147
+ version: 1.8.0
168
148
  type: :development
169
149
  prerelease: false
170
150
  version_requirements: !ruby/object:Gem::Requirement
171
- none: false
172
151
  requirements:
173
- - - ~>
152
+ - - "~>"
174
153
  - !ruby/object:Gem::Version
175
- version: 1.4.6
154
+ version: 1.8.0
176
155
  - !ruby/object:Gem::Dependency
177
- name: albino
156
+ name: pygments.rb
178
157
  requirement: !ruby/object:Gem::Requirement
179
- none: false
180
158
  requirements:
181
- - - ~>
159
+ - - "~>"
182
160
  - !ruby/object:Gem::Version
183
- version: 1.3.3
161
+ version: 1.2.0
184
162
  type: :development
185
163
  prerelease: false
186
164
  version_requirements: !ruby/object:Gem::Requirement
187
- none: false
188
165
  requirements:
189
- - - ~>
166
+ - - "~>"
190
167
  - !ruby/object:Gem::Version
191
- version: 1.3.3
168
+ version: 1.2.0
192
169
  - !ruby/object:Gem::Dependency
193
170
  name: faker
194
171
  requirement: !ruby/object:Gem::Requirement
195
- none: false
196
172
  requirements:
197
- - - ~>
173
+ - - "~>"
198
174
  - !ruby/object:Gem::Version
199
175
  version: 0.9.5
200
176
  type: :development
201
177
  prerelease: false
202
178
  version_requirements: !ruby/object:Gem::Requirement
203
- none: false
204
179
  requirements:
205
- - - ~>
180
+ - - "~>"
206
181
  - !ruby/object:Gem::Version
207
182
  version: 0.9.5
208
183
  - !ruby/object:Gem::Dependency
209
184
  name: tzinfo
210
185
  requirement: !ruby/object:Gem::Requirement
211
- none: false
212
186
  requirements:
213
- - - ~>
187
+ - - "~>"
214
188
  - !ruby/object:Gem::Version
215
189
  version: 0.3.31
216
190
  type: :development
217
191
  prerelease: false
218
192
  version_requirements: !ruby/object:Gem::Requirement
219
- none: false
220
193
  requirements:
221
- - - ~>
194
+ - - "~>"
222
195
  - !ruby/object:Gem::Version
223
196
  version: 0.3.31
224
197
  - !ruby/object:Gem::Dependency
225
198
  name: faraday
226
199
  requirement: !ruby/object:Gem::Requirement
227
- none: false
228
200
  requirements:
229
- - - ~>
201
+ - - "~>"
230
202
  - !ruby/object:Gem::Version
231
203
  version: 0.8.7
232
204
  type: :runtime
233
205
  prerelease: false
234
206
  version_requirements: !ruby/object:Gem::Requirement
235
- none: false
236
207
  requirements:
237
- - - ~>
208
+ - - "~>"
238
209
  - !ruby/object:Gem::Version
239
210
  version: 0.8.7
240
211
  - !ruby/object:Gem::Dependency
241
212
  name: retriable
242
213
  requirement: !ruby/object:Gem::Requirement
243
- none: false
244
214
  requirements:
245
- - - ~>
215
+ - - "~>"
246
216
  - !ruby/object:Gem::Version
247
- version: 1.3.3
217
+ version: 3.1.1
248
218
  type: :runtime
249
219
  prerelease: false
250
220
  version_requirements: !ruby/object:Gem::Requirement
251
- none: false
252
221
  requirements:
253
- - - ~>
222
+ - - "~>"
254
223
  - !ruby/object:Gem::Version
255
- version: 1.3.3
224
+ version: 3.1.1
256
225
  description: Simple wrapper around http://thrillcall.com's API
257
226
  email:
258
227
  - github@thrillcall.com
@@ -260,35 +229,31 @@ executables: []
260
229
  extensions: []
261
230
  extra_rdoc_files: []
262
231
  files:
232
+ - lib/thrillcall-api.rb
263
233
  - lib/thrillcall-api/exceptions.rb
264
234
  - lib/thrillcall-api/result.rb
265
235
  - lib/thrillcall-api/version.rb
266
- - lib/thrillcall-api.rb
267
236
  homepage: https://github.com/thrillcall/thrillcall-api
268
237
  licenses: []
238
+ metadata: {}
269
239
  post_install_message:
270
240
  rdoc_options: []
271
241
  require_paths:
272
242
  - lib
273
243
  required_ruby_version: !ruby/object:Gem::Requirement
274
- none: false
275
244
  requirements:
276
- - - ! '>='
245
+ - - ">="
277
246
  - !ruby/object:Gem::Version
278
247
  version: '0'
279
- segments:
280
- - 0
281
- hash: -14664519067324063
282
248
  required_rubygems_version: !ruby/object:Gem::Requirement
283
- none: false
284
249
  requirements:
285
- - - ! '>='
250
+ - - ">="
286
251
  - !ruby/object:Gem::Version
287
252
  version: 1.3.6
288
253
  requirements: []
289
254
  rubyforge_project: thrillcall-api
290
- rubygems_version: 1.8.25
255
+ rubygems_version: 2.6.13
291
256
  signing_key:
292
- specification_version: 3
257
+ specification_version: 4
293
258
  summary: Simple wrapper around http://thrillcall.com's API
294
259
  test_files: []