authlete 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDkwYjI3NWM2ZjgwMmIzN2FmMTM1OTQ2YTVkZTQ1N2FlYzRhZDY5Nw==
4
+ OWIyYTAxYmQyNTRlM2I3MTI0NTJkYTdhZmRmZGM3YTNiYTRiZjM4Nw==
5
5
  data.tar.gz: !binary |-
6
- Mjc4NmNjNzUwMWQyMjI1MjQ3NDUxYWFlZTVhY2VhMzQyNTI1NDE1Ng==
6
+ ODNhM2RkZGY5ZjA4MzlhZmFlOTg4MjcxYjNlZTJjYzMyYTIxYTU2Yw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzcxZTg0NDI4YTkxOWQwYWIxMmFjYWU3YjhmYWE0YTJiNWRmODQyYWEyOGQ1
10
- OWViYTczNzIyNDY2YTA0NTZiODVhY2QxMjczOTU3ZDg1N2RkODBmMDEwNDBk
11
- YWI2MjFhNTM5NzFhNWI1MjdhOWU4MWE1MGU1NDNiMmRmMmJkNGI=
9
+ MThiYzIyNmYxNDMwM2E5M2Q4Nzc2MjJiNTBmNDNjMzA5MmY2Y2I2ZGNkM2Jh
10
+ NTA2MDFhNGU2MDZlMTliMDgzNzA2N2I2NDQ4OTA2MjIwMWFiZWU1NjAyNTYw
11
+ MGFmYTY1MzgwOTYzMTU4ODk0OGFjYzhjNzQwMmZhNTI5MDg0NzE=
12
12
  data.tar.gz: !binary |-
13
- ZWFkNzY2NmE2ZDIxZGUzZWIyMjU2OTJiM2JmOTkzZDY1YzY0NDYyMGUzMzkz
14
- NDQ5YjU5ZWQ3NDk2ZDBjNjMxNmY4MWJjMzkyZjU5ODNjYmI2ZDI0YzA2NTJh
15
- YmYxNDdiNjk2NjU4ZjAyNDY3Y2FiOThhYzg2NWMxNjg2N2FjZWQ=
13
+ NzZhNzA4YzFmZmNlMTY3M2Y3MjI0NzU3NDM3Y2FkMWE0ZTgxNzRlMjRkNTU4
14
+ Y2M2NzE5MWM2MWExYjQ5YzNhZGNlYjRjNTE0NWE1NzgxYzRmM2FhMTg2OGZm
15
+ ZWYwOWYyYTZkMzIwMjZjNWI0OWUzNzcwM2ViODcwMTI2YjBkNTY=
data/lib/authlete.rb CHANGED
@@ -31,6 +31,7 @@ module Authlete
31
31
  module Model
32
32
  autoload :Scope, 'authlete/model/scope'
33
33
  autoload :Service, 'authlete/model/service'
34
+ autoload :ServiceList, 'authlete/model/service-list'
34
35
  autoload :SnsCredentials, 'authlete/model/sns-credentials'
35
36
  end
36
37
 
@@ -1,6 +1,6 @@
1
1
  # :nodoc:
2
2
  #
3
- # Copyright (C) 2014 Authlete, Inc.
3
+ # Copyright (C) 2014-2015 Authlete, Inc.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -44,6 +44,9 @@ module Authlete
44
44
  # The API secret of a service.
45
45
  attr_accessor :service_api_secret
46
46
 
47
+ # Extra HTTP headers
48
+ attr_accessor :extra_headers
49
+
47
50
  # The constructor which takes a hash containing configuration
48
51
  # parameters. Valid configuration parameter names are as follows.
49
52
  #
@@ -64,23 +67,57 @@ module Authlete
64
67
  private
65
68
 
66
69
  def call_api(method, path, content_type, payload, user, password)
