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