thrillcall-api 0.1.0 → 0.1.1

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.
@@ -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: []