google-api-client 0.3.0 → 0.4.0
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.
- data/CHANGELOG.md +43 -0
- data/README.md +4 -5
- data/bin/google-api +12 -7
- data/lib/google/api_client.rb +179 -161
- data/lib/google/api_client/discovery/api.rb +1 -0
- data/lib/google/api_client/discovery/method.rb +11 -8
- data/lib/google/api_client/discovery/resource.rb +1 -0
- data/lib/google/api_client/discovery/schema.rb +2 -1
- data/lib/google/api_client/environment.rb +15 -0
- data/lib/google/api_client/reference.rb +41 -31
- data/lib/google/api_client/result.rb +5 -10
- data/lib/google/api_client/version.rb +3 -1
- data/spec/google/api_client/discovery_spec.rb +44 -51
- data/spec/google/api_client_spec.rb +19 -10
- data/tasks/gem.rake +7 -6
- data/tasks/git.rake +1 -1
- data/tasks/rdoc.rake +5 -8
- data/tasks/spec.rake +3 -2
- data/tasks/wiki.rake +48 -7
- data/tasks/yard.rake +7 -4
- metadata +11 -17
- data/CHANGELOG +0 -36
- data/lib/google/api_client/parser.rb +0 -59
- data/lib/google/api_client/parsers/json/error_parser.rb +0 -34
- data/lib/google/api_client/parsers/json/pagination.rb +0 -40
- data/lib/google/api_client/parsers/json_parser.rb +0 -119
- data/spec/google/api_client/parsers/json_parser_spec.rb +0 -55
- data/tasks/clobber.rake +0 -2
@@ -1,40 +0,0 @@
|
|
1
|
-
# Copyright 2010 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
require 'google/api_client/parsers/json_parser'
|
17
|
-
|
18
|
-
module Google
|
19
|
-
class APIClient
|
20
|
-
module JSON
|
21
|
-
##
|
22
|
-
# A module which provides a paginated parser.
|
23
|
-
module Pagination
|
24
|
-
def self.included(parser)
|
25
|
-
parser.class_eval do
|
26
|
-
include Google::APIClient::JSONParser
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def next_page_token
|
31
|
-
return self["nextPageToken"]
|
32
|
-
end
|
33
|
-
|
34
|
-
def prev_page_token
|
35
|
-
return self["prevPageToken"]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,119 +0,0 @@
|
|
1
|
-
# Copyright 2010 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
require 'json'
|
17
|
-
require 'google/api_client/parser'
|
18
|
-
|
19
|
-
module Google
|
20
|
-
class APIClient
|
21
|
-
##
|
22
|
-
# Provides a module which all other parsers should include.
|
23
|
-
module JSONParser
|
24
|
-
extend Parser
|
25
|
-
content_type 'application/json'
|
26
|
-
|
27
|
-
module Matcher
|
28
|
-
def conditions
|
29
|
-
@conditions ||= []
|
30
|
-
end
|
31
|
-
|
32
|
-
def matches_kind(kind)
|
33
|
-
self.matches_field_value(:kind, kind)
|
34
|
-
end
|
35
|
-
|
36
|
-
def matches_fields(fields)
|
37
|
-
self.conditions << [:fields, fields]
|
38
|
-
end
|
39
|
-
|
40
|
-
def matches_field_value(field, value)
|
41
|
-
self.conditions << [:field_value, field, value]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.parsers
|
46
|
-
@parsers ||= []
|
47
|
-
end
|
48
|
-
|
49
|
-
##
|
50
|
-
# This method ensures that all parsers auto-register themselves.
|
51
|
-
def self.included(parser)
|
52
|
-
self.parsers << parser
|
53
|
-
parser.extend(Matcher)
|
54
|
-
end
|
55
|
-
|
56
|
-
def initialize(data)
|
57
|
-
@data = data.kind_of?(Hash) ? data : ::JSON.parse(data)
|
58
|
-
end
|
59
|
-
|
60
|
-
def [](key)
|
61
|
-
return self.json[key]
|
62
|
-
end
|
63
|
-
|
64
|
-
def json
|
65
|
-
if @data
|
66
|
-
data = @data
|
67
|
-
elsif self.respond_to?(:data)
|
68
|
-
data = self.data
|
69
|
-
else
|
70
|
-
raise TypeError, "Parser did not provide access to raw data."
|
71
|
-
end
|
72
|
-
return data
|
73
|
-
end
|
74
|
-
|
75
|
-
##
|
76
|
-
# Matches a parser to the data.
|
77
|
-
def self.match(data)
|
78
|
-
for parser in self.parsers
|
79
|
-
conditions_met = true
|
80
|
-
for condition in (parser.conditions.sort_by { |c| c.size }).reverse
|
81
|
-
condition_type, *params = condition
|
82
|
-
case condition_type
|
83
|
-
when :fields
|
84
|
-
for field in params
|
85
|
-
if !data.has_key?(field)
|
86
|
-
conditions_met = false
|
87
|
-
break
|
88
|
-
end
|
89
|
-
end
|
90
|
-
when :field_values
|
91
|
-
field, value = params
|
92
|
-
if data[field] != value
|
93
|
-
conditions_met = false
|
94
|
-
break
|
95
|
-
end
|
96
|
-
else
|
97
|
-
raise ArgumentError, "Unknown condition type: #{condition_type}"
|
98
|
-
end
|
99
|
-
break if !conditions_met
|
100
|
-
end
|
101
|
-
if conditions_met
|
102
|
-
return parser
|
103
|
-
end
|
104
|
-
end
|
105
|
-
return nil
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.parse(json)
|
109
|
-
data = json.kind_of?(Hash) ? json : ::JSON.parse(json)
|
110
|
-
parser = self.match(data)
|
111
|
-
if parser
|
112
|
-
return parser.new(data)
|
113
|
-
else
|
114
|
-
return data
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# Copyright 2010 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
16
|
-
|
17
|
-
require 'json'
|
18
|
-
require 'google/api_client/parsers/json_parser'
|
19
|
-
require 'google/api_client/parsers/json/error_parser'
|
20
|
-
require 'google/api_client/parsers/json/pagination'
|
21
|
-
|
22
|
-
describe Google::APIClient::JSONParser, 'with error data' do
|
23
|
-
before do
|
24
|
-
@data = {
|
25
|
-
'error' => {
|
26
|
-
'code' => 401,
|
27
|
-
'message' => 'Token invalid - Invalid AuthSub token.',
|
28
|
-
'errors' => [
|
29
|
-
{
|
30
|
-
'location' => 'Authorization',
|
31
|
-
'domain' => 'global',
|
32
|
-
'locationType' => 'header',
|
33
|
-
'reason' => 'authError',
|
34
|
-
'message' => 'Token invalid - Invalid AuthSub token.'
|
35
|
-
}
|
36
|
-
]
|
37
|
-
}
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should correctly match as an error' do
|
42
|
-
parser = Google::APIClient::JSONParser.match(@data)
|
43
|
-
parser.should == Google::APIClient::JSON::ErrorParser
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should be automatically handled as an error when parsed' do
|
47
|
-
data = Google::APIClient::JSONParser.parse(@data)
|
48
|
-
data.should be_kind_of(Google::APIClient::JSON::ErrorParser)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should correctly expose error message' do
|
52
|
-
data = Google::APIClient::JSONParser.parse(@data)
|
53
|
-
data.error.should == 'Token invalid - Invalid AuthSub token.'
|
54
|
-
end
|
55
|
-
end
|
data/tasks/clobber.rake
DELETED