-module(http_server_mock@response).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/http_server_mock/response.gleam").
-export([new/0, status/2, header/3, body/2, json_body/2, delay/2, ok/0, not_found/0, server_error/0, created/0, accepted/0, no_content/0, bad_request/0, unauthorized/0, forbidden/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Builder for `ResponseDefinition` — what the server sends back when a stub\n"
" matches an incoming request.\n"
"\n"
" Start with `new()` (or one of the shorthand constructors) and pipe through\n"
" the functions you need.\n"
"\n"
" ```gleam\n"
" let resp =\n"
" response.new()\n"
" |> response.status(201)\n"
" |> response.header(\"x-request-id\", \"abc123\")\n"
" |> response.json_body(\"{\\\"id\\\":1,\\\"status\\\":\\\"created\\\"}\")\n"
" ```\n"
).
-file("src/http_server_mock/response.gleam", 21).
?DOC(" Returns a new `ResponseDefinition` with status 200, no headers, and no body.\n").
-spec new() -> http_server_mock@types:response_definition().
new() ->
{response_definition, 200, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 26).
?DOC(" Sets the HTTP status code for the response.\n").
-spec status(http_server_mock@types:response_definition(), integer()) -> http_server_mock@types:response_definition().
status(Response_def, Code) ->
{response_definition,
Code,
erlang:element(3, Response_def),
erlang:element(4, Response_def),
erlang:element(5, Response_def)}.
-file("src/http_server_mock/response.gleam", 34).
?DOC(" Adds a response header. Can be called multiple times to add several headers.\n").
-spec header(http_server_mock@types:response_definition(), binary(), binary()) -> http_server_mock@types:response_definition().
header(Response_def, Key, Value) ->
{response_definition,
erlang:element(2, Response_def),
[{Key, Value} | erlang:element(3, Response_def)],
erlang:element(4, Response_def),
erlang:element(5, Response_def)}.
-file("src/http_server_mock/response.gleam", 46).
?DOC(" Sets the response body to a plain text string.\n").
-spec body(http_server_mock@types:response_definition(), binary()) -> http_server_mock@types:response_definition().
body(Response_def, Text) ->
{response_definition,
erlang:element(2, Response_def),
erlang:element(3, Response_def),
{string_body, Text},
erlang:element(5, Response_def)}.
-file("src/http_server_mock/response.gleam", 55).
?DOC(
" Sets the response body to a JSON string and automatically adds a\n"
" `content-type: application/json` header.\n"
).
-spec json_body(http_server_mock@types:response_definition(), binary()) -> http_server_mock@types:response_definition().
json_body(Response_def, Json) ->
With_content_type = {response_definition,
erlang:element(2, Response_def),
[{<<"content-type"/utf8>>, <<"application/json"/utf8>>} |
erlang:element(3, Response_def)],
erlang:element(4, Response_def),
erlang:element(5, Response_def)},
{response_definition,
erlang:element(2, With_content_type),
erlang:element(3, With_content_type),
{raw_json_body, Json},
erlang:element(5, With_content_type)}.
-file("src/http_server_mock/response.gleam", 70).
?DOC(
" Delays the response by `milliseconds` before sending it.\n"
"\n"
" Useful for testing timeout handling or slow-network behaviour.\n"
).
-spec delay(http_server_mock@types:response_definition(), integer()) -> http_server_mock@types:response_definition().
delay(Response_def, Milliseconds) ->
{response_definition,
erlang:element(2, Response_def),
erlang:element(3, Response_def),
erlang:element(4, Response_def),
{some, Milliseconds}}.
-file("src/http_server_mock/response.gleam", 78).
?DOC(" Returns a `ResponseDefinition` for HTTP 200 OK with no body.\n").
-spec ok() -> http_server_mock@types:response_definition().
ok() ->
{response_definition, 200, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 83).
?DOC(" Returns a `ResponseDefinition` for HTTP 404 Not Found with no body.\n").
-spec not_found() -> http_server_mock@types:response_definition().
not_found() ->
{response_definition, 404, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 88).
?DOC(" Returns a `ResponseDefinition` for HTTP 500 Internal Server Error with no body.\n").
-spec server_error() -> http_server_mock@types:response_definition().
server_error() ->
{response_definition, 500, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 93).
?DOC(" Returns a `ResponseDefinition` for HTTP 201 Created with no body.\n").
-spec created() -> http_server_mock@types:response_definition().
created() ->
{response_definition, 201, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 98).
?DOC(" Returns a `ResponseDefinition` for HTTP 202 Accepted with no body.\n").
-spec accepted() -> http_server_mock@types:response_definition().
accepted() ->
{response_definition, 202, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 103).
?DOC(" Returns a `ResponseDefinition` for HTTP 204 No Content with no body.\n").
-spec no_content() -> http_server_mock@types:response_definition().
no_content() ->
{response_definition, 204, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 108).
?DOC(" Returns a `ResponseDefinition` for HTTP 400 Bad Request with no body.\n").
-spec bad_request() -> http_server_mock@types:response_definition().
bad_request() ->
{response_definition, 400, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 113).
?DOC(" Returns a `ResponseDefinition` for HTTP 401 Unauthorized with no body.\n").
-spec unauthorized() -> http_server_mock@types:response_definition().
unauthorized() ->
{response_definition, 401, [], no_body, none}.
-file("src/http_server_mock/response.gleam", 118).
?DOC(" Returns a `ResponseDefinition` for HTTP 403 Forbidden with no body.\n").
-spec forbidden() -> http_server_mock@types:response_definition().
forbidden() ->
{response_definition, 403, [], no_body, none}.