70
+ headers = {}
71
+
72
+ if content_type.nil? == false
73
+ headers.merge!(:content_type => content_type)
74
+ end
75
+
76
+ if @extra_headers.nil? == false
77
+ headers.merge!(@extra_headers)
78
+ end
79
+
67
80
  response = RestClient::Request.new(
68
81
  :method => method,
69
82
  :url => @host + path,
70
- :headers => { :content_type => content_type },
83
+ :headers => headers,
71
84
  :payload => payload,
72
85
  :user => user,
73
86
  :password => password
74
87
  ).execute
75
88
 
76
- JSON.parse(response.to_str, :symbolize_names => true)
89
+ body = body_as_string(response)
90
+
91
+ if body.nil?
92
+ return nil
93
+ end
94
+
95
+ JSON.parse(response.body.to_s, :symbolize_names => true)
96
+ end
97
+
98
+ def body_as_string(response)
99
+ if response.body.nil?
100
+ return nil
101
+ end
102
+
103
+ body = response.body.to_s
104
+
105
+ if body.length == 0
106
+ return nil
107
+ end
108
+
109
+ return body
110
+ end
111
+
112
+ def call_api_service_owner(method, path, content_type, payload)
113
+ call_api(method, path, content_type, payload, @service_owner_api_key, @service_owner_api_secret)
77
114
  end
78
115
 
79
116
  def call_api_json(path, body, user, password)
80
117
  call_api(:post, path, 'application/json;charset=UTF-8', JSON.generate(body), user, password)
81
118
  end
82
119
 
83
- def call_api_json_servie_owner(path, body)
120
+ def call_api_json_service_owner(path, body)
84
121
  call_api_json(path, body, @service_owner_api_key, @service_owner_api_secret)
85
122
  end
86
123
 
@@ -106,8 +143,105 @@ module Authlete
106
143
  end
107
144
  end
108
145
 
146
+ def to_query(params)
147
+ if params.nil? || params.size == 0
148
+ return ""
149
+ end
150
+
151
+ array = []
152
+
153
+ params.each do |key, value|
154
+ array.push("#{key}=#{value}")
155
+ end
156
+
157
+ return "?" + array.join("&")
158
+ end
159
+
109
160
  public
110
161
 
