soda-ruby 0.2.17 → 0.2.18

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: cb57c12f85945c0ba10302b788dc842132144222
4
- data.tar.gz: 1695289f0ffa9b4bcd1f40e7393edb1ecd0409cf
3
+ metadata.gz: 8b31234fb24d9b3e2a6e895c687f8c5036b8c2f9
4
+ data.tar.gz: 4b60658e6a62db5cf3c42a74819c0018b32059a5
5
5
  SHA512:
6
- metadata.gz: b79d9a2617dc802c7669ec27e02042c75c7cdcff13eda556171010d0b8eb10f85dfd360ede73ef7a2cebfc17dec38f6cfaca0b7fb7073094661ea203a17601ae
7
- data.tar.gz: 8a5d329098bafa0f38c417b2fa750a1fa2065440562b8454d184e3c0abb522f739e1b4d4c4583c42e7df80ea3f1056eb0621190227688986055e1950535624c4
6
+ metadata.gz: 4e27a9b90898ec21331984a8ac4b7d79db6516ceb7d047e8a8c3fac9f3dc6383ffa65e1e48a1ebb205d22b2573d357fb10fe3890d775df84d858590973863e36
7
+ data.tar.gz: 69117b56f9280ffeea188b074c0409f7835e36f3f250e6be302c20830675b627b899687c21bf83ce9fac62feb6125206ee9b9ea8d08ddac770eca12429c3e40c
data/README.mkd CHANGED
@@ -1,3 +1,6 @@
1
+ [![Build status](https://ci.appveyor.com/api/projects/status/4uaa2irr26deoffv?svg=true)](https://ci.appveyor.com/project/chrismetcalf/soda-ruby)
2
+ [![Build Status](https://travis-ci.org/socrata/soda-ruby.svg?branch=master)](https://travis-ci.org/socrata/soda-ruby)
3
+
1
4
  For more details and for documentation, check out <http://socrata.github.io/soda-ruby> or our [developer portal](http://dev.socrata.com).
2
5
 
3
6
  ## Installation
@@ -3,20 +3,19 @@ require 'omniauth-oauth2'
3
3
  module OmniAuth
4
4
  module Strategies
5
5
  class Socrata < OmniAuth::Strategies::OAuth2
6
- option :name, "socrata"
6
+ option :name, 'socrata'
7
7
 
8
- option :client_options, {
9
- :site => "https://opendata.socrata.com",
10
- :authorize_url => "http://opendata.socrata.com/oauth/authorize",
8
+ option :client_options,
9
+ :site => 'https://opendata.socrata.com',
10
+ :authorize_url => 'http://opendata.socrata.com/oauth/authorize',
11
11
  :provider_ignores_state => true
12
- }
13
12
 
14
13
  # Sets the UID from the user's info
15
- uid{ raw_info['id'] }
14
+ uid { raw_info['id'] }
16
15
 
17
16
  info do
18
17
  {
19
- :name => raw_info['name'],
18
+ :name => raw_info['name'],
20
19
  :email => raw_info['email']
21
20
  }
22
21
  end
data/lib/soda/client.rb CHANGED
@@ -40,7 +40,8 @@ module SODA
40
40
  # * +:password+ - Your Socrata password (optional, only necessary for modifying data)
41
41
  # * +:app_token+ - Your Socrata application token (register at http://dev.socrata.com/register)
42
42
  # * +:access_token+ - Your Socrata OAuth token (optional, https://dev.socrata.com/docs/authentication.html)
43
- # * +:ignore_ssl+ - Ignore ssl errors (defaults to false)
43
+ # * +:ignore_ssl+ - Ignore SSL errors, which is very unsafe and only should be done in desperate circumstances (defaults to false)
44
+ # * +:debug_stream+ - Set an output stream for debugging
44
45
  #
45
46
  # Returns a SODA::Client instance.
46
47
  #
@@ -246,6 +247,7 @@ module SODA
246
247
  http.use_ssl = true
247
248
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @config[:ignore_ssl]
248
249
  http.read_timeout = @config[:timeout] if @config[:timeout]
250
+ http.set_debug_output(@config[:debug_stream]) if @config[:debug_stream]
249
251
  http
250
252
  end
251
253
 
@@ -1,70 +1,70 @@
1
1
  # Adapted (lifted) from RestClient: https://github.com/rest-client/rest-client/blob/master/lib/restclient/exceptions.rb
2
2
  module SODA
3
-
4
- STATUSES = {100 => 'Continue',
5
- 101 => 'Switching Protocols',
6
- 102 => 'Processing', #WebDAV
7
-
8
- 200 => 'OK',
9
- 201 => 'Created',
10
- 202 => 'Accepted',
11
- 203 => 'Non-Authoritative Information', # http/1.1
12
- 204 => 'No Content',
13
- 205 => 'Reset Content',
14
- 206 => 'Partial Content',
15
- 207 => 'Multi-Status', #WebDAV
16
-
17
- 300 => 'Multiple Choices',
18
- 301 => 'Moved Permanently',
19
- 302 => 'Found',
20
- 303 => 'See Other', # http/1.1
21
- 304 => 'Not Modified',
22
- 305 => 'Use Proxy', # http/1.1
23
- 306 => 'Switch Proxy', # no longer used
24
- 307 => 'Temporary Redirect', # http/1.1
25
-
26
- 400 => 'Bad Request',
27
- 401 => 'Unauthorized',
28
- 402 => 'Payment Required',
29
- 403 => 'Forbidden',
30
- 404 => 'Not Found',
31
- 405 => 'Method Not Allowed',
32
- 406 => 'Not Acceptable',
33
- 407 => 'Proxy Authentication Required',
34
- 408 => 'Request Timeout',
35
- 409 => 'Conflict',
36
- 410 => 'Gone',
37
- 411 => 'Length Required',
38
- 412 => 'Precondition Failed',
39
- 413 => 'Request Entity Too Large',
40
- 414 => 'Request-URI Too Long',
41
- 415 => 'Unsupported Media Type',
42
- 416 => 'Requested Range Not Satisfiable',
43
- 417 => 'Expectation Failed',
44
- 418 => 'I\'m A Teapot', #RFC2324
45
- 421 => 'Too Many Connections From This IP',
46
- 422 => 'Unprocessable Entity', #WebDAV
47
- 423 => 'Locked', #WebDAV
48
- 424 => 'Failed Dependency', #WebDAV
49
- 425 => 'Unordered Collection', #WebDAV
50
- 426 => 'Upgrade Required',
51
- 428 => 'Precondition Required', #RFC6585
52
- 429 => 'Too Many Requests', #RFC6585
53
- 431 => 'Request Header Fields Too Large', #RFC6585
54
- 449 => 'Retry With', #Microsoft
55
- 450 => 'Blocked By Windows Parental Controls', #Microsoft
56
-
57
- 500 => 'Internal Server Error',
58
- 501 => 'Not Implemented',
59
- 502 => 'Bad Gateway',
60
- 503 => 'Service Unavailable',
61
- 504 => 'Gateway Timeout',
62
- 505 => 'HTTP Version Not Supported',
63
- 506 => 'Variant Also Negotiates',
64
- 507 => 'Insufficient Storage', #WebDAV
65
- 509 => 'Bandwidth Limit Exceeded', #Apache
66
- 510 => 'Not Extended',
67
- 511 => 'Network Authentication Required', # RFC6585
3
+ STATUSES = {
4
+ 100 => 'Continue',
5
+ 101 => 'Switching Protocols',
6
+ 102 => 'Processing', # WebDAV
7
+
8
+ 200 => 'OK',
9
+ 201 => 'Created',
10
+ 202 => 'Accepted',
11
+ 203 => 'Non-Authoritative Information', # http/1.1
12
+ 204 => 'No Content',
13
+ 205 => 'Reset Content',
14
+ 206 => 'Partial Content',
15
+ 207 => 'Multi-Status', # WebDAV
16
+
17
+ 300 => 'Multiple Choices',
18
+ 301 => 'Moved Permanently',
19
+ 302 => 'Found',
20
+ 303 => 'See Other', # http/1.1
21
+ 304 => 'Not Modified',
22
+ 305 => 'Use Proxy', # http/1.1
23
+ 306 => 'Switch Proxy', # no longer used
24
+ 307 => 'Temporary Redirect', # http/1.1
25
+
26
+ 400 => 'Bad Request',
27
+ 401 => 'Unauthorized',
28
+ 402 => 'Payment Required',
29
+ 403 => 'Forbidden',
30
+ 404 => 'Not Found',
31
+ 405 => 'Method Not Allowed',
32
+ 406 => 'Not Acceptable',
33
+ 407 => 'Proxy Authentication Required',
34
+ 408 => 'Request Timeout',
35
+ 409 => 'Conflict',
36
+ 410 => 'Gone',
37
+ 411 => 'Length Required',
38
+ 412 => 'Precondition Failed',
39
+ 413 => 'Request Entity Too Large',
40
+ 414 => 'Request-URI Too Long',
41
+ 415 => 'Unsupported Media Type',
42
+ 416 => 'Requested Range Not Satisfiable',
43
+ 417 => 'Expectation Failed',
44
+ 418 => 'I\'m A Teapot', # RFC2324
45
+ 421 => 'Too Many Connections From This IP',
46
+ 422 => 'Unprocessable Entity', # WebDAV
47
+ 423 => 'Locked', # WebDAV
48
+ 424 => 'Failed Dependency', # WebDAV
49
+ 425 => 'Unordered Collection', # WebDAV
50
+ 426 => 'Upgrade Required',
51
+ 428 => 'Precondition Required', # RFC6585
52
+ 429 => 'Too Many Requests', # RFC6585
53
+ 431 => 'Request Header Fields Too Large', # RFC6585
54
+ 449 => 'Retry With', # Microsoft
55
+ 450 => 'Blocked By Windows Parental Controls', # Microsoft
56
+
57
+ 500 => 'Internal Server Error',
58
+ 501 => 'Not Implemented',
59
+ 502 => 'Bad Gateway',
60
+ 503 => 'Service Unavailable',
61
+ 504 => 'Gateway Timeout',
62
+ 505 => 'HTTP Version Not Supported',
63
+ 506 => 'Variant Also Negotiates',
64
+ 507 => 'Insufficient Storage', # WebDAV
65
+ 509 => 'Bandwidth Limit Exceeded', # Apache
66
+ 510 => 'Not Extended',
67
+ 511 => 'Network Authentication Required', # RFC6585
68
68
  }
69
69
 
70
70
  # This is the base exception class. Rescue it if you want to
@@ -79,7 +79,7 @@ module SODA
79
79
  attr_accessor :data
80
80
  attr_writer :message
81
81
 
82
- def initialize response = nil, initial_response_code = nil
82
+ def initialize(response = nil, initial_response_code = nil)
83
83
  @response = response
84
84
  @message = nil
85
85
  @initial_response_code = initial_response_code
@@ -121,7 +121,6 @@ module SODA
121
121
 
122
122
  # The request failed with an error code not managed by the code
123
123
  class RequestFailed < ExceptionWithResponse
124
-
125
124
  def default_message
126
125
  "HTTP status code #{http_code}"
127
126
  end
@@ -144,7 +143,7 @@ module SODA
144
143
  # Create HTTP status exception classes
145
144
  STATUSES.each_pair do |code, message|
146
145
  klass = Class.new(RequestFailed) do
147
- send(:define_method, :default_message) {"#{http_code ? "#{http_code} " : ''}#{message}"}
146
+ send(:define_method, :default_message) { "#{http_code ? "#{http_code} " : ''}#{message}" }
148
147
  end
149
148
  klass_constant = const_set(message.delete(' \-\''), klass)
150
149
  Exceptions::EXCEPTIONS_MAP[code] = klass_constant
@@ -163,7 +162,7 @@ module SODA
163
162
  # NB: Previous releases of rest-client would raise RequestTimeout both for
164
163
  # HTTP 408 responses and for actual connection timeouts.
165
164
  class Timeout < SODA::RequestTimeout
166
- def initialize(message=nil, original_exception=nil)
165
+ def initialize(message = nil, original_exception = nil)
167
166
  super(nil, nil)
168
167
  self.message = message if message
169
168
  self.original_exception = original_exception if original_exception
@@ -187,7 +186,6 @@ module SODA
187
186
  end
188
187
  end
189
188
 
190
-
191
189
  # The server broke the connection prior to the request completing. Usually
192
190
  # this means it crashed, or sometimes that your network connection was
193
191
  # severed before it could complete.
data/lib/soda/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SODA
2
- VERSION = '0.2.17'
2
+ VERSION = '0.2.18'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soda-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.17
4
+ version: 0.2.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Metcalf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-29 00:00:00.000000000 Z
11
+ date: 2016-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -177,7 +177,6 @@ files:
177
177
  - lib/soda.rb
178
178
  - lib/soda/client.rb
179
179
  - lib/soda/exceptions.rb
180
- - lib/soda/smartupdate.rb
181
180
  - lib/soda/version.rb
182
181
  homepage: http://github.com/socrata/soda-ruby
183
182
  licenses: []
@@ -198,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
197
  version: 1.3.6
199
198
  requirements: []
200
199
  rubyforge_project: soda-ruby
201
- rubygems_version: 2.2.3
200
+ rubygems_version: 2.4.5
202
201
  signing_key:
203
202
  specification_version: 4
204
203
  summary: Ruby for SODA 2.0
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # A Ruby client to the Socrata SmartUpdate API
4
- #
5
- # For more details, check out http://socrata.github.io/soda-ruby
6
- #
7
-
8
- require 'soda/client'
9
-
10
- module SODA
11
- class SmartUpdate
12
- ##
13
- #
14
- # Creates a new SmartUpdate client.
15
- #
16
- # * +config+ - A hash of the options to initialize the client with. The options are the same as SODA::Client
17
- #
18
- # == Config Options
19
- #
20
- # * +:domain+ - The domain you want to access
21
- # * +:username+ - Your Socrata username (optional, only necessary for modifying data)
22
- # * +:password+ - Your Socrata password (optional, only necessary for modifying data)
23
- # * +:app_token+ - Your Socrata application token (register at http://dev.socrata.com/register)
24
- # * +:ignore_ssl+ - Ignore ssl errors (defaults to false)
25
- #
26
- # Returns a SODA::Client instance.
27
- #
28
- # == Example
29
- #
30
- # client = SODA::Client.new({ :domain => "data.agency.gov", :app_token => "CGxarwoQlgQSev4zyUh5aR5J3" })
31
- #
32
- def initialize(config = {})
33
- @config = config.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
34
- @client = SODA::Client.new(@config)
35
-
36
- # Fetch version and blocksize information from the service
37
- @blocksize = @client.get("/datasync/version.json")["max-block-size"]
38
- end
39
-
40
- # Chunks a file for smart-updating and uploads it
41
- def upload(uid, filename, options = {})
42
- options = DEFAULT_OPTIONS.merge(options)
43
-
44
- # Determine the file size, and ideal chunk size
45
- filesize = File.size(filename)
46
- blocks = (0..filesize).step(@blocksize).collect do |offset|
47
- @client.post("/datasync/id/#{uid}",
48
- IO.read(filename, @blocksize, offset)).blobId
49
- end
50
- return blocks
51
- end
52
-
53
- # Commits a set of chunks to be written
54
- def commit(uid, filename, chunks)
55
- @client.post("/datasync/id/#{uid}/commit", {:filename => filename, :chunks => chunks}).jobId
56
- end
57
-
58
- # Check on the status of a job
59
- def check(uid, job_id)
60
- @client.get("/datasync/id/#{uid}/status/#{job_id}", nil, nil)
61
- end
62
- end
63
- end