soda-ruby 0.2.12 → 0.2.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.mkd +1 -0
- data/lib/omniauth-socrata.rb +35 -0
- data/lib/soda/client.rb +4 -1
- data/lib/soda/smartupdate.rb +63 -0
- data/lib/soda/version.rb +1 -1
- metadata +15 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 465ea1cbe79b189bc29e2798e6e907e677a21963
|
4
|
+
data.tar.gz: d1c223e502052c9a07e34c95298ffdc237660b4c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: db13c563d0055fcfdaa4ded0d8bf56874e0346085b0b10a2ec4165d633c6d292c0abee3f334940629d416f2e7f77b4a52d5e1545b71583a808a78739575ced2a
|
7
|
+
data.tar.gz: 4a09101c6259b561b5ade89efc45d2ed39ee8e5231d2e212efa982174848c58832594a43d56ca6e592ccfeba0a8b5946b979eb439ce4cde978949266201ad6bb
|
data/CHANGELOG.mkd
CHANGED
@@ -8,3 +8,4 @@
|
|
8
8
|
0.2.10 - Removing a nesting limit that we missed
|
9
9
|
0.2.11 - We weren't properly handling an empty payload response
|
10
10
|
0.2.12 - Added a global option to disable SSL checking from https://github.com/socrata/soda-ruby/pull/7
|
11
|
+
0.2.13 - Added a global :timeout option to override the default Net:HTTP timeout, and accepting 202 as an "OK" response code, which should only occur during import.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'omniauth-oauth2'
|
2
|
+
|
3
|
+
module OmniAuth
|
4
|
+
module Strategies
|
5
|
+
class Socrata < OmniAuth::Strategies::OAuth2
|
6
|
+
option :name, "socrata"
|
7
|
+
|
8
|
+
option :client_options, {
|
9
|
+
:site => "https://opendata.socrata.com",
|
10
|
+
:authorize_url => "http://opendata.socrata.com/oauth/authorize",
|
11
|
+
:provider_ignores_state => true
|
12
|
+
}
|
13
|
+
|
14
|
+
# Sets the UID from the user's info
|
15
|
+
uid{ raw_info['id'] }
|
16
|
+
|
17
|
+
info do
|
18
|
+
{
|
19
|
+
:name => raw_info['name'],
|
20
|
+
:email => raw_info['email']
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
extra do
|
25
|
+
{
|
26
|
+
'raw_info' => raw_info
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def raw_info
|
31
|
+
@raw_info ||= access_token.get('/api/users/current.json').parsed
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/soda/client.rb
CHANGED
@@ -159,7 +159,7 @@ module SODA
|
|
159
159
|
|
160
160
|
def handle_response(response)
|
161
161
|
# Check our response code
|
162
|
-
if response.code
|
162
|
+
if !["200", "202"].include? response.code
|
163
163
|
raise "Error in request: #{response.body}"
|
164
164
|
else
|
165
165
|
if response.body.nil? || response.body.empty?
|
@@ -223,6 +223,9 @@ module SODA
|
|
223
223
|
if @config[:ignore_ssl]
|
224
224
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
225
225
|
end
|
226
|
+
if @config[:timeout]
|
227
|
+
http.read_timeout = @config[:timeout]
|
228
|
+
end
|
226
229
|
http
|
227
230
|
end
|
228
231
|
|
@@ -0,0 +1,63 @@
|
|
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
|
data/lib/soda/version.rb
CHANGED
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soda-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.13
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Metcalf
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: hashie
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
description: A simple wrapper for SODA 2.0
|
@@ -33,34 +30,35 @@ executables: []
|
|
33
30
|
extensions: []
|
34
31
|
extra_rdoc_files: []
|
35
32
|
files:
|
36
|
-
- lib/soda/client.rb
|
37
|
-
- lib/soda/version.rb
|
38
|
-
- lib/soda.rb
|
39
|
-
- LICENSE
|
40
33
|
- CHANGELOG.mkd
|
34
|
+
- LICENSE
|
41
35
|
- README.mkd
|
36
|
+
- lib/omniauth-socrata.rb
|
37
|
+
- lib/soda.rb
|
38
|
+
- lib/soda/client.rb
|
39
|
+
- lib/soda/smartupdate.rb
|
40
|
+
- lib/soda/version.rb
|
42
41
|
homepage: http://github.com/socrata/soda-ruby
|
43
42
|
licenses: []
|
43
|
+
metadata: {}
|
44
44
|
post_install_message:
|
45
45
|
rdoc_options: []
|
46
46
|
require_paths:
|
47
47
|
- lib
|
48
48
|
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
49
|
requirements:
|
51
|
-
- -
|
50
|
+
- - ">="
|
52
51
|
- !ruby/object:Gem::Version
|
53
52
|
version: '0'
|
54
53
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
54
|
requirements:
|
57
|
-
- -
|
55
|
+
- - ">="
|
58
56
|
- !ruby/object:Gem::Version
|
59
57
|
version: 1.3.6
|
60
58
|
requirements: []
|
61
59
|
rubyforge_project: soda-ruby
|
62
|
-
rubygems_version:
|
60
|
+
rubygems_version: 2.2.2
|
63
61
|
signing_key:
|
64
|
-
specification_version:
|
62
|
+
specification_version: 4
|
65
63
|
summary: Ruby for SODA 2.0
|
66
64
|
test_files: []
|