update @ OriginalPicturesController

原画の更新。

url

リクエスト

認証ユーザ
権限オーナー絵師
methodput
urlパラメータid
POSTデータjson形式またはフォームで
html
json
jsonp×

解説

OriginalPicturesEditフォームから原画を更新するための機能。

  • セッションまたは認証トークンから作家アカウントを特定する。
  • 作家アカウントから絵師データを取得する。
  • 画像受信を依頼してPOSTデータから原画データを取得する。
  • 画像ライブラリをロードする。
    • 原画データを渡す。
  • 原画モデルに編集取得を問い合わせ、その結果を対象原画として取得する。
    • 要求されたidと作家アカウントを渡す。
  • 原画モデルに上書き補充を依頼して対象原画のデータを修正する。
  • 原画モデルにデータの検証と保存を依頼する。
    • 画像ライブラリを渡す。
  • 作業結果をクライアントに戻す。

urlパラメータ

id

  • 編集の対象となる原画のid

POSTデータ

original_picture 原画情報

  • file
    • 原画となる画像ファイルのデータ。

auth_token

  • 外部からjsonで要求する場合、認証処置として認証トークンが必要。

POSTデータの変換

  • file → picture_data
    • ファイルで渡ってくるとき(フォームから)
      • ファイルからデータを読む。
    • 文字列で渡ってくるとき(jsonAPIなどから)
      • 文字列をBase64でデコードする。

戻り値

正常系

  • htmlのとき、ステータスコード302 Foundとともに、更新された原画の閲覧(show)ページに遷移する。
  • jsonのとき、ステータスコード200 OKを返す。

例外系

  • 作家アカウントでサインインしてなかった。(Devise)
    • htmlなら、ステータスコード302 Foundを返すとともに、サインインを促すページ(/users/sign_in)へ遷移する。
    • jsonなら、ステータスコード401 Unauthorizedを返すとともに、応答メッセージにUnauthorizedを返す。
  • 絵師登録してなかった。
    • htmlなら、ステータスコード302 Foundを返すとともに、絵師登録を促すページ(/artists/new)へ遷移する。
    • jsonなら、ステータスコード401 Unauthorizedを返すとともに、応答メッセージにUnauthorizedを返す。
  • 対象原画がなかった。(OriginalPictureModel)
    • htmlなら、例外404 not_foundを返す
    • jsonなら、例外404 not_foundを返す
  • 他人の原画だった。(OriginalPictureModel)
    • htmlなら、例外403 forbiddenを返す
    • jsonなら、例外403 forbiddenを返す
  • 検証、保存に失敗した
    • htmlなら、ステータスコード200 OKとともに、編集ページを描画する。
      • パラメータで渡された原画データを入力フォームに保持している。
    • jsonなら、ステータスコード422 unprocessable_entityを返す。