soracom 1.0.7 → 1.0.8

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57df35f62c81cb3a157bb2d5353d9439c2a6ce6e
4
- data.tar.gz: f53b40f0ace909563c0e6425dacbabfb85139a0b
3
+ metadata.gz: 276f913a7cb1bc4256133a313758c3ff0bf0586a
4
+ data.tar.gz: ae10d579fd37349651954bb0a3f348d48685c700
5
5
  SHA512:
6
- metadata.gz: 8efff1f9e5c60cb6a3f19c73a6e94cfa054b25de791fdfd517a8891f83f2b4b42251b23a139beea033a9b3c349cee8e782a273588164e2cce8fffccf5846a760
7
- data.tar.gz: 69df12aca1baff26ca6befd7afb8258d36fb1330bd3f4aafe83b8de2ba846c317b44bc6c605fdb9c9fff3bf84b0c663dcdbabcf861e20d7a367a964b8f92a503
6
+ metadata.gz: 73d03edb0033258e9392cbab65718396e9592f1ff12e42dfa88d63ba67acbaf8638cb07a82845de3d3af23e461176cb145dcfb982bc231d40acf654e8961cd96
7
+ data.tar.gz: 6f260fa99d3bb56ce471617f0d8b413ce7a0ce7ff2d2cb7ab49aa9d62dbfb2ac33144e1a325fbfa07f5297b6cc21c3ab843e421c10c000bd57686a3d8f0929e3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- soracom (1.0.7)
4
+ soracom (1.0.8)
5
5
  io-console
6
6
  thor
7
7
 
@@ -44,4 +44,4 @@ DEPENDENCIES
44
44
  soracom!
45
45
 
46
46
  BUNDLED WITH
47
- 1.10.6
47
+ 1.11.2
data/lib/soracom/cli.rb CHANGED
@@ -116,7 +116,7 @@ module SoracomCli
116
116
  puts JSON.pretty_generate(client.unset_group(options[:imsi]))
117
117
  end
118
118
  end
119
-
119
+
120
120
  # Group related commands
121
121
  class Group < Thor
122
122
  desc 'list', 'list groups'
@@ -125,28 +125,28 @@ module SoracomCli
125
125
  client = Soracom::Client.new
126
126
  puts JSON.pretty_generate(client.list_groups(options.group_id))
127
127
  end
128
-
128
+
129
129
  desc 'list_subscribers', 'list subscriber in a group'
130
130
  option :group_id, type: :string, required:true, desc: 'group ID'
131
131
  def list_subscribers
132
132
  client = Soracom::Client.new
133
133
  puts JSON.pretty_generate(client.list_subscribers_in_group(options.group_id))
134
134
  end
135
-
135
+
136
136
  desc 'create', 'create group'
137
137
  option :tags, type: :hash, desc: 'group tags'
138
138
  def create
139
139
  client = Soracom::Client.new
140
140
  puts JSON.pretty_generate(client.create_group(options.tags))
141
141
  end
142
-
142
+
143
143
  desc 'delete_group', 'delete a group'
144
144
  option :group_id, type: :string, required:true, desc: 'group ID'
145
145
  def delete
146
146
  client = Soracom::Client.new
147
147
  puts JSON.pretty_generate(client.delete_group(options.group_id))
148
148
  end
149
-
149
+
150
150
  desc 'update_configuration', 'update configuration parameter'
151
151
  option :group_id, type: :string, required:true, desc: 'group ID'
152
152
  option :namespace, type: :string, required:true, desc: 'namespace of the parameter'
@@ -155,7 +155,7 @@ module SoracomCli
155
155
  client = Soracom::Client.new
156
156
  puts JSON.pretty_generate(client.update_group_configuration(options.group_id, options.namespace, options.params))
157
157
  end
158
-
158
+
159
159
  desc 'delete_configuration', 'delete configuration parameter'
160
160
  option :group_id, type: :string, required:true, desc: 'group ID'
161
161
  option :namespace, type: :string, required:true, desc: 'namespace of the parameter'
@@ -172,7 +172,7 @@ module SoracomCli
172
172
  client = Soracom::Client.new
173
173
  puts JSON.pretty_generate(client.update_group_tags(options.group_id, options.tags))
174
174
  end
175
-
175
+
176
176
  desc 'delete_tag', 'delete group tag'
177
177
  option :group_id, type: :string, required:true, desc: 'group ID'
178
178
  option :name, type: :string, required:true, desc: 'tag name to delete'
