fusion_tables_api 0.0.3 → 0.0.4
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/HISTORY.md +4 -0
- data/README.md +14 -5
- data/lib/fusion_tables_api/authorization.rb +2 -2
- data/lib/fusion_tables_api/table.rb +15 -17
- data/lib/fusion_tables_api/version.rb +1 -1
- data/lib/fusion_tables_api.rb +10 -4
- data/spec/fusion_tables_api_spec.rb +74 -0
- data/spec/spec_helper.rb +6 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6535c59c29b723d30f3d724554b419edb37355a3
|
4
|
+
data.tar.gz: 7d5d43b0346b487ac7350e45b6e6dc03867c57e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cac9e478a44ff75087134019e3cbb05cd7bc64a3f0818f92515b99a1db28a3089f791b2be06709e4c88e3a135cb30ed73e65fb9ac93037dd39e0ef646da06e22
|
7
|
+
data.tar.gz: 5a886e78e9acf7a6a19907e2ad1ac054ab267fe9c08fb855ad233a63751a1cd573d2bc44a58614629bd64fb9f27897134aa3f9588c90b12ff4dbcaa564c4a4fc
|
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -29,13 +29,22 @@ Or install it yourself as:
|
|
29
29
|
refresh_token: "refresh-token-would-be-useful-too"
|
30
30
|
}
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
google_api_client_options {
|
33
|
+
application_name: "AppName"
|
34
|
+
application_version: "1.0awesome"
|
35
|
+
}
|
36
|
+
|
37
|
+
ft = FusionTablesAPI.new(cred, tokens, google_api_client_options)
|
38
|
+
jj ft.get_table_list
|
34
39
|
|
35
40
|
OR
|
36
41
|
|
37
|
-
ft = FusionTablesAPI.new("google_oauth_credentials.yml", "google_access_token.yml")
|
38
|
-
ft.get_table_list
|
42
|
+
ft = FusionTablesAPI.new("google_oauth_credentials.yml", "google_access_token.yml", google_api_client_options)
|
43
|
+
jj ft.get_table_list
|
44
|
+
|
45
|
+
Generating a table:
|
46
|
+
|
47
|
+
ft.generate_table("the_name_of_csv_file.csv")
|
39
48
|
|
40
49
|
**TODO: Finish this....**
|
41
50
|
|
@@ -47,7 +56,7 @@ OR
|
|
47
56
|
4. Push to the branch (`git push origin my-new-feature`)
|
48
57
|
5. Create new Pull Request
|
49
58
|
|
50
|
-
|
59
|
+
## License
|
51
60
|
Copyright (c) 2013 Michael Villena
|
52
61
|
|
53
62
|
MIT License
|
@@ -32,7 +32,6 @@ class FusionTablesAPI
|
|
32
32
|
|
33
33
|
def load_oauth_tokens(oauth_tokens)
|
34
34
|
if oauth_tokens.is_a?(Hash)
|
35
|
-
# TODO Need to involve instance variable authorization_tokens
|
36
35
|
set_access_token(oauth_tokens[:access_token])
|
37
36
|
set_refresh_token(oauth_tokens[:refresh_token])
|
38
37
|
else
|
@@ -44,6 +43,7 @@ class FusionTablesAPI
|
|
44
43
|
end
|
45
44
|
|
46
45
|
# Authorization
|
46
|
+
# TODO Need to test this out
|
47
47
|
def initial_authorization
|
48
48
|
puts "1) Copy and paste the url below into your browser:"
|
49
49
|
authorize = @client.authorization.authorization_uri
|
@@ -57,7 +57,7 @@ class FusionTablesAPI
|
|
57
57
|
code = gets.chomp.strip
|
58
58
|
|
59
59
|
@client.authorization.code = code
|
60
|
-
# TODO Need to this one below
|
60
|
+
# TODO Need to test this one below
|
61
61
|
@authorization_tokens ||= @client.authorization.fetch_access_token!
|
62
62
|
|
63
63
|
File.open(GOOGLE_OAUTH_TOKEN_FILE, 'w+') { |f| f.write(oauth_authorization.to_yaml)}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
|
-
# TODO
|
3
|
+
# TODO Will need to change this
|
4
4
|
class String
|
5
5
|
def is_i?
|
6
6
|
!!(self =~/^[-+]?[0-9]+$/)
|
@@ -13,11 +13,8 @@ class FusionTablesAPI
|
|
13
13
|
|
14
14
|
def get_table_list
|
15
15
|
result = @client.execute(api_method: @fusion_tables_api.table.list)
|
16
|
-
|
17
|
-
|
18
|
-
# end
|
19
|
-
|
20
|
-
jj JSON.parse(result.body)
|
16
|
+
store_new_access_token if @authorization_tokens &&
|
17
|
+
@client.authorization.access_token != @authorization_tokens['access_token']
|
21
18
|
JSON.parse(result.body)
|
22
19
|
end
|
23
20
|
|
@@ -33,29 +30,30 @@ class FusionTablesAPI
|
|
33
30
|
|
34
31
|
request_body = { "columns" => column_names, "isExportable" => false, "name" => File.basename(filename, ".csv") }
|
35
32
|
result = @client.execute(api_method: @fusion_tables_api.table.insert, headers: headers, body: request_body.to_json)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
puts "#### \nCreate Table Response:\n#{result.body}\n####\n"
|
40
|
-
parsed_result # return
|
33
|
+
store_new_access_token if @authorization_tokens &&
|
34
|
+
@client.authorization.access_token != @authorization_tokens['access_token']
|
35
|
+
JSON.parse(result.body)
|
41
36
|
end
|
42
37
|
|
43
38
|
def import_rows(filename, table_id, start_line= 0)
|
44
39
|
headers = Hash.new
|
45
40
|
headers[:content_type] = 'application/octet-stream'
|
46
|
-
params = {
|
41
|
+
params = {
|
42
|
+
tableId: table_id,
|
43
|
+
startLine: start_line,
|
44
|
+
isStrict: false # May need to set isStrict to false
|
45
|
+
}
|
47
46
|
request_body = File.read(filename)
|
48
47
|
import_row_url = "https://www.googleapis.com/upload/fusiontables/v1/tables/tableId/import"
|
49
48
|
|
50
49
|
result = @client.execute(uri: import_row_url, http_method: :post, body: request_body, headers: headers, parameters: params )
|
51
|
-
|
52
|
-
|
53
|
-
true # return
|
50
|
+
result.data
|
54
51
|
end
|
55
52
|
|
56
53
|
def generate_table(filename, start_line= 0)
|
57
|
-
|
58
|
-
import_rows(filename,
|
54
|
+
create_response = create_table(filename)
|
55
|
+
import_response = import_rows(filename, create_response["tableId"], start_line)
|
56
|
+
[create_response, import_response]
|
59
57
|
end
|
60
58
|
|
61
59
|
def add_rows_to_existing_table(filename)
|
data/lib/fusion_tables_api.rb
CHANGED
@@ -8,11 +8,17 @@ require 'yaml'
|
|
8
8
|
|
9
9
|
class FusionTablesAPI
|
10
10
|
GOOGLE_OAUTH_TOKEN_FILE = 'google_access_token.yml'
|
11
|
+
attr_reader :client
|
11
12
|
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
# @oauth_cred - Accepts hash with :client_id, :client_secret, or
|
14
|
+
# filename of file that contains the oauth credentials 'client_id', 'client_secret'
|
15
|
+
# @google_api_client_options - Accepts options for the google_api_client, e.g. :application_name, :application_version
|
16
|
+
# See here https://github.com/google/google-api-ruby-client/blob/master/lib/google/api_client.rb
|
17
|
+
# @access_tokens - Accepts hash with :access_token, :refresh_token, or
|
18
|
+
# filename of file that contains the oauth tkens 'access_token', 'refresh_token'
|
19
|
+
def initialize(oauth_cred, access_tokens = nil, google_api_client_options = {})
|
20
|
+
@client = Google::APIClient.new(google_api_client_options)
|
21
|
+
@fusion_tables_api = @client.discovered_api('fusiontables') # Should comment this out when testing
|
16
22
|
|
17
23
|
load_authorization_credentials(oauth_cred)
|
18
24
|
load_oauth_tokens(access_tokens) if access_tokens
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# fusion_tables_api.spec
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe FusionTablesAPI do
|
5
|
+
before do
|
6
|
+
@client_cred = { client_id: "FaKE-1D", client_secret: "s3EkR1t" }
|
7
|
+
@oauth_tokens = { access_token: "SuM-C0mb0-04-th15", refresh_token: "jUs7_a5-Wld" }
|
8
|
+
@google_api_client_options = {
|
9
|
+
application_name: "Test",
|
10
|
+
application_version: "1.0alpha"
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when initializing FusionTablesAPI" do
|
15
|
+
it "should raise an ArgumentError error if no parameters passed" do
|
16
|
+
expect { FusionTablesAPI.new }.to raise_error(ArgumentError)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should not raise an error if the client credentials are passed" do
|
20
|
+
expect { FusionTablesAPI.new(@client_cred, @google_api_client_options) }.to_not raise_error
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
before { @ft_no_tokens = FusionTablesAPI.new(@client_cred, nil, @google_api_client_options) }
|
25
|
+
|
26
|
+
subject { @ft_no_tokens }
|
27
|
+
it { should respond_to(:client) }
|
28
|
+
|
29
|
+
describe "after being initialized without access_tokens" do
|
30
|
+
let(:authorization) { @ft_no_tokens.client.authorization }
|
31
|
+
it "should have its client id set" do
|
32
|
+
authorization.client_id.should equal(@client_cred[:client_id])
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should have its client secret set" do
|
36
|
+
authorization.client_secret.should equal(@client_cred[:client_secret])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should not have an access token set" do
|
40
|
+
authorization.access_token.should be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
before { @ft_with_tokens = FusionTablesAPI.new(@client_cred, @oauth_tokens, @google_api_client_options) }
|
46
|
+
|
47
|
+
describe "after being initialized with tokens" do
|
48
|
+
let(:authorization) { @ft_with_tokens.client.authorization }
|
49
|
+
it "should have its client id set" do
|
50
|
+
authorization.client_id.should equal(@client_cred[:client_id])
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have its client secret set" do
|
54
|
+
authorization.client_secret.should equal(@client_cred[:client_secret])
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should not have an access token set" do
|
58
|
+
authorization.access_token.should equal(@oauth_tokens[:access_token])
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should not have an access token set" do
|
62
|
+
authorization.refresh_token.should equal(@oauth_tokens[:refresh_token])
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "when initialized without GoogleAPI Client options" do
|
67
|
+
it "should not raise an error" do
|
68
|
+
expect { FusionTablesAPI.new(@client_cred) }.to_not raise_error
|
69
|
+
end
|
70
|
+
it "should not raise an error when access_token in argument as well" do
|
71
|
+
expect { FusionTablesAPI.new(@client_cred, @oauth_tokens) }.to_not raise_error
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusion_tables_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Villena
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -85,6 +85,8 @@ files:
|
|
85
85
|
- lib/fusion_tables_api/table.rb
|
86
86
|
- lib/fusion_tables_api/version.rb
|
87
87
|
- spec/.gitkeep
|
88
|
+
- spec/fusion_tables_api_spec.rb
|
89
|
+
- spec/spec_helper.rb
|
88
90
|
homepage: ''
|
89
91
|
licenses:
|
90
92
|
- MIT
|
@@ -111,3 +113,5 @@ specification_version: 4
|
|
111
113
|
summary: Create tables in Google Fusion Tables via its API
|
112
114
|
test_files:
|
113
115
|
- spec/.gitkeep
|
116
|
+
- spec/fusion_tables_api_spec.rb
|
117
|
+
- spec/spec_helper.rb
|