O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

みおぽん for CLI

2.304 visualizações

Publicada em

Publicada em: Tecnologia
  • Entre para ver os comentários

みおぽん for CLI

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

×