@@ -181,7 +181,7 @@ module SoracomCli
181
181
  puts JSON.pretty_generate(client.delete_group_tags(options.group_id, options.name))
182
182
  end
183
183
  end
184
-
184
+
185
185
  # EventHandler related commands
186
186
  class EventHandler < Thor
187
187
  desc 'list', 'list event handlers'
@@ -192,21 +192,21 @@ module SoracomCli
192
192
  client = Soracom::Client.new
193
193
  puts JSON.pretty_generate(client.list_event_handlers(Hash[options.map { |k, v| [k.to_sym, v] }]))
194
194
  end
195
-
195
+
196
196
  desc 'create', 'create event handler'
197
197
  option :req, type: :string, desc: 'JSON string of event handler configuration'
198
198
  def create
199
199
  client = Soracom::Client.new
200
200
  puts JSON.pretty_generate(client.create_event_handler(options.req))
201
201
  end
202
-
202
+
203
203
  desc 'delete', 'delete event handler'
204
204
  option :handler_id, type: :string, required:true, desc: 'Event Handler ID'
205
205
  def delete
206
206
  client = Soracom::Client.new
207
207
  puts JSON.pretty_generate(client.delete_event_handler(options.handler_id))
208
208
  end
209
-
209
+
210
210
  desc 'update', 'update event handler configuration'
211
211
  option :handler_id, type: :string, required:true, desc: 'Event Handler ID'
212
212
  option :req, type: :string, desc: 'JSON string of event handler configuration'
@@ -215,7 +215,7 @@ module SoracomCli
215
215
  puts JSON.pretty_generate(client.update_event_handler(options.handler_id, options.req))
216
216
  end
217
217
  end
218
-
218
+
219
219
  # Stats related commands
220
220
  class Stats < Thor
221
221
  desc 'get_air_usage', 'get air usage per Subscriber(SIM)'
@@ -228,7 +228,7 @@ module SoracomCli
228
228
  data = client.get_air_usage(Hash[options.map { |k, v| [k.to_sym, v] }])
229
229
  puts JSON.pretty_generate(data)
230
230
  end
231
-
231
+
232
232
  desc 'get_beam_usage', 'get beam usage per Subscriber(SIM)'
233
233
  option :imsi, type: :string, required: true, desc: '15 digits SIM unique ID'
234
234
  option :from, type: :numeric, required: false, desc: 'UNIX time in seconds when stat window begins'
@@ -239,7 +239,7 @@ module SoracomCli
239
239
  data = client.get_beam_usage(Hash[options.map { |k, v| [k.to_sym, v] }])
240
240
  puts JSON.pretty_generate(data)
241
241
  end
242
-
242
+
243
243
  desc 'export_air_usage', 'export air usage for all Subscriber(SIM)s in csv format'
244
244
  option :from, type: :numeric, required: false, desc: 'UNIX time in seconds when stat window begins'
245
245
  option :to, type: :numeric, required: false, desc: 'UNIX time in seconds when stat window ends'
@@ -249,7 +249,7 @@ module SoracomCli
249
249
  csv = client.export_air_usage(Hash[options.map { |k, v| [k.to_sym, v] }])
250
250
  puts csv
251
251
  end
252
-
252
+
253
253
  desc 'export_beam_usage', 'export beam usage for all Subscriber(SIM)s in csv format'
254
254
  option :from, type: :numeric, required: false, desc: 'UNIX time in seconds when stat window begins'
255
255
  option :to, type: :numeric, required: false, desc: 'UNIX time in seconds when stat window ends'
@@ -261,6 +261,30 @@ module SoracomCli
261
261
  end
262
262
  end
263
263
 
264
+ class Operator < Thor
265
+ desc 'create_auth_key', 'list auth keys'
266
+ def list_auth_keys
267
+ client = Soracom::Client.new
268
+ data = client.list_auth_keys()
269
+ puts JSON.pretty_generate(data)
270
+ end
271
+
272
+ desc 'create_auth_key', 'create new auth key'
273
+ def create_auth_key
274
+ client = Soracom::Client.new
275
+ data = client.create_auth_key()
276
+ puts JSON.pretty_generate(data)
277
+ end
278
+
279
+ desc 'delete_auth_key', 'delete existing auth key'
280
+ option :auth_key_id, type: :string, required: true, desc: 'auth key id starting "keyId-"'
281
+ def delete_auth_key
282
+ client = Soracom::Client.new
283
+ data = client.delete_auth_key(options.auth_key_id)
284
+ puts JSON.pretty_generate(data)
285
+ end
286
+ end
287
+
264
288
  # Using Thor for CLI Implementation