162
+
163
+ # Call Authlete's /api/service/create API.
164
+ #
165
+ # <tt>service</tt> is the content of a new service to create. The type of
166
+ # the given object is either <tt>Hash</tt> or any object which
167
+ # responds to <tt>to_hash</tt>. In normal cases, Authlete::Model::Service
168
+ # (which responds to <tt>to_hash</tt>) should be used.
169
+ #
170
+ # On success, an instance of Authlete::Model::ServiceList is returned.
171
+ # On error, RestClient::Exception (of rest-client GEM) is raised.
172
+ def service_create(service)
173
+ if service.kind_of?(Hash) == false
174
+ if service.respond_to?('to_hash')
175
+ service = service.to_hash
176
+ end
177
+ end
178
+
179
+ hash = call_api_json_service_owner("/api/service/create", service)
180
+
181
+ Authlete::Model::Service.new(hash)
182
+ end
183
+
184
+ # Call Authlete's /api/service/delete/{api_key} API.
185
+ #
186
+ # On error, RestClient::Exception (of rest-client GEM) is raised.
187
+ def service_delete(api_key)
188
+ call_api_service_owner(:delete, "/api/service/delete/#{api_key}", nil, nil)
189
+ end
190
+
191
+
192
+ # Call Authlete's /api/service/get/{api_key} API.
193
+ #
194
+ # <tt>api_key</tt> is the API key of the service whose information
195
+ # you want to get.
196
+ #
197
+ # On success, an instance of Authlete::Model::Service is returned.
198
+ # On error, RestClient::Exception (of rest-client GEM) is raised.
199
+ def service_get(api_key)
200
+ hash = call_api_service_owner(:get, "/api/service/get/#{api_key}", nil, nil)
201
+
202
+ Authlete::Model::Service.new(hash)
203
+ end
204
+
205
+ # Call Authlete's /api/service/get/list API.
206
+ #
207
+ # <tt>params</tt> is an optional hash which contains query parameters
208
+ # for /api/service/get/list API. <tt>:start</tt> and <tt>:end</tt> are
209
+ # a start index (inclusive) and an end index (exclusive), respectively.
210
+ #
211
+ # On success, an instance of Authlete::Model::ServiceList is returned.
212
+ # On error, RestClient::Exception (of rest-client GEM) is raised.
213
+ def service_get_list(params = nil)
214
+ hash = call_api_service_owner(:get, "/api/service/get/list#{to_query(params)}", nil, nil)
215
+
216
+ Authlete::Model::ServiceList.new(hash)
217
+ end
218
+
219
+
220
+ # Call Authlete's /api/service/update/{api_key} API.
221
+ #
222
+ # <tt>api_key</tt> is the API key of the service whose information
223
+ # you want to get.
224
+ #
225
+ # <tt>service</tt> is the new content of the service. The type of
226
+ # the given object is either <tt>Hash</tt> or any object which
227
+ # responds to <tt>to_hash</tt>. In normal cases, Authlete::Model::Service
228
+ # (which responds to <tt>to_hash</tt>) should be used.
229
+ #
230
+ # On success, an instance of Authlete::Model::Service is returned.
231
+ # On error, RestClient::Exception (of rest-client GEM) is raised.
232
+ def service_update(api_key, service)
233
+ if service.kind_of?(Hash) == false
234
+ if service.respond_to?('to_hash')
235
+ service = service.to_hash
236
+ end
237
+ end
238
+
239
+ hash = call_api_json_service_owner("/api/service/update/#{api_key}", service)
240
+
241
+ Authlete::Model::Service.new(hash)
242
+ end
243
+
244
+
111
245
  # Call Authlete's {/auth/introspection}
112
246
  # [https://www.authlete.com/authlete_web_apis_introspection.html#auth_introspection]
113
247
  # API.
@@ -136,6 +270,7 @@ module Authlete
136
270
  Authlete::Response::IntrospectionResponse.new(hash)
137
271
  end
138
272
 
273
+
139
274
  # Ensure that the request contains a valid access token.
140
275
  #
141
276
  # This method extracts an access token from the given request based on the
