authlete 0.1.1 → 0.1.2

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 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