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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e8981158e8e5dafbab52af5d934153c69dbf3ee
4
- data.tar.gz: 5a06c10a7867c3671a476612b5b5933d30a51e8a
3
+ metadata.gz: 40f6ac479b705e18b5a3bfe835f7246573ee3047
4
+ data.tar.gz: 28b76878cd8de120cdae8de967a6d7016242c2d3
5
5
  SHA512:
6
- metadata.gz: 877c0d6f415c7b6f338c65334169da8d1730b8881fb851edc01dcecf0426d8f1a32ee456d8873292c8036058ee6feb65225edb40f9304d723d83b729ac453af9
7
- data.tar.gz: 73bed704d4271d3c1c20e4b65b0dfcdb2cf49f20710464095f10656b0ee31098e22f6ee932767a0c728b94940e5e52f9d07e6edc4531e50c600d131c66f71b07
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 version of MRI 1.8 and up are supported, it probably work sunder other variations of ruby it just hasn't been tested on the,
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
- machine:
2
- ruby:
3
- version: 2.1.0-p0
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
@@ -49,18 +49,7 @@ module Takeout
49
49
  if block_given?
50
50
  yield self
51
51
  else
52
- # Set instance variables
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 if endpoints.is_a? Hash
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({}){|memo,(k,v)| memo[k.to_s] = v; memo}
147
-
148
- # Encode the template values and remove template values from original options hash
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.to_sym, request_url.to_s, options) do |curl|
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[:basic_auth]
148
+ if options[:username] && options[:password]
162
149
  curl.http_auth_types = :basic
163
- curl.username = options[:basic_auth][:username]
164
- curl.password = options[:basic_auth][:password]
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 if @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 = "#{request_url}.#{options[:extension] ? options[:extension] : self.extension}" if options[:extension] || self.extension
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
@@ -1,3 +1,3 @@
1
1
  module Takeout
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.8.0'
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
- spec.add_development_dependency "guard", "2.12.5"
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
- spec.add_development_dependency 'guard-yard'
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.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.8.0
179
+ version: 1.9.3
264
180
  required_rubygems_version: !ruby/object:Gem::Requirement
265
181
  requirements:
266
182
  - - ">="