@@ -0,0 +1,181 @@
1
+ # :nodoc:
2
+ #
3
+ # Copyright (C) 2015 Authlete, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require 'set'
19
+
20
+
21
+ module Authlete
22
+ module Model
23
+ class ServiceList
24
+ # The start index (inclusive) of the services in this list.
25
+ attr_accessor :start
26
+
27
+ # The end index (exclusive) of the services in this list.
28
+ attr_accessor :end
29
+
30
+ # The total count of services.
31
+ attr_accessor :totalCount
32
+ alias_method :total_count, :totalCount
33
+ alias_method :total_count=, :totalCount=
34
+
35
+ # The list of services.
36
+ attr_accessor :services
37
+
38
+ private
39
+
40
+ # Integer attributes.
41
+ INTEGER_ATTRIBUTES = ::Set.new([:start, :end, :totalCount])
42
+
43
+ # Mapping from snake cases to camel cases.
44
+ SNAKE_TO_CAMEL = { :total_count => :totalCount }
45
+
46
+ # The constructor
47
+ def initialize(hash = nil)
48
+ # Set default values to integer attributes.
49
+ INTEGER_ATTRIBUTES.each do |attr|
50
+ send("#{attr}=", 0)
51
+ end
52
+
53
+ @services = nil
54
+
55
+ # Set attribute values using the given hash.
56
+ authlete_model_serviceList_update(hash)
57
+ end
58
+
59
+ def authlete_model_serviceList_to_key(key)
60
+ key = key.to_sym
61
+
62
+ # Convert snakecase to camelcase, if necessary.
63
+ if SNAKE_TO_CAMEL.has_key?(key)
64
+ key = SNAKE_TO_CAMEL[key]
65
+ end
66
+
67
+ return key
68
+ end
69
+
70
+ def authlete_model_serviceList_simple_attribute?(key)
71
+ INTEGER_ATTRIBUTES.include?(key)
72
+ end
73
+
74
+ def authlete_model_serviceList_update(hash)
75
+ if hash.nil?
76
+ return
77
+ end
78
+
79
+ hash.each do |key, value|
80
+ key = authlete_model_serviceList_to_key(key)
81
+
82
+ # If the attribute is a simple one.
83
+ if authlete_model_serviceList_simple_attribute?(key)
84
+ send("#{key}=", value)
85
+ next
86
+ end
87
+
88
+ if key == :services
89
+ # The attribute 'services'.
90
+ @services = authlete_model_serviceList_parse_array(value) do |element|
91
+ Authlete::Model::Service.parse(element)
92
+ end
93
+ end
94
+ end
95
+
96
+ return self
97
+ end
98
+
99
+ def authlete_model_serviceList_parse_array(array)
100
+ if array.nil? or (array.kind_of?(Array) == false) or (array.length == 0)
101
+ return nil
102
+ end
103
+
104
+ elements = []
105
+
106
+ array.each do |element|
107
+ parsed_element = yield(element)
108
+
109
+ if parsed_element.nil? == false
110
+ elements.push(parsed_element)
111
+ end
112
+ end
113
+
114
+ if elements.length == 0
115
+ return nil
116
+ end
117
+
118
+ return elements
119
+ end
120
+
121
+ public
122
+
123
+ # Construct an instance from the given hash.
124
+ #
125
+ # If the given argument is nil or is not a Hash, nil is returned.
126
+ # Otherwise, ServiceList.new(hash) is returned.
127
+ def self.parse(hash)
128
+ if hash.nil? or (hash.kind_of?(Hash) == false)
129
+ return nil
130
+ end
131
+
132
+ return ServiceList.new(hash)
133
+ end
134
+
135
+ # Set attribute values using the given hash.
136
+ def update(hash)
137
+ authlete_model_serviceList_update(hash)
138
+ end
139
+
140
+ # Convert this object into a hash.
141
+ def to_hash
142
+ hash = {}
143
+
144
+ instance_variables.each do |var|
145
+ key = var.to_s.delete("@").to_sym
146
+ val = instance_variable_get(var)
147
+
148
+ if authlete_model_serviceList_simple_attribute?(key) or val.nil?
149
+ hash[key] = val
150
+ elsif val.kind_of?(Array)
151
+ hash[key] = val.map {|element| element.to_hash}
152
+ end
153
+ end
154
+
155
+ return hash
156
+ end
157
+
158
+ def [](key)
159
+ key = authlete_model_serviceList_to_key(key)
160
+
161
+ if respond_to?(key)
162
+ return send(key)
163
+ else
164
+ return nil
165
+ end
166
+ end
167
+
168
+ def []=(key, value)
169
+ key = authlete_model_serviceList_to_key(key)
170
+ method = "#{key}="
171
+
172
+ if respond_to?(method)
173
+ return send(method, value)
174
+ else
175
+ return nil
176
+ end
177
+ end
178
+ end
179
+ end
180
+ end
181
+
@@ -1,3 +1,3 @@
1
1
  module Authlete
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlete
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiko Kawasaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-25 00:00:00.000000000 Z
11
+ date: 2015-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -71,6 +71,7 @@ files:
71
71
  - lib/authlete/client.rb
72
72
  - lib/authlete/host.rb
73
73
  - lib/authlete/model/scope.rb
74
+ - lib/authlete/model/service-list.rb
74
75
  - lib/authlete/model/service.rb
75
76
  - lib/authlete/model/sns-credentials.rb
76
77
  - lib/authlete/request/authentication-callback-request.rb