takeout 0.1.1 → 0.1.2
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/Gemfile +9 -0
- data/README.md +2 -1
- data/circle.yml +22 -3
- data/lib/takeout/client.rb +33 -28
- data/lib/takeout/version.rb +1 -1
- data/spec/client_spec.rb +4 -0
- data/takeout.gemspec +3 -7
- metadata +2 -86
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40f6ac479b705e18b5a3bfe835f7246573ee3047
|
4
|
+
data.tar.gz: 28b76878cd8de120cdae8de967a6d7016242c2d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80ef2d524ba29db29b2743492b463e9f1b1f853afed7157f1c34bdb6c9296cd8484af1eb2bc4dfc600ba10eb410fc4ff6d8e91d9eeb3cf783efca930a305350b
|
7
|
+
data.tar.gz: 806bb933cd151d8803972727531d520fb7442bdd7ce74aed6d8cda7918b66e922ddc62db590e41ed351bbce611f7475cdba0a41cd1f08a11cd3e3f68b6dc0be8
|
data/Gemfile
CHANGED
@@ -2,3 +2,12 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in takeout.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :development do
|
7
|
+
gem "guard", "2.12.5", require: false
|
8
|
+
gem "guard-rspec", '4.5.0', require: false
|
9
|
+
gem "guard-bundler", require: false
|
10
|
+
gem "guard-rake", require: false
|
11
|
+
gem "terminal-notifier-guard", require: false
|
12
|
+
gem 'guard-yard', require: false
|
13
|
+
end
|
data/README.md
CHANGED
@@ -5,7 +5,8 @@ A powerful little tool for generating on-the-fly API clients.
|
|
5
5
|
|
6
6
|
## Requirements
|
7
7
|
|
8
|
-
All
|
8
|
+
All versions of MRI 1.9.3+ and up are supported, currently un supported on JRuby, MRI 1.8-1.9.2, and Rubinus.
|
9
|
+
Support of these platforms is a future goal for the project.
|
9
10
|
|
10
11
|
## Installation
|
11
12
|
|
data/circle.yml
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
dependencies:
|
2
|
+
override:
|
3
|
+
- >
|
4
|
+
case $CIRCLE_NODE_INDEX in
|
5
|
+
0)
|
6
|
+
rvm-exec 1.9.3-p0 bash -c "bundle check --path=vendor/bundle || bundle install --path=vendor/bundle"
|
7
|
+
;;
|
8
|
+
1)
|
9
|
+
rvm-exec 2.0.0-p0 bash -c "bundle check --path=vendor/bundle || bundle install --path=vendor/bundle"
|
10
|
+
;;
|
11
|
+
2)
|
12
|
+
rvm-exec 2.2.0 bash -c "bundle check --path=vendor/bundle || bundle install --path=vendor/bundle"
|
13
|
+
;;
|
14
|
+
3)
|
15
|
+
rvm-exec 2.1.0 bash -c "bundle check --path=vendor/bundle || bundle install --path=vendor/bundle"
|
16
|
+
;;
|
17
|
+
esac
|
18
|
+
|
19
|
+
test:
|
20
|
+
override:
|
21
|
+
- case $CIRCLE_NODE_INDEX in 0) rvm-exec 1.9.3-p0 bundle exec rspec ;; 1) rvm-exec 2.0.0-p0 bundle exec rspec ;; 2) rvm-exec 2.2.0 bundle exec rspec ;; 3) rvm-exec 2.1.0 bundle exec rspec ;; esac:
|
22
|
+
parallel: true
|
data/lib/takeout/client.rb
CHANGED
@@ -49,18 +49,7 @@ module Takeout
|
|
49
49
|
if block_given?
|
50
50
|
yield self
|
51
51
|
else
|
52
|
-
|
53
|
-
@uri = options[:uri] ? options[:uri] : ''
|
54
|
-
self.endpoints = options[:endpoints] ? options[:endpoints] : {}
|
55
|
-
@headers = options[:headers] ? options[:headers] : {}
|
56
|
-
@debug = options[:debug] ? options[:debug] : false
|
57
|
-
@ssl = options[:ssl] ? options[:ssl] : false
|
58
|
-
@schemas = options[:schemas] ? options[:schemas] : {}
|
59
|
-
@extension = options[:extension] ? options[:extension] : nil
|
60
|
-
|
61
|
-
# Clean instance variables out of options hash and set that as options instance variable
|
62
|
-
[:uri, :endpoints, :headers, :debug, :ssl, :schemas, :extension].each { |v| options.delete(v) }
|
63
|
-
@options = options
|
52
|
+
extract_instance_variables_from_options(options)
|
64
53
|
end
|
65
54
|
end
|
66
55
|
|
@@ -111,7 +100,7 @@ module Takeout
|
|
111
100
|
return perform_curl_request(request_type, request_url, options, headers)
|
112
101
|
end
|
113
102
|
end
|
114
|
-
end
|
103
|
+
end
|
115
104
|
end
|
116
105
|
|
117
106
|
# Render out the template values and return the updated options hash
|
@@ -142,30 +131,26 @@ module Takeout
|
|
142
131
|
extracted_options.merge!({object_id: options[:object_id]}) if options[:object_id]
|
143
132
|
template.scan(/\{\{(\w+)\}\}/).flatten(1).each { |template_key| extracted_options.merge!(options.select {|key| key == template_key.to_sym }) }
|
144
133
|
|
145
|
-
# Convert keys to strings
|
146
|
-
extracted_options = extracted_options.inject({})
|
147
|
-
|
148
|
-
|
149
|
-
extracted_options.each do |key, value|
|
150
|
-
extracted_options[key] = ERB::Util.url_encode(value.to_s)
|
151
|
-
options.delete(key.to_sym)
|
134
|
+
# Convert keys to strings, encode values, clean up hash
|
135
|
+
extracted_options = extracted_options.inject({}) do |memo,(key,value)|
|
136
|
+
options.delete(key)
|
137
|
+
memo.merge({key.to_s => ERB::Util.url_encode(value)})
|
152
138
|
end
|
153
139
|
|
154
140
|
return extracted_options, options
|
155
141
|
end
|
156
142
|
|
157
143
|
def perform_curl_request(request_type, request_url, options=nil, headers=nil)
|
158
|
-
curl = Curl.send(request_type
|
144
|
+
curl = Curl.send(request_type, request_url.to_s, options) do |curl|
|
159
145
|
curl.verbose = true if @debug
|
146
|
+
curl.headers = headers if headers
|
160
147
|
|
161
|
-
if options[:
|
148
|
+
if options[:username] && options[:password]
|
162
149
|
curl.http_auth_types = :basic
|
163
|
-
curl.username = options[:
|
164
|
-
curl.password = options[:
|
150
|
+
curl.username = options[:username]
|
151
|
+
curl.password = options[:password]
|
165
152
|
end
|
166
153
|
|
167
|
-
headers.each { |key, value| curl.headers[key.to_s] = value } if headers
|
168
|
-
|
169
154
|
curl.on_success {|response| @parsed_body, @failure = Oj.load(response.body_str), false }
|
170
155
|
|
171
156
|
FAILURES.each { |failure_type| curl.send("on_#{failure_type}") {@failure=true} }
|
@@ -173,7 +158,7 @@ module Takeout
|
|
173
158
|
|
174
159
|
raise Takeout::EndpointFailureError.new(curl, request_type) if @failure
|
175
160
|
|
176
|
-
return @parsed_body
|
161
|
+
return @parsed_body
|
177
162
|
end
|
178
163
|
|
179
164
|
|
@@ -189,11 +174,31 @@ module Takeout
|
|
189
174
|
end
|
190
175
|
|
191
176
|
# Append extension if one is given
|
192
|
-
request_url =
|
177
|
+
request_url = append_extension(request_url, options)
|
193
178
|
|
194
179
|
return request_url, options
|
195
180
|
end
|
196
181
|
|
182
|
+
def append_extension(request_url, options)
|
183
|
+
request_url = "#{request_url}.#{options[:extension] || self.extension}" if options[:extension] || self.extension
|
184
|
+
return request_url
|
185
|
+
end
|
186
|
+
|
187
|
+
def extract_instance_variables_from_options(options)
|
188
|
+
# Set instance variables
|
189
|
+
@uri = options[:uri] || ''
|
190
|
+
self.endpoints = options[:endpoints] || {}
|
191
|
+
@headers = options[:headers] || {}
|
192
|
+
@schemas = options[:schemas] || {}
|
193
|
+
@debug = options[:debug]
|
194
|
+
@ssl = options[:ssl]
|
195
|
+
@extension = options[:extension]
|
196
|
+
|
197
|
+
# Clean instance variables out of options hash and set that as options instance variable
|
198
|
+
[:uri, :endpoints, :headers, :debug, :ssl, :schemas, :extension].each { |v| options.delete(v) }
|
199
|
+
@options = options
|
200
|
+
end
|
201
|
+
|
197
202
|
def url(endpoint=nil)
|
198
203
|
ssl? ? URI::HTTPS.build(host: @uri, path: endpoint) : URI::HTTP.build(host: @uri, path: endpoint)
|
199
204
|
end
|
data/lib/takeout/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -38,6 +38,10 @@ describe Takeout::Client do
|
|
38
38
|
it 'properly handles an object_id' do
|
39
39
|
expect(client.send(:generate_request_url, :posts, :get, {object_id: 1}).first.to_s).to eq 'http://test.com/posts/1'
|
40
40
|
end
|
41
|
+
|
42
|
+
it 'properly appends an extension' do
|
43
|
+
expect(client.send(:generate_request_url, :posts, :get, {extension: 'json'}).first.to_s).to eq 'http://test.com/posts.json'
|
44
|
+
end
|
41
45
|
end
|
42
46
|
|
43
47
|
|
data/takeout.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = %q{}
|
13
13
|
spec.homepage = "http://github.com/kyelgrantlucas/takeout"
|
14
14
|
spec.license = "MIT"
|
15
|
-
spec.required_ruby_version = '>= 1.
|
15
|
+
spec.required_ruby_version = '>= 1.9.3'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0")
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
@@ -27,11 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "rspec"
|
28
28
|
spec.add_development_dependency "sinatra"
|
29
29
|
spec.add_development_dependency "webmock"
|
30
|
-
|
31
|
-
spec.add_development_dependency "guard-rspec", '4.5.0'
|
32
|
-
spec.add_development_dependency "guard-bundler"
|
33
|
-
spec.add_development_dependency "guard-rake"
|
34
|
-
spec.add_development_dependency "terminal-notifier-guard"
|
30
|
+
|
35
31
|
spec.add_development_dependency "codeclimate-test-reporter"
|
36
|
-
|
32
|
+
|
37
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: takeout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Lucas
|
@@ -122,76 +122,6 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: guard
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 2.12.5
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 2.12.5
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: guard-rspec
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - '='
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 4.5.0
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - '='
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 4.5.0
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: guard-bundler
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: guard-rake
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: terminal-notifier-guard
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
125
|
- !ruby/object:Gem::Dependency
|
196
126
|
name: codeclimate-test-reporter
|
197
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,20 +136,6 @@ dependencies:
|
|
206
136
|
- - ">="
|
207
137
|
- !ruby/object:Gem::Version
|
208
138
|
version: '0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: guard-yard
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - ">="
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
-
type: :development
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - ">="
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
223
139
|
description: ''
|
224
140
|
email:
|
225
141
|
- kglucas93@gmail.com
|
@@ -260,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
260
176
|
requirements:
|
261
177
|
- - ">="
|
262
178
|
- !ruby/object:Gem::Version
|
263
|
-
version: 1.
|
179
|
+
version: 1.9.3
|
264
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
265
181
|
requirements:
|
266
182
|
- - ">="
|