265
289
  class CLI < Thor
266
290
  register(Subscriber, 'subscriber', 'subscriber <command>', 'Subscriber related operations')
@@ -268,6 +292,7 @@ module SoracomCli
268
292
  register(Group, 'group', 'group <command>', 'Group related operations')
269
293
  register(EventHandler, 'event_handler', 'event_handler <command>', 'Event Handler related operations')
270
294
  register(Stats, 'stats', 'stats <command>', 'Stats related operations')
295
+ register(Operator, 'operator', 'operator <command>', 'Operator related operations')
271
296
 
272
297
  desc 'auth', 'test authentication'
273
298
  def auth
@@ -12,14 +12,20 @@ module Soracom
12
12
  # Soracom API Client
13
13
  class Client
14
14
  # 設定されなかった場合には、環境変数から認証情報を取得
15
- def initialize(email:ENV['SORACOM_EMAIL'], password:ENV['SORACOM_PASSWORD'], endpoint:ENV['SORACOM_ENDPOINT'])
15
+ def initialize(
16
+ endpoint:ENV['SORACOM_ENDPOINT'],
17
+ email:ENV['SORACOM_EMAIL'], password:ENV['SORACOM_PASSWORD'],
18
+ auth_key_id:ENV['SORACOM_AUTH_KEY_ID'], auth_key:ENV['SORACOM_AUTH_KEY']
19
+ )
16
20
  @log = Logger.new(STDERR)
17
21
  @log.level = ENV['SORACOM_DEBUG'] ? Logger::DEBUG : Logger::WARN
18
22
  begin
19
- if email && password
23
+ if auth_key_id && auth_key
24
+ @auth = auth_by_key(auth_key_id, auth_key, endpoint)
25
+ elsif email && password
20
26
  @auth = auth(email, password, endpoint)
21
27
  else
22
- fail 'Could not find any credentials(email & password)'
28
+ fail 'Could not find any credentials(authKeyId & authKey or email & password)'
23
29
  end
24
30
  rescue => evar
25
31
  abort 'ERROR: ' + evar.to_s
@@ -306,6 +312,18 @@ module Soracom
306
312
  "https://soracom.zendesk.com/access/jwt?jwt=#{res['token']}&return_to=#{return_to}"
307
313
  end
308
314
 
315
+ def list_auth_keys()
316
+ @api.get(path: "/operators/#{@auth[:operatorId]}/auth_keys")
317
+ end
318
+
319
+ def create_auth_key()
320
+ @api.post(path: "/operators/#{@auth[:operatorId]}/auth_keys")
321
+ end
322
+
323
+ def delete_auth_key(auth_key_id)
324
+ @api.delete(path: "/operators/#{@auth[:operatorId]}/auth_keys/#{auth_key_id}")
325
+ end
326
+
309
327
  # APIキーを取得
310
328
  def api_key
311
329
  @auth[:apiKey]
@@ -335,6 +353,18 @@ module Soracom
335
353
  Hash[JSON.parse(res.body).map { |k, v| [k.to_sym, v] }]
336
354
  end
337
355
 
356
+ # authenticate by email and password
357
+ def auth_by_key(auth_key_id, auth_key, endpoint)
358
+ endpoint = API_BASE_URL if endpoint.nil?
359
+ res = RestClient.post endpoint + '/auth',
360
+ { authKeyId: auth_key_id, authKey: auth_key },
361
+ 'Content-Type' => 'application/json',
362
+ 'Accept' => 'application/json'
363
+ result = JSON.parse(res.body)
364
+ fail result['message'] if res.code != '200'
365
+ Hash[JSON.parse(res.body).map { |k, v| [k.to_sym, v] }]
366
+ end
367
+
338
368
  def extract_jwt(jwt)
339
369
  encoded = jwt.split('.')[1]
340
370
  encoded += '=' * (4 - encoded.length % 4) # add padding(=) for Base64
@@ -1,4 +1,4 @@
1
1
  # version info
2
2
  module Soracom
3
- VERSION = '1.0.7'
3
+ VERSION = '1.0.8'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soracom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - MATSUI, Motokatsu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-30 00:00:00.000000000 Z
11
+ date: 2016-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 2.0.14
148
+ rubygems_version: 2.0.14.1
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: SORACOM API Client library and tool