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値であるかどうかを戻す。