iijmio-cli 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 957f8d19bf7f31aae9d158026862dfc97c187494
4
+ data.tar.gz: 995adabe98ca4ccbd173b34362d0fc4860617853
5
+ SHA512:
6
+ metadata.gz: 9baab4e178443eaf37e3069258915ac3716561ad88159f760366cedfd45703b318e5f649c6d7ea8f3c3725d1930f53ef52124cdb608106d992379d6bd0229937
7
+ data.tar.gz: 1498b64fa58ce030e4e2d1bf6150fc2ad59bbb58961d67c9e01c88e803dc26da5a97e0eae351a16386bb2d7010d7656110c72124e1908358c01759fbc981dc24
@@ -0,0 +1,5 @@
1
+ .bundle
2
+ Gemfile.lock
3
+ pkg
4
+ spec/reports
5
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+ source "https://rubygems.org"
3
+
4
+ # Specify your gem's dependencies in iijmio-cli.gemspec
5
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Takahiro INOUE
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,75 @@
1
+ # Iijmio::CLI
2
+
3
+ CLI tools for [iijmio API](https://api.iijmio.jp).
4
+
5
+ ## Installation
6
+
7
+ ```
8
+ $ gem install "iijmio-cli"
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ 設定
14
+
15
+ ```
16
+ $ iijmio config
17
+
18
+ --------------------------------------------------------------------------------
19
+ - iijmio-cli configuration setup
20
+ --------------------------------------------------------------------------------
21
+ Please input your IIJmio developer ID (default: '5XKr784JyAXAAfAWCbI').
22
+ [ENTER]
23
+ Please input your IIJmio username (default: '').
24
+ xxxx # NOTE: NOT mail address.
25
+ Please input your IIJmio password (default: '').
26
+ [ENTER]
27
+
28
+ ... Completed !!
29
+ ```
30
+
31
+ 認証
32
+
33
+ ```
34
+ $ iijmio auth
35
+
36
+ Please input your IIJmio password.
37
+
38
+ ... Completed !!
39
+ ```
40
+
41
+ クーポン切り替え(1分間に1回まで)
42
+
43
+ ```
44
+ $ iijmio ls
45
+ + Family Share (ServiceCode: hddxxxxxxxx)
46
+ - クーポン残量: xx.xx [GB]
47
+ + SIMs
48
+ + ID: hdoxxxxxxxx
49
+ - TEL: xxx-xxxx-xxxx
50
+ - クーポン: 無効
51
+
52
+ $ iijmio switch lte hdoxxxxxxxx # NOTE: クーポンを有効にする
53
+
54
+ $ iijmio ls
55
+ + Family Share (ServiceCode: hddxxxxxxxx)
56
+ - クーポン残量: xx.xx [GB]
57
+ + SIMs
58
+ + ID: hdo24188760
59
+ - TEL: xxx-xxxx-xxxx
60
+ - クーポン: 有効
61
+
62
+ $ iijmio switch low hdoxxxxxxxx # NOTE: クーポンを無効にする
63
+
64
+ $ iijmio ls
65
+ + Family Share (ServiceCode: hddxxxxxxxx)
66
+ - クーポン残量: xx.xx [GB]
67
+ + SIMs
68
+ + ID: hdoxxxxxxxx
69
+ - TEL: xxx-xxxx-xxxx
70
+ - クーポン: 無効
71
+ ```
72
+
73
+ ## License
74
+
75
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ ::RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "iijmio/cli"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require "iijmio/cli"
3
+
4
+ ::Iijmio::CLI::ImplementedCLI.start
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ lib = ::File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'iijmio/cli/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "iijmio-cli"
8
+ spec.version = ::Iijmio::CLI::VERSION
9
+ spec.authors = ["Takahiro INOUE"]
10
+ spec.email = ["takahiro.inoue@mail.3dcg-arts.net"]
11
+
12
+ spec.summary = %q{CLI tools for iijmio API.}
13
+ spec.description = %q{CLI tools for iijmio API.}
14
+ spec.homepage = "https://github.com/hinata/iijmio-cli"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "capybara"
23
+ spec.add_dependency "faraday"
24
+ spec.add_dependency "nokogiri"
25
+ spec.add_dependency "phantomjs"
26
+ spec.add_dependency "poltergeist"
27
+ spec.add_dependency "thor"
28
+
29
+ spec.add_development_dependency "bundler"
30
+ spec.add_development_dependency "rake"
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+ end
@@ -0,0 +1,349 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "iijmio/cli/version"
3
+ require "thor"
4
+
5
+ module ::Iijmio
6
+ module CLI
7
+ class ImplementedCLI < ::Thor
8
+ =begin
9
+ @function
10
+ =end
11
+ desc %{config [[developer_id|username|password|default_sim] [configuration]]}, %{No description.}
12
+ def config *args
13
+ case args.length
14
+ when 0
15
+ require "pp"
16
+ pp ::Iijmio::CLI.get_config
17
+ when 2
18
+ case args[ 0 ]
19
+ when %{developer_id}
20
+ ::Iijmio::CLI.set_config({
21
+ developer_id: args[ 1 ]
22
+ })
23
+ when %{username}
24
+ ::Iijmio::CLI.set_config({
25
+ username: args[ 1 ]
26
+ })
27
+ when %{password}
28
+ ::Iijmio::CLI.set_config({
29
+ password: args[ 1 ]
30
+ })
31
+ when %{default_sim}
32
+ ::Iijmio::CLI.set_config({
33
+ default_sim: args[ 1 ]
34
+ })
35
+ end
36
+ end
37
+ end
38
+
39
+ =begin
40
+ @function
41
+ =end
42
+ desc %{auth [IIJmio developer ID (option)] [IIJmio username (option)] [IIJmio password (option)]}, %{No description.}
43
+ def auth *args
44
+ developer_id = args[ 0 ] || ::Iijmio::CLI.get_config[ :developer_id ]
45
+ username = args[ 1 ] || ::Iijmio::CLI.get_config[ :username ]
46
+ password = args[ 2 ] || ::Iijmio::CLI.get_config[ :password ]
47
+
48
+ if developer_id == %{}
49
+ puts %{Please input your IIJmio developer ID.}
50
+
51
+ developer_id = STDIN.gets
52
+ end
53
+
54
+ if username == %{}
55
+ puts %{Please input your IIJmio username.}
56
+
57
+ username = STDIN.gets
58
+ end
59
+
60
+ if password == %{}
61
+ puts %{Please input your IIJmio password.}
62
+
63
+ password = STDIN.noecho(&:gets)
64
+ end
65
+
66
+ developer_id.strip!
67
+ username.strip!
68
+ password.strip!
69
+
70
+ ::Capybara.register_driver :poltergeist do | application |
71
+ ::Capybara::Poltergeist::Driver.new(application, js_errors: true, phantomjs: ::Phantomjs.path, timeout: 3000)
72
+ end
73
+
74
+ # NOTE: This Webrick is slient HTTP server.
75
+ web_server_thread =
76
+ ::Thread.start {
77
+ server =
78
+ ::WEBrick::HTTPServer.new(
79
+ BindAddress: %{127.0.0.1},
80
+ Port: %{8888},
81
+ AccessLog: [],
82
+ Logger: ::WEBrick::Log.new(%{/dev/null})
83
+ )
84
+
85
+ server.mount_proc("/") { | request, response |
86
+ response.body = %{}
87
+ }
88
+
89
+ server.start
90
+ }
91
+
92
+ session = ::Capybara::Session.new(:poltergeist)
93
+ session.driver.headers = {
94
+ "User-Agent": ::Iijmio::CLI.user_agent
95
+ }
96
+
97
+ session.visit(%{https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&client_id=#{ developer_id }&state=#{ ::SecureRandom.hex(16) }&redirect_uri=http%3A%2F%2F127.0.0.1%3A8888})
98
+
99
+ username_element = session.find(%{input[id=username]})
100
+ username_element.native.send_key(username) if username_element.value == %{}
101
+
102
+ password_element = session.find(%{input[id=password]})
103
+ password_element.native.send_key(password) if password_element.value == %{}
104
+
105
+ link_element = session.find(%{a[id*=submit]})
106
+ link_element.click
107
+
108
+ sleep 1
109
+
110
+ link_element = session.find(%{a[id*=confir]})
111
+ link_element.click
112
+
113
+ sleep 1
114
+
115
+ if session.current_url =~ /access_token=(\w+)/
116
+ ::Iijmio::CLI.set_config({
117
+ token: $1
118
+ })
119
+ end
120
+
121
+ web_server_thread.kill
122
+
123
+ puts %{}
124
+ puts %{... Completed !!}
125
+ puts %{}
126
+ end
127
+
128
+ =begin
129
+ @function
130
+ =end
131
+ desc %{ls}, %{No description.}
132
+ def ls *args
133
+ response =
134
+ ::Iijmio::CLI.get_iijmio_rest_api
135
+
136
+ =begin
137
+ + Family Share (ServiceCode: xxxx)
138
+ - クーポン残量: 10.00 [GB]
139
+ =end
140
+
141
+ response[ %{couponInfo} ].each do | hdd_info |
142
+ plan = hdd_info[ %{plan} ]
143
+ hdd_service_code = hdd_info[ %{hddServiceCode} ]
144
+ coupon = hdd_info[ %{coupon} ]
145
+
146
+ puts %{+ #{ plan } (ServiceCode: #{ hdd_service_code })}
147
+ puts %{ - クーポン残量: #{ sprintf(%{%.2f}, coupon.map { | v | v[ %{volume} ] }.reduce(:+) / 1000.0) } [GB]}
148
+
149
+ =begin
150
+ + SIMs
151
+ + ID: xxxx
152
+ - TEL: 000-0000-0000
153
+ - クーポン: 無効
154
+ + ID: xxxx
155
+ - TEL: 000-0000-0000
156
+ - クーポン: 無効
157
+ + ID: xxxx
158
+ - TEL: 000-0000-0000
159
+ - クーポン: 無効
160
+ =end
161
+
162
+ puts %{+ SIMs}
163
+
164
+ hdd_info[ %{hdoInfo} ].each do | hdo_info |
165
+ hdo_service_code = hdo_info[ %{hdoServiceCode} ]
166
+ tel = hdo_info[ %{number} ]
167
+ coupon_use = hdo_info[ %{couponUse} ]
168
+
169
+ puts %{ + ID: #{ hdo_service_code }}
170
+ puts %{ - TEL: #{ %{#{$1}-#{$2}-#{$3}} if tel =~ /([0-9]{3})([0-9]{4})([0-9]{4})/ }}
171
+ puts %{ - クーポン: #{ coupon_use ? %{有効} : %{無効} }}
172
+ end
173
+ end
174
+ end
175
+
176
+ =begin
177
+ @function
178
+ =end
179
+ desc %{switch [low|lte (requirement)] [SIM ID (option)]}, %{No description.}
180
+ def switch *args
181
+ if args.length < 1 ||
182
+ args.length > 2
183
+ STDERR.puts %{Invalid args.}
184
+ exit 1
185
+ end
186
+
187
+ coupon_use = args[ 0 ].downcase != %{low}
188
+ hdo_service_code = args[ 1 ] || ::Iijmio::CLI.get_config[ :default_sim ]
189
+
190
+ if hdo_service_code !~ /[a-z]{1,3}[0-9]{1,9}/ # FIXME: It's vague validation.
191
+ STDERR.puts %{Invalid SIM ID (#{ hdoServiceCode }).}
192
+ exit 1
193
+ end
194
+
195
+ ::Iijmio::CLI.put_iijmio_rest_api({
196
+ couponInfo: [ { hdoInfo: [ { couponUse: coupon_use, hdoServiceCode: hdo_service_code } ] } ]
197
+ })
198
+ end
199
+ end
200
+
201
+ =begin
202
+ @function
203
+ @private
204
+ @static
205
+ =end
206
+ private
207
+ def self.config_path
208
+ return ::File.join(::Dir.home, %{.iijmio-cli})
209
+ end
210
+
211
+ =begin
212
+ @function
213
+ @private
214
+ @static
215
+ =end
216
+ private
217
+ def self.get_config
218
+ if !::File.exists?(::Iijmio::CLI.config_path)
219
+ puts %{-} * 80
220
+ puts %{- iijmio-cli configuration setup}
221
+ puts %{-} * 80
222
+
223
+ puts %{Please input your IIJmio developer ID (default: '5XKr784JyAXAAfAWCbI').}
224
+
225
+ developer_id = STDIN.gets
226
+ developer_id.strip!
227
+
228
+ puts %{Please input your IIJmio username (default: '').}
229
+
230
+ username = STDIN.gets
231
+ username.strip!
232
+
233
+ puts %{Please input your IIJmio password (default: '').}
234
+
235
+ password = STDIN.noecho(&:gets)
236
+ password.strip!
237
+
238
+ if developer_id == %{}
239
+ developer_id = %{5XKr784JyAXAAfAWCbI}
240
+ end
241
+
242
+ if username == %{}
243
+ username = %{}
244
+ end
245
+
246
+ if password == %{}
247
+ password = %{}
248
+ end
249
+
250
+ ::File.open ::Iijmio::CLI.config_path, %{wb} do | config_file |
251
+ config_file.write({
252
+ developer_id: developer_id,
253
+ username: username,
254
+ password: password
255
+ }.to_yaml)
256
+ end
257
+
258
+ puts %{}
259
+ puts %{... Completed !!}
260
+ puts %{}
261
+ end
262
+
263
+ return ::YAML.load_file(::Iijmio::CLI.config_path)
264
+ end
265
+
266
+ =begin
267
+ @function
268
+ @private
269
+ @static
270
+ =end
271
+ private
272
+ def self.set_config options = {}
273
+ config = {}
274
+ config[ :developer_id ] = options[ :developer_id ] || ::Iijmio::CLI.get_config[ :developer_id ]
275
+ config[ :username ] = options[ :username ] || ::Iijmio::CLI.get_config[ :username ]
276
+ config[ :password ] = options[ :password ] || ::Iijmio::CLI.get_config[ :password ]
277
+ config[ :token ] = options[ :token ] || ::Iijmio::CLI.get_config[ :token ]
278
+ config[ :default_sim ] = options[ :default_sim ] || ::Iijmio::CLI.get_config[ :default_sim ]
279
+
280
+ ::File.open ::Iijmio::CLI.config_path, %{wb} do | config_file |
281
+ config_file.write(config.to_yaml)
282
+ end
283
+ end
284
+
285
+ =begin
286
+ @function
287
+ @private
288
+ @static
289
+ =end
290
+ private
291
+ def self.user_agent
292
+ return %{iijmio-cli (#{ ::Iijmio::CLI::VERSION })}
293
+ end
294
+
295
+ =begin
296
+ @function
297
+ @private
298
+ @static
299
+ =end
300
+ private
301
+ def self.get_iijmio_rest_api
302
+ http_client = ::Faraday.new(url: %{https://api.iijmio.jp})
303
+ http_client.headers[ :user_agent ] = ::Iijmio::CLI.user_agent
304
+
305
+ response =
306
+ http_client.get do | request |
307
+ request.url(%{/mobile/d/v1/coupon/})
308
+ request.headers[ %{X-IIJmio-Developer} ] = ::Iijmio::CLI.get_config[ :developer_id ]
309
+ request.headers[ %{X-IIJmio-Authorization} ] = ::Iijmio::CLI.get_config[ :token ]
310
+ request.headers[ %{Content-Type} ] = %{application/json}
311
+ end
312
+
313
+ if response.status != 200
314
+ STDERR.puts %{Could NOT get correct response (HTTP STATUS: #{ response.status }).}
315
+ exit 1
316
+ end
317
+
318
+ return ::JSON.parse(response.body)
319
+ end
320
+
321
+ =begin
322
+ @function
323
+ @private
324
+ @static
325
+ =end
326
+ private
327
+ def self.put_iijmio_rest_api data = {}
328
+ http_client = ::Faraday.new(url: %{https://api.iijmio.jp})
329
+ http_client.headers[ :user_agent ] = ::Iijmio::CLI.user_agent
330
+
331
+ response =
332
+ http_client.put do | request |
333
+ request.url(%{/mobile/d/v1/coupon/})
334
+ request.headers[ %{X-IIJmio-Developer} ] = ::Iijmio::CLI.get_config[ :developer_id ]
335
+ request.headers[ %{X-IIJmio-Authorization} ] = ::Iijmio::CLI.get_config[ :token ]
336
+ request.headers[ %{Content-Type} ] = %{application/json}
337
+
338
+ request.body = data.to_json # NOTE: See https://api.iijmio.jp
339
+ end
340
+
341
+ if response.status != 200
342
+ STDERR.puts %{Could NOT get correct response (HTTP STATUS: #{ response.status }).}
343
+ exit 1
344
+ end
345
+
346
+ return ::JSON.parse(response.body)
347
+ end
348
+ end
349
+ end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "capybara"
3
+ require "capybara/poltergeist"
4
+ require "faraday"
5
+ require "json"
6
+ require "phantomjs"
7
+ require "securerandom"
8
+ require "webrick"
9
+ require "yaml"
10
+
11
+ module ::Iijmio
12
+ module CLI
13
+ VERSION = %{0.0.1}
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: iijmio-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Takahiro INOUE
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-04-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: phantomjs
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: poltergeist
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ description: CLI tools for iijmio API.
140
+ email:
141
+ - takahiro.inoue@mail.3dcg-arts.net
142
+ executables:
143
+ - iijmio
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".gitignore"
148
+ - ".rspec"
149
+ - Gemfile
150
+ - LICENSE.txt
151
+ - README.md
152
+ - Rakefile
153
+ - bin/console
154
+ - bin/setup
155
+ - exe/iijmio
156
+ - iijmio-cli.gemspec
157
+ - lib/iijmio/cli.rb
158
+ - lib/iijmio/cli/version.rb
159
+ homepage: https://github.com/hinata/iijmio-cli
160
+ licenses:
161
+ - MIT
162
+ metadata: {}
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 2.5.1
180
+ signing_key:
181
+ specification_version: 4
182
+ summary: CLI tools for iijmio API.
183
+ test_files: []