takeout 0.1.1 → 0.1.2

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: 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
  - - ">="