Download - みおぽん for CLI
![Page 1: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/1.jpg)
みおぽんFORCLIemasaka
![Page 2: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/2.jpg)
IIJMIO(BIC)のSIM買った
![Page 3: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/3.jpg)
選定理由サブなので維持費が安いこと2桁MBのファイルをやりとりすることがあるので速いこと⾼速モードをオンオフできること
![Page 4: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/4.jpg)
IIJMIOクーポンスイッチ(みおぽん)
(GooglePlayより)
![Page 5: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/5.jpg)
みおぽんAPI公開
![Page 6: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/6.jpg)
仕様を⾒てみるみおぽん相当の情報の取得·設定ができるWebAPIクーポン情報取得、クーポンON/OF、パケット履歴取得
割と素直なRESTfulAPI
![Page 7: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/7.jpg)
CLI(コマンドライン)ツールを作れる!?
![Page 8: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/8.jpg)
がアクセストークンを得てからみおぽんAPIを呼ぶ仕組みアクセストークンはOAuth2.0のImplicitGrantで取得する
(公式ドキュメントより)
![Page 9: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/9.jpg)
問題IIJmioサイトのWebフォームからIDとパスワードを⼊⼒しなくてはならないアクセストークンは、フォームから送信して返ってくるリダイレクトURLに⼊るブラウザからCLIツールに渡すのは困難
![Page 10: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/10.jpg)
それMECHANIZEで?Mechanize:ブラウザみたいにリンクやフォームを操作するPerl·Python·RubyライブラリIIJmioのWebフォームは、formタグではなくてXHRでデータを送信
Mechanize系は使えない
![Page 11: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/11.jpg)
PHANTOMJSPhantomJS:画⾯を持たないCLIのWebブラウザー
QtWebkitベースJavaScriptも動く制御もJavaScriptでWebアプリのテストや、スクレイピングなどで使われている
![Page 12: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/12.jpg)
サンプル公式サイトより
console.log('Loadingawebpage');varpage=require('webpage').create();varurl='http://www.phantomjs.org/';page.open(url,function(status){//Pageisloaded!phantom.exit();});
![Page 13: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/13.jpg)
作ったmiopon-cli
使うまでの前提がいろいろあるので、まだ⾃分専⽤https://github.com/emasaka/miopon-cli
![Page 14: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/14.jpg)
クーポン情報取得$mioponinfo
![Page 15: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/15.jpg)
パケットログ取得$mioponlog
![Page 16: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/16.jpg)
クーポンのオンオフ$mioponon$mioponoff
![Page 17: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/17.jpg)
JSONでの出⼒も$mioponinfo--format=json|jq-C.|less-R
jq便利
![Page 18: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/18.jpg)
構成lib/miopon/api.rb(Miopon::API)
RESTfulAPIと⼀対⼀対応するクラスlib/miopon/api/auth.rb(Miopon::API::Auth)
PhantomJSでアクセストークンを取得するクラスlib/miopon/api/auth_by_phantomjs.js
PhantomJSのスクリプトlib/miopon/client.rb(Miopon::Client)
Miopon::APIを呼ぶときに認証処理をするラッパークラスほかでも使えるライブラリとして作った
![Page 19: みおぽん for CLI](https://reader034.vdocuments.net/reader034/viewer/2022050815/5482a1fbb07959490c8b4872/html5/thumbnails/19.jpg)
構成(つづき)lib/miopon_cli(MioponCLI)
miopon-cli本体設定ファイルとか出⼒フォーマットとか
bin/miopon実⾏するコマンドMioponCLIを呼び出してるだけThor利⽤