みおぽん for cli

19
みおぽん FOR CLI emasaka

Upload: emasaka

Post on 05-Dec-2014

996 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: みおぽん for CLI

みおぽんFORCLIemasaka

Page 2: みおぽん for CLI

IIJMIO(BIC)のSIM買った

Page 3: みおぽん for CLI

選定理由サブなので維持費が安いこと2桁MBのファイルをやりとりすることがあるので速いこと⾼速モードをオンオフできること

Page 4: みおぽん for CLI

IIJMIOクーポンスイッチ(みおぽん)

(GooglePlayより)

Page 5: みおぽん for CLI

みおぽんAPI公開

Page 6: みおぽん for CLI

仕様を⾒てみるみおぽん相当の情報の取得·設定ができるWebAPIクーポン情報取得、クーポンON/OF、パケット履歴取得

割と素直なRESTfulAPI

Page 7: みおぽん for CLI

CLI(コマンドライン)ツールを作れる!?

Page 8: みおぽん for CLI

がアクセストークンを得てからみおぽんAPIを呼ぶ仕組みアクセストークンはOAuth2.0のImplicitGrantで取得する

(公式ドキュメントより)

Page 9: みおぽん for CLI

問題IIJmioサイトのWebフォームからIDとパスワードを⼊⼒しなくてはならないアクセストークンは、フォームから送信して返ってくるリダイレクトURLに⼊るブラウザからCLIツールに渡すのは困難

Page 10: みおぽん for CLI

それMECHANIZEで?Mechanize:ブラウザみたいにリンクやフォームを操作するPerl·Python·RubyライブラリIIJmioのWebフォームは、formタグではなくてXHRでデータを送信

Mechanize系は使えない

Page 11: みおぽん for CLI

PHANTOMJSPhantomJS:画⾯を持たないCLIのWebブラウザー

QtWebkitベースJavaScriptも動く制御もJavaScriptでWebアプリのテストや、スクレイピングなどで使われている

Page 12: みおぽん for CLI

サンプル公式サイトより

console.log('Loadingawebpage');varpage=require('webpage').create();varurl='http://www.phantomjs.org/';page.open(url,function(status){//Pageisloaded!phantom.exit();});

Page 13: みおぽん for CLI

作ったmiopon-cli

使うまでの前提がいろいろあるので、まだ⾃分専⽤https://github.com/emasaka/miopon-cli

Page 14: みおぽん for CLI

クーポン情報取得$mioponinfo

Page 15: みおぽん for CLI

パケットログ取得$mioponlog

Page 16: みおぽん for CLI

クーポンのオンオフ$mioponon$mioponoff

Page 17: みおぽん for CLI

JSONでの出⼒も$mioponinfo--format=json|jq-C.|less-R

jq便利

Page 18: みおぽん for CLI

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

構成(つづき)lib/miopon_cli(MioponCLI)

miopon-cli本体設定ファイルとか出⼒フォーマットとか

bin/miopon実⾏するコマンドMioponCLIを呼び出してるだけThor利⽤