6.54. kink/http/RESP¶
6.54.1. resp型¶
respはHTTPレスポンスである。
6.54.1.1. Resp.req¶
reqメソッドは、Respを直接生成したreq値を戻す。
レスポンスがリダイレクトの結果だった場合、このメソッドは、リダイレクトのつらなりの最後のリクエストのreqを戻す。
6.54.1.2. Resp.status¶
statusは、レスポンスのステータスコードを整数のnum値として戻す。
6.54.1.3. Resp.headers¶
headersは、レスポンスのヘッダフィールドのmapを戻す。
mapのキーは、ヘッダフィールドの名前のstr値である。[RFC 9110 - 5.1]で規定されているとおり、キーの大文字、小文字は区別されない。
mapの値は、フィールド名に対応するフィールド値のstr値からなるvecである。[0x80, 0xff]の範囲のバイト([RFC 9110]のobs-text)は、U+0080-U+00ffにマッピングされる。
6.54.1.4. Resp.content¶
contentは、resp_content値を戻す。
メディアタイプ
レスポンスがContent-Typeヘッダフィールドを複数持っている場合(これは[RFC 9110]によればエラーである)、結果のresp_content値のmedia_type属性は、構文的に妥当な最後の値になる。
構文的に妥当なContent-Typeフィールドの値がひとつもない場合、結果のresp_content値のmedia_type属性は、application/octet-streamにフォールバックする。この動作は、[RFC 9110 - 8.3]が「してもよい」 (MAY) と規定しているふるまいである。
6.54.1.5. Resp.redirect_count¶
redirect_countは、Respまでのリダイレクトの回数を戻す。
結果はResp.req.redirect_countと同じになる。
6.54.1.6. Resp.close(...[$config={}])¶
closeメソッドは、レスポンスの入力ストリームを閉じる。
コンフィグメソッド:
• C.on_success($success): default = {}
• C.on_error($error): default = {(:Exc) Exc.raise }
C.stream_respオプションを指定してRespが作られた場合は、clsoeメソッドで入力ストリームを閉じなければならない。
C.stream_respが指定されなかった場合も、closeメソッドを呼び出すことはできるが、必要ではない。
結果
ストリームが成功裏に閉じられたら、closeは$successを引数なしで末尾呼び出しする
IOエラーが起きたら、closeは、exceptionを渡して$errorを末尾呼び出しする。
事前条件
$successはサンクでなければならない。
$errorはexceptionを取る関数でなければならない。
6.54.2. RESP.new(Req Status Content ...[$config={}])¶
newは、新しいresp値を戻す。
コンフィグメソッド:
• C.header(Header_name Header_val): 複数回呼び出し可能
(Header_name, Header_val)の対は、レスポンスのヘッダエントリとして追加される。
事前条件
Reqはreq値でなければならない。
Statusは、[100, 599]の範囲の整数のnum値でなければならない。
Contentは、resp_content値でなければならない。
Header_nameは、[RFC 9110]で定義された「token」のstr値でなければならない。
Header_valは、/|[\x21-\x7e\x80-\xff]([\t\x20-\x7e\x80-\xff]*[\x21-\x7e\x80-\xff])?/に合致するstrでなければならない。これは、[RFC 9110]に定義された「field-value」が、ISO-8859-1文字コードでデコードされたものと想定している。
6.54.3. RESP.is?(Val)¶
is?は、Valがresp値であるかどうかを戻す。