APIデータと送信ツール

Curlから送信

Curlを使えばJsonデータをAPI経由で送信できるが、案外めんどい。dbを削除するたび認証トークンが変わったりして。

一般的な目視テストのためのデータと、それの認証トークン書き換えツールをrubyで書いてspec/cliに用意したよ。

認証トークン書き換え

reauth.rbが、それだよ。

ruby reauth.rb
で使い方が出る。

>ruby reauth.rb
reauth.rb subdir new_auth_token

subdirってのはspec/cliの下のディレクトリ名。認証トークンはユーザごとに違うから、分けて処理するためにパラメータにした。たとえばyasとかadminって指定する。

対象ファイルはサブディレクトリのさらに下のディレクトリの全ファイル。コントローラごとにディレクトリを分けてデータを管理することを想定している。たとえばyasさんのコマなら、yas/panels/にデータを用意してあるとする。

new_auth_tokenの部分に新しい認証トークンを書く。認証トークンはhttp://localhost:3000/home/configure で作成・確認する。

現状のテストデータなら、こうする。

ruby reauth.rb u xxxxxxxxxxxxxxxxxxxx
path:
C:/Sites/v04story/spec/cli/u/*
search dir:
C:/Sites/v04story/spec/cli/u/comics
replace:
C:/Sites/v04story/spec/cli/u/comics/create.json
search dir:
C:/Sites/v04story/spec/cli/u/original_pictures
replace:
C:/Sites/v04story/spec/cli/u/original_pictures/create.json

投稿

投稿などの操作はCurlからコマンドを叩くだけなんだが、だけって言っても案外めんどい。特にデータのファイル名あたりが。

そこで、投稿処理するrubyスクリプトを用意したよ。

ruby create.rb
で使い方が出る。

>ruby create.rb
create.rb subdir controller {filename=create.json}

サブディレクトリはreauth.rbと同様。controllerは操作したいコントローラ名を書く。ここで指定したコントローラ名をディレクトリ名としてサブディレクトリに連結する。つまり、ユーザyasがコマ投稿するなら、

ruby create.rb yas panels 
とすると、spec/cli/yas/panels/にあるファイルを探す。

第三パラメータのfilenameは送信データだが、ファイル名ではない。キー名と言ったところか。penjiroとすると、penjiro_create.jsonを送信する。なぜファイル名じゃないかというと、投稿だけでなく更新や削除もあるから。省略可能でcreate.jsonが補充される。