chute 0.0.2 → 2.0.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/Gemfile +16 -2
- data/Gemfile.lock +52 -0
- data/LICENSE.txt +20 -0
- data/README.md +46 -0
- data/Rakefile +48 -6
- data/VERSION +1 -0
- data/chute.gemspec +120 -16
- data/lib/chute.rb +7 -20
- data/lib/chute/client.rb +42 -0
- data/lib/chute/configuration.rb +40 -0
- data/lib/chute/connection.rb +64 -0
- data/lib/chute/response.rb +22 -0
- data/lib/chute/v2/albums.rb +60 -0
- data/lib/chute/v2/assets.rb +55 -0
- data/lib/chute/v2/comments.rb +29 -0
- data/lib/chute/v2/flags.rb +21 -0
- data/lib/chute/v2/hearts.rb +21 -0
- data/lib/chute/v2/parcels.rb +21 -0
- data/lib/chute/v2/tags.rb +36 -0
- data/lib/chute/v2/triggers.rb +26 -0
- data/lib/chute/v2/users.rb +18 -0
- data/lib/chute/v2/votes.rb +21 -0
- data/lib/chute/version.rb +7 -1
- data/spec/chute/chute_spec.rb +64 -0
- data/spec/chute/client_spec.rb +82 -0
- data/spec/chute/connection_spec.rb +47 -0
- data/spec/chute/response_spec.rb +16 -0
- data/spec/chute/v2/albums_spec.rb +197 -0
- data/spec/chute/v2/assets_spec.rb +171 -0
- data/spec/chute/v2/comments_spec.rb +88 -0
- data/spec/chute/v2/flags_spec.rb +56 -0
- data/spec/chute/v2/hearts_spec.rb +57 -0
- data/spec/chute/v2/parcels_spec.rb +24 -0
- data/spec/chute/v2/tags_spec.rb +79 -0
- data/spec/chute/v2/trigger_spec.rb +127 -0
- data/spec/chute/v2/users_spec.rb +53 -0
- data/spec/chute/v2/votes_spec.rb +56 -0
- data/spec/fixtures/chute_cassettes/albums/album_create_with_permission_view.yml +69 -0
- data/spec/fixtures/chute_cassettes/albums/albums_add_remove_assets.yml +187 -0
- data/spec/fixtures/chute_cassettes/albums/albums_create.yml +69 -0
- data/spec/fixtures/chute_cassettes/albums/albums_delete.yml +128 -0
- data/spec/fixtures/chute_cassettes/albums/albums_get.yml +135 -0
- data/spec/fixtures/chute_cassettes/albums/albums_list.yml +89 -0
- data/spec/fixtures/chute_cassettes/albums/albums_stats.yml +128 -0
- data/spec/fixtures/chute_cassettes/albums/albums_update.yml +135 -0
- data/spec/fixtures/chute_cassettes/assets/assets_delete.yml +131 -0
- data/spec/fixtures/chute_cassettes/assets/assets_geo.yml +197 -0
- data/spec/fixtures/chute_cassettes/assets/assets_get.yml +138 -0
- data/spec/fixtures/chute_cassettes/assets/assets_import.yml +76 -0
- data/spec/fixtures/chute_cassettes/assets/assets_list.yml +77 -0
- data/spec/fixtures/chute_cassettes/assets/assets_update.yml +138 -0
- data/spec/fixtures/chute_cassettes/comments/comments_create.yml +196 -0
- data/spec/fixtures/chute_cassettes/comments/comments_list.yml +259 -0
- data/spec/fixtures/chute_cassettes/flags/flags_methods.yml +313 -0
- data/spec/fixtures/chute_cassettes/hearts/hearts_methods.yml +254 -0
- data/spec/fixtures/chute_cassettes/tags/tags_assets.yml +311 -0
- data/spec/fixtures/chute_cassettes/triggers/trigger_errors.yml +62 -0
- data/spec/fixtures/chute_cassettes/triggers/triggers_cleanup.yml +184 -0
- data/spec/fixtures/chute_cassettes/triggers/triggers_create.yml +65 -0
- data/spec/fixtures/chute_cassettes/triggers/triggers_delete.yml +124 -0
- data/spec/fixtures/chute_cassettes/triggers/triggers_list.yml +66 -0
- data/spec/fixtures/chute_cassettes/triggers/triggers_update.yml +127 -0
- data/spec/fixtures/chute_cassettes/users/users_get.yml +128 -0
- data/spec/fixtures/chute_cassettes/users/users_me.yml +66 -0
- data/spec/fixtures/chute_cassettes/votes/votes_methods.yml +313 -0
- data/spec/spec_helper.rb +27 -0
- metadata +210 -33
- data/.gitignore +0 -5
- data/README +0 -125
- data/config/chute.rb +0 -0
- data/lib/chute/account.rb +0 -58
- data/lib/chute/app.rb +0 -32
- data/lib/chute/asset.rb +0 -124
- data/lib/chute/bundle.rb +0 -72
- data/lib/chute/chute.rb +0 -203
- data/lib/chute/collection.rb +0 -47
- data/lib/chute/comment.rb +0 -32
- data/lib/chute/exception.rb +0 -7
- data/lib/chute/http_service.rb +0 -114
- data/lib/chute/inbox.rb +0 -41
- data/lib/chute/parcel.rb +0 -45
- data/lib/chute/resource.rb +0 -354
- data/lib/chute/user.rb +0 -113
- data/lib/chute/util.rb +0 -14
- data/test/test_sudoku.rb +0 -7
data/lib/chute/comment.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
module Chute
|
2
|
-
class GCComment < GCResource
|
3
|
-
attr_accessor :id,
|
4
|
-
:status,
|
5
|
-
:comment
|
6
|
-
|
7
|
-
def initialize(attributes = {})
|
8
|
-
super
|
9
|
-
@id = id
|
10
|
-
@status = status
|
11
|
-
@comment = comment
|
12
|
-
end
|
13
|
-
|
14
|
-
# Public: Returns pluralized name of the resource.
|
15
|
-
def resource_name
|
16
|
-
"comments"
|
17
|
-
end
|
18
|
-
|
19
|
-
def save
|
20
|
-
raise NotImplementedError
|
21
|
-
end
|
22
|
-
|
23
|
-
def update
|
24
|
-
raise NotImplementedError
|
25
|
-
end
|
26
|
-
|
27
|
-
# Public: Returns pluralized name of the resource.
|
28
|
-
def class_path
|
29
|
-
"comments"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/lib/chute/exception.rb
DELETED
data/lib/chute/http_service.rb
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
module Chute
|
2
|
-
class GCRequest
|
3
|
-
include HTTParty
|
4
|
-
|
5
|
-
HEADERS = {"authorization" => API_KEY}
|
6
|
-
|
7
|
-
base_uri API_URL
|
8
|
-
|
9
|
-
# Public: Get request to a specific URL.
|
10
|
-
#
|
11
|
-
# url - relative url.
|
12
|
-
# params - parameters hash.
|
13
|
-
# headers - headers hash.
|
14
|
-
#
|
15
|
-
# Returns a GCResponse.
|
16
|
-
|
17
|
-
def get(url, params=nil, header_options=nil)
|
18
|
-
GCResponse.new(GCRequest.get(url, {:body => params, :headers => get_headers(header_options)}))
|
19
|
-
end
|
20
|
-
|
21
|
-
# Public: Post request to a specific URL.
|
22
|
-
#
|
23
|
-
# url - relative url.
|
24
|
-
# params - parameters hash.
|
25
|
-
# headers - headers hash.
|
26
|
-
#
|
27
|
-
# Returns a GCResponse.
|
28
|
-
|
29
|
-
def post(url, params=nil, header_options=nil)
|
30
|
-
GCResponse.new(GCRequest.post(url, {:body => params, :headers => get_headers(header_options)}))
|
31
|
-
end
|
32
|
-
|
33
|
-
# Public: Put request to a specific URL.
|
34
|
-
#
|
35
|
-
# url - relative url.
|
36
|
-
# params - parameters hash.
|
37
|
-
# headers - headers hash.
|
38
|
-
#
|
39
|
-
# Returns a GCResponse.
|
40
|
-
|
41
|
-
def put(url, params=nil, header_options=nil)
|
42
|
-
GCResponse.new(GCRequest.put(url, {:body => params, :headers => get_headers(header_options)}))
|
43
|
-
end
|
44
|
-
|
45
|
-
# Public: Delete request to a specific URL.
|
46
|
-
#
|
47
|
-
# url - relative url.
|
48
|
-
# params - parameters hash.
|
49
|
-
# headers - headers hash.
|
50
|
-
#
|
51
|
-
# Returns a GCResponse.
|
52
|
-
|
53
|
-
def delete(url, params=nil, header_options=nil)
|
54
|
-
GCResponse.new(GCRequest.delete(url, {:body => params, :headers => get_headers(header_options)}))
|
55
|
-
end
|
56
|
-
|
57
|
-
protected
|
58
|
-
|
59
|
-
# Protected: Add custom headers to default header options.
|
60
|
-
#
|
61
|
-
# header_options - Hash, header options.
|
62
|
-
#
|
63
|
-
# Returns final header Hash
|
64
|
-
|
65
|
-
def get_headers(header_options)
|
66
|
-
Hash === header_options ? header_options.merge(HEADERS) : HEADERS
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
class GCResponse
|
72
|
-
attr_reader :raw_response, :data, :errors, :status, :is_success
|
73
|
-
def initialize(attributes = {})
|
74
|
-
@raw_response = attributes
|
75
|
-
@status = attributes.response.code
|
76
|
-
@errors = []
|
77
|
-
parse(attributes.parsed_response)
|
78
|
-
end
|
79
|
-
|
80
|
-
protected
|
81
|
-
|
82
|
-
# Protected: Parse the data from the response
|
83
|
-
#
|
84
|
-
# parsed_response - HTTParty parsed response
|
85
|
-
#
|
86
|
-
# In case,
|
87
|
-
# status code is,
|
88
|
-
# < 300 - successful, set GCResponse.data as the returned data
|
89
|
-
# 401 - failed, Raise UnAuthorized Exception (like API key invalid or missing)
|
90
|
-
# other - failed, set GCResponse.errors as the returned errors
|
91
|
-
#
|
92
|
-
# Returns a GCResponse.
|
93
|
-
|
94
|
-
def parse(parsed_response)
|
95
|
-
if status.to_i <= 300
|
96
|
-
if parsed_response["errors"]
|
97
|
-
@is_success = false
|
98
|
-
parsed_response["errors"].each do |error|
|
99
|
-
@errors << error
|
100
|
-
end
|
101
|
-
else
|
102
|
-
@is_success = true
|
103
|
-
@data = parsed_response["data"]
|
104
|
-
end
|
105
|
-
else
|
106
|
-
@is_success = false
|
107
|
-
@errors << parsed_response["error"]
|
108
|
-
if status == "401"
|
109
|
-
raise Chute::Exceptions::UnAuthorized, parsed_response["error"]
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
data/lib/chute/inbox.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module Chute
|
2
|
-
class GCInbox
|
3
|
-
|
4
|
-
# Public: Fetch inbox information.
|
5
|
-
#
|
6
|
-
# Returns photo, comments, requests and invite count.
|
7
|
-
def self.info
|
8
|
-
request = GCRequest.new()
|
9
|
-
response = request.get("/#{class_path}")
|
10
|
-
response.data
|
11
|
-
end
|
12
|
-
|
13
|
-
# Public: Fetch list of invitations.
|
14
|
-
def self.invitations
|
15
|
-
request = GCRequest.new()
|
16
|
-
response = request.get("/#{class_path}/invites")
|
17
|
-
response.data
|
18
|
-
end
|
19
|
-
|
20
|
-
# Public: Fetch list of parcels.
|
21
|
-
def self.parcels
|
22
|
-
request = GCRequest.new()
|
23
|
-
Chute::GCParcel.perform(request.get("/#{class_path}/parcels"))
|
24
|
-
end
|
25
|
-
|
26
|
-
# Public: Fetch specific parcel data.
|
27
|
-
# parcel_id - String, Identifier for parcel
|
28
|
-
def self.parcel(parcel_id)
|
29
|
-
request = GCRequest.new()
|
30
|
-
parcel = Chute::GCParcel.new
|
31
|
-
parcel.perform(request.get("/#{class_path}/parcels/#{parcel_id}"))
|
32
|
-
parcel
|
33
|
-
end
|
34
|
-
|
35
|
-
# Public: Resource Name
|
36
|
-
def self.class_path
|
37
|
-
'inbox'
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
data/lib/chute/parcel.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
module Chute
|
2
|
-
class GCParcel < GCResource
|
3
|
-
attr_accessor :id,
|
4
|
-
:status,
|
5
|
-
:share_url,
|
6
|
-
:device_id,
|
7
|
-
:asset_count
|
8
|
-
|
9
|
-
def initialize(attributes = {})
|
10
|
-
super
|
11
|
-
@id = attributes[:id]
|
12
|
-
@status = attributes[:status]
|
13
|
-
@share_url = attributes[:share_url]
|
14
|
-
@device_id = attributes[:device_id]
|
15
|
-
@asset_count = attributes[:asset_count]
|
16
|
-
end
|
17
|
-
|
18
|
-
# Public: Returns pluralized name of the resource.
|
19
|
-
def resource_name
|
20
|
-
"parcels"
|
21
|
-
end
|
22
|
-
|
23
|
-
# Public: Returns pluralized name of the resource.
|
24
|
-
def class_path
|
25
|
-
"parcels"
|
26
|
-
end
|
27
|
-
|
28
|
-
# Public: Fetch parcel from its id.
|
29
|
-
# id - Integer: identifier.
|
30
|
-
#
|
31
|
-
# Example
|
32
|
-
#
|
33
|
-
# Chute::GCParcel.find_by_id(23)
|
34
|
-
# # => parcel
|
35
|
-
# # => false if not found
|
36
|
-
# Returns GCParcel
|
37
|
-
|
38
|
-
def self.find_by_id(id)
|
39
|
-
parcel = Chute::GCParcel.new
|
40
|
-
parcel.perform(get("/parcels/#{id}"))
|
41
|
-
parcel
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
data/lib/chute/resource.rb
DELETED
@@ -1,354 +0,0 @@
|
|
1
|
-
module Chute
|
2
|
-
class GCResource
|
3
|
-
attr_accessor :attributes, :errors, :meta, :prefix_options
|
4
|
-
|
5
|
-
def initialize(attributes = {})
|
6
|
-
@errors = []
|
7
|
-
@attributes = attributes
|
8
|
-
@prefix_options = {}
|
9
|
-
end
|
10
|
-
|
11
|
-
# Public: Save the resource instance
|
12
|
-
#
|
13
|
-
# Examples
|
14
|
-
#
|
15
|
-
# chute = GCChute.new(:name => "Test Chute")
|
16
|
-
# # => GCChute instance
|
17
|
-
#
|
18
|
-
# For valid sttributes
|
19
|
-
# chute.save
|
20
|
-
# # => true
|
21
|
-
# chute.id
|
22
|
-
# # => 23
|
23
|
-
# For invalid attributes
|
24
|
-
# chute.save
|
25
|
-
# # => false
|
26
|
-
# chute.id
|
27
|
-
# # => nil
|
28
|
-
# chute.errors
|
29
|
-
# # => {"name already taken"}
|
30
|
-
def save
|
31
|
-
options = {}
|
32
|
-
options["#{resource_name.singularize}"] = attributes
|
33
|
-
options.merge!(prefix_options)
|
34
|
-
perform(self.class.post("/#{resource_name}", options))
|
35
|
-
end
|
36
|
-
|
37
|
-
# Public: Update the resource instance
|
38
|
-
#
|
39
|
-
# Examples
|
40
|
-
#
|
41
|
-
# chute = GCChute.new(:name => "Test Chute")
|
42
|
-
# # => GCChute instance
|
43
|
-
# chute.save
|
44
|
-
# # => true
|
45
|
-
# chute.name = "Name Changed"
|
46
|
-
# chute.update
|
47
|
-
# # => true
|
48
|
-
# Return errors in case the request failed
|
49
|
-
|
50
|
-
def update
|
51
|
-
options = {}
|
52
|
-
options["#{resource_name.singularize}"] = attributes
|
53
|
-
options.merge!(prefix_options)
|
54
|
-
perform(self.class.put("/#{resource_name}/#{id}", options))
|
55
|
-
end
|
56
|
-
|
57
|
-
# Public: Delete a resource instance
|
58
|
-
#
|
59
|
-
# Examples
|
60
|
-
#
|
61
|
-
# chute = GCChute.new(:name => "Test Chute")
|
62
|
-
# # => GCChute instance
|
63
|
-
# chute.save
|
64
|
-
# # => true
|
65
|
-
# chute.destroy
|
66
|
-
# # => true
|
67
|
-
# Return false in case the request failed or chute not found
|
68
|
-
|
69
|
-
def destroy
|
70
|
-
response = self.class.delete("/#{resource_name}/#{id}", prefix_options)
|
71
|
-
response.is_success
|
72
|
-
end
|
73
|
-
|
74
|
-
# Public: Pluralized name of the resource.
|
75
|
-
def resource_name
|
76
|
-
raise NotImplementedError
|
77
|
-
end
|
78
|
-
|
79
|
-
# Public: Relative path to the resource path.
|
80
|
-
def resource_path
|
81
|
-
"#{resource_name}/#{id}"
|
82
|
-
end
|
83
|
-
|
84
|
-
# Public: Returns if the resource is valid.
|
85
|
-
def valid?
|
86
|
-
errors.size == 0
|
87
|
-
end
|
88
|
-
|
89
|
-
# Public: Returns if the resource is new.
|
90
|
-
def new?
|
91
|
-
!self.id.blank?
|
92
|
-
end
|
93
|
-
|
94
|
-
# Public: Fetch collection of resources.
|
95
|
-
# Implemented in the inherited classes.
|
96
|
-
|
97
|
-
def self.all
|
98
|
-
raise NotImplementedError
|
99
|
-
end
|
100
|
-
|
101
|
-
# Public: Fetch resource from its id.
|
102
|
-
# Implemented in the inherited classes.
|
103
|
-
# id - Identifier.
|
104
|
-
|
105
|
-
def self.find_by_id(id)
|
106
|
-
raise NotImplementedError
|
107
|
-
end
|
108
|
-
|
109
|
-
# Public: Search all chutes with specified key.
|
110
|
-
#
|
111
|
-
# key - key to be searched.
|
112
|
-
# value - Optional, value of the key.
|
113
|
-
#
|
114
|
-
# Example
|
115
|
-
#
|
116
|
-
# Chute::GCChute.search("title")
|
117
|
-
# # => GCollection of the chutes with a key "title" in meta data
|
118
|
-
#
|
119
|
-
# Chute::GCChute.search("title", "Testing")
|
120
|
-
# # => GCollection of the chutes with a key "title" and its value "Testing" in meta data
|
121
|
-
|
122
|
-
def self.search(key, value=nil)
|
123
|
-
self.perform(get("/#{class_path}/meta/#{key}/#{value}"))
|
124
|
-
end
|
125
|
-
|
126
|
-
# Public: Set meta data for one or more keys for the resource.
|
127
|
-
#
|
128
|
-
# data - Hash or String.
|
129
|
-
# Hash of key/value pair to be added to the meta data.
|
130
|
-
# String value for a key specified as the next parameter.
|
131
|
-
#
|
132
|
-
# key - Optional. String if a specific key value to be set.
|
133
|
-
#
|
134
|
-
# Examples
|
135
|
-
#
|
136
|
-
# chute = GCChute.find_by_id(23)
|
137
|
-
# # => GCChute instance
|
138
|
-
#
|
139
|
-
# For a key.
|
140
|
-
# chute.set_meta_data("Testing", :title)
|
141
|
-
# # => true
|
142
|
-
# chute.get_meta_data(:title)
|
143
|
-
# # => "Testing"
|
144
|
-
#
|
145
|
-
# Add a Hash to meta data.
|
146
|
-
# chute.set_meta_data({:details => "Testing the methods", :source => "Mobile"})
|
147
|
-
# # => true
|
148
|
-
# chute.get_meta_data
|
149
|
-
# # => {:title => "Testing", :details => "Testing the methods", :source => "Mobile"}
|
150
|
-
|
151
|
-
def set_meta_data(data, key=nil)
|
152
|
-
response = (key.blank? and Hash === data) ? (self.class.post("/#{resource_path}/meta", data.to_json)) : (self.class.post("/#{resource_path}/meta/#{key}", data))
|
153
|
-
if response.is_success
|
154
|
-
Hash === data ? (self.meta = data) : (self.meta[key] = data)
|
155
|
-
true
|
156
|
-
else
|
157
|
-
false
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
# Public: Get complete meta data or a specific key for the resource.
|
162
|
-
#
|
163
|
-
# key - Optional. String if a specific key value to be fetched.
|
164
|
-
#
|
165
|
-
# Examples
|
166
|
-
#
|
167
|
-
# chute = GCChute.find_by_id(23)
|
168
|
-
# # => GCChute instance
|
169
|
-
#
|
170
|
-
# With a key.
|
171
|
-
# chute.get_meta_data(:title)
|
172
|
-
# # => "Testing"
|
173
|
-
#
|
174
|
-
# Returns String value of meta data for a key
|
175
|
-
#
|
176
|
-
# Without a key.
|
177
|
-
# chute.get_meta_data
|
178
|
-
# # => {:title => "Testing", :source => "Mobile"}
|
179
|
-
#
|
180
|
-
# Returns meta data Hash without a key
|
181
|
-
|
182
|
-
def get_meta_data(key=nil)
|
183
|
-
if key.blank?
|
184
|
-
response = self.class.get("/#{resource_path}/meta")
|
185
|
-
else
|
186
|
-
response = self.class.get("/#{resource_path}/meta/#{key}")
|
187
|
-
end
|
188
|
-
if response.is_success
|
189
|
-
Hash === response.data ? (self.meta = response.data) : (self.meta[key] = response.data)
|
190
|
-
else
|
191
|
-
false
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
# Public: Deletes complete meta data or a specific key for the resource.
|
196
|
-
#
|
197
|
-
# key - Optional. String if a specific key to be deleted.
|
198
|
-
#
|
199
|
-
# Examples
|
200
|
-
#
|
201
|
-
# chute = GCChute.find_by_id(23)
|
202
|
-
# # => GCChute instance
|
203
|
-
#
|
204
|
-
# chute.get_meta_data
|
205
|
-
# # => {:title => "Testing", :source => "Mobile"}
|
206
|
-
#
|
207
|
-
# With a key.
|
208
|
-
# chute.delete_meta_data(:title)
|
209
|
-
# # => "Testing"
|
210
|
-
# chute.get_meta_data
|
211
|
-
# # => {:source => "Mobile"}
|
212
|
-
#
|
213
|
-
# Without a key.
|
214
|
-
# chute.delete_meta_data
|
215
|
-
# # => {}
|
216
|
-
# chute.get_meta_data
|
217
|
-
# # => {}
|
218
|
-
|
219
|
-
def delete_meta_data(key = nil)
|
220
|
-
if key.blank?
|
221
|
-
response = self.class.delete("/#{resource_path}/meta")
|
222
|
-
response.is_success ? self.meta = {} : false
|
223
|
-
else
|
224
|
-
response = self.class.delete("/#{resource_path}/meta/#{key}")
|
225
|
-
response.is_success ? self.meta.delete(key) : false
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
# Protected: Handles GCResponse object and updates chute instance with the updated values
|
230
|
-
#
|
231
|
-
# response - GCResponse object
|
232
|
-
#
|
233
|
-
# Returns a resource instance
|
234
|
-
def perform(response)
|
235
|
-
if response.is_success
|
236
|
-
response.data.each do |key, value|
|
237
|
-
attributes[key.to_sym] = response.data[key] if (self.instance_variable_defined?("@#{key}") rescue nil)
|
238
|
-
end
|
239
|
-
return true
|
240
|
-
else
|
241
|
-
self.errors = response.errors
|
242
|
-
return false
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
# Protected: Handles GCResponse object.
|
247
|
-
#
|
248
|
-
# response - GCResponse object
|
249
|
-
#
|
250
|
-
# Returns a collection of the resources
|
251
|
-
|
252
|
-
def self.perform(response)
|
253
|
-
collection = Chute::GCCollection.new
|
254
|
-
if response.is_success
|
255
|
-
data = Hash === response.data ? response.data["#{class_path}"] : response.data
|
256
|
-
data = [] unless (data and !data.empty?)
|
257
|
-
data.each do |item|
|
258
|
-
new_resource = self.new
|
259
|
-
item.each do |key, value|
|
260
|
-
new_resource.attributes[key.to_sym] = value if (new_resource.instance_variable_defined?("@#{key}") rescue nil)
|
261
|
-
end
|
262
|
-
collection << new_resource
|
263
|
-
end
|
264
|
-
return collection
|
265
|
-
else
|
266
|
-
debugger
|
267
|
-
raise Chute::Exceptions::InValidResponse, response.errors
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
protected
|
272
|
-
|
273
|
-
# Protected: Overriding attr_accessor.
|
274
|
-
# It keeps attributes hash in sync with class attributes.
|
275
|
-
|
276
|
-
class << self
|
277
|
-
def attr_accessor(*names)
|
278
|
-
super
|
279
|
-
unless name.match(/^x_/)
|
280
|
-
names.each do |name|
|
281
|
-
self.class_eval do
|
282
|
-
define_method name do
|
283
|
-
attributes[name]
|
284
|
-
end
|
285
|
-
|
286
|
-
define_method("#{name}=") do |value|
|
287
|
-
attributes[name] = value
|
288
|
-
end
|
289
|
-
end
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
# Protected: Custom get request to a specific URL.
|
296
|
-
#
|
297
|
-
# url - relative url.
|
298
|
-
# params - parameters hash.
|
299
|
-
# headers - headers hash.
|
300
|
-
#
|
301
|
-
# Returns a GCResponse.
|
302
|
-
|
303
|
-
def self.get(url, params=nil, headers=nil)
|
304
|
-
@request = GCRequest.new()
|
305
|
-
@request.get(url, params)
|
306
|
-
end
|
307
|
-
|
308
|
-
# Protected: Custom post request to a specific URL.
|
309
|
-
#
|
310
|
-
# url - relative url.
|
311
|
-
# params - parameters hash.
|
312
|
-
# headers - headers hash.
|
313
|
-
#
|
314
|
-
# Returns a GCResponse.
|
315
|
-
|
316
|
-
def self.post(url, params=nil, headers=nil)
|
317
|
-
@request = GCRequest.new()
|
318
|
-
@request.post(url, params)
|
319
|
-
end
|
320
|
-
|
321
|
-
# Protected: Custom put request to a specific URL.
|
322
|
-
#
|
323
|
-
# url - relative url.
|
324
|
-
# params - parameters hash.
|
325
|
-
# headers - headers hash.
|
326
|
-
#
|
327
|
-
# Returns a GCResponse.
|
328
|
-
|
329
|
-
def self.put(url, params=nil, headers=nil)
|
330
|
-
@request = GCRequest.new()
|
331
|
-
@request.put(url, params)
|
332
|
-
end
|
333
|
-
|
334
|
-
# Protected: Custom delete request to a specific URL.
|
335
|
-
#
|
336
|
-
# url - relative url.
|
337
|
-
# params - parameters hash.
|
338
|
-
# headers - headers hash.
|
339
|
-
#
|
340
|
-
# Returns a GCResponse.
|
341
|
-
|
342
|
-
def self.delete(url, params=nil, headers=nil)
|
343
|
-
@request = GCRequest.new()
|
344
|
-
@request.delete(url, params)
|
345
|
-
end
|
346
|
-
|
347
|
-
# Protected: Set whether the resource has meta data or not
|
348
|
-
|
349
|
-
def has_meta?
|
350
|
-
true
|
351
|
-
end
|
352
|
-
|
353
|
-
end
|
354
|
-
end
|