Packages
stytch_codecs
1.0.0-rc1
Shared types for use with the Stytch Authentication API. Magic Link and Passcode auth supported. For use with stytch_client package.
Current section
Files
Jump to
Current section
Files
src/stytch_codecs.erl
-module(stytch_codecs).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/stytch_codecs.gleam").
-export([stytch_client_error_to_json/1, stytch_client_error_decoder/0, magic_link_login_or_create_request_to_json/1, magic_link_login_or_create_request_decoder/0, passcode_login_or_create_request_to_json/1, passcode_login_or_create_request_decoder/0, login_or_create_response_to_json/1, login_or_create_response_decoder/0, token_authenticate_request_to_json/1, token_authenticate_request_decoder/0, passcode_authenticate_request_to_json/1, passcode_authenticate_request_decoder/0, session_token_authenticate_request_to_json/1, session_token_authenticate_request_decoder/0, authenticate_response_to_json/1, authenticate_response_decoder/0, session_revoke_request_to_json/1, session_revoke_request_decoder/0, session_revoke_response_to_json/1, session_revoke_response_decoder/0, name_to_json/1, name_decoder/0, email_to_json/1, stytch_user_to_json/1, session_authenticate_response_to_json/1, email_decoder/0, stytch_user_decoder/0, session_authenticate_response_decoder/0]).
-export_type([stytch_client_error/0, magic_link_login_or_create_request/0, passcode_login_or_create_request/0, login_or_create_response/0, token_authenticate_request/0, passcode_authenticate_request/0, session_token_authenticate_request/0, authenticate_response/0, session_authenticate_response/0, session_revoke_request/0, session_revoke_response/0, stytch_user/0, name/0, email/0]).
-type stytch_client_error() :: {stytch_client_error,
integer(),
binary(),
binary(),
binary(),
binary()}.
-type magic_link_login_or_create_request() :: {magic_link_login_or_create_request,
binary()}.
-type passcode_login_or_create_request() :: {passcode_login_or_create_request,
binary()}.
-type login_or_create_response() :: {login_or_create_response,
integer(),
binary(),
binary(),
binary()}.
-type token_authenticate_request() :: {token_authenticate_request,
binary(),
integer()}.
-type passcode_authenticate_request() :: {passcode_authenticate_request,
binary(),
binary(),
integer()}.
-type session_token_authenticate_request() :: {session_token_authenticate_request,
binary(),
integer()}.
-type authenticate_response() :: {authenticate_response,
integer(),
binary(),
binary(),
binary(),
binary(),
binary()}.
-type session_authenticate_response() :: {session_authenticate_response,
integer(),
binary(),
stytch_user(),
binary(),
binary()}.
-type session_revoke_request() :: {session_revoke_request, binary()}.
-type session_revoke_response() :: {session_revoke_response,
binary(),
integer()}.
-type stytch_user() :: {stytch_user, binary(), name(), list(email())}.
-type name() :: {name, binary(), binary(), binary()}.
-type email() :: {email, binary(), binary(), boolean()}.
-file("src/stytch_codecs.gleam", 15).
-spec stytch_client_error_to_json(stytch_client_error()) -> gleam@json:json().
stytch_client_error_to_json(Stytch_client_error) ->
{stytch_client_error,
Status_code,
Request_id,
Error_type,
Error_message,
Error_url} = Stytch_client_error,
gleam@json:object(
[{<<"status_code"/utf8>>, gleam@json:int(Status_code)},
{<<"request_id"/utf8>>, gleam@json:string(Request_id)},
{<<"error_type"/utf8>>, gleam@json:string(Error_type)},
{<<"error_message"/utf8>>, gleam@json:string(Error_message)},
{<<"error_url"/utf8>>, gleam@json:string(Error_url)}]
).
-file("src/stytch_codecs.gleam", 34).
-spec stytch_client_error_decoder() -> gleam@dynamic@decode:decoder(stytch_client_error()).
stytch_client_error_decoder() ->
gleam@dynamic@decode:field(
<<"status_code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Status_code) ->
gleam@dynamic@decode:field(
<<"request_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Request_id) ->
gleam@dynamic@decode:field(
<<"error_type"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Error_type) ->
gleam@dynamic@decode:field(
<<"error_message"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Error_message) ->
gleam@dynamic@decode:field(
<<"error_url"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Error_url) ->
gleam@dynamic@decode:success(
{stytch_client_error,
Status_code,
Request_id,
Error_type,
Error_message,
Error_url}
)
end
)
end
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 57).
-spec magic_link_login_or_create_request_to_json(
magic_link_login_or_create_request()
) -> gleam@json:json().
magic_link_login_or_create_request_to_json(Magic_link_login_or_create_request) ->
{magic_link_login_or_create_request, Email} = Magic_link_login_or_create_request,
gleam@json:object([{<<"email"/utf8>>, gleam@json:string(Email)}]).
-file("src/stytch_codecs.gleam", 66).
-spec magic_link_login_or_create_request_decoder() -> gleam@dynamic@decode:decoder(magic_link_login_or_create_request()).
magic_link_login_or_create_request_decoder() ->
gleam@dynamic@decode:field(
<<"email"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Email) ->
gleam@dynamic@decode:success(
{magic_link_login_or_create_request, Email}
)
end
).
-file("src/stytch_codecs.gleam", 81).
-spec passcode_login_or_create_request_to_json(
passcode_login_or_create_request()
) -> gleam@json:json().
passcode_login_or_create_request_to_json(Passcode_login_or_create_request) ->
{passcode_login_or_create_request, Email} = Passcode_login_or_create_request,
gleam@json:object([{<<"email"/utf8>>, gleam@json:string(Email)}]).
-file("src/stytch_codecs.gleam", 90).
-spec passcode_login_or_create_request_decoder() -> gleam@dynamic@decode:decoder(passcode_login_or_create_request()).
passcode_login_or_create_request_decoder() ->
gleam@dynamic@decode:field(
<<"email"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Email) ->
gleam@dynamic@decode:success(
{passcode_login_or_create_request, Email}
)
end
).
-file("src/stytch_codecs.gleam", 110).
-spec login_or_create_response_to_json(login_or_create_response()) -> gleam@json:json().
login_or_create_response_to_json(Magic_link_login_or_create_response) ->
{login_or_create_response, Status_code, Request_id, User_id, Email_id} = Magic_link_login_or_create_response,
gleam@json:object(
[{<<"status_code"/utf8>>, gleam@json:int(Status_code)},
{<<"request_id"/utf8>>, gleam@json:string(Request_id)},
{<<"user_id"/utf8>>, gleam@json:string(User_id)},
{<<"email_id"/utf8>>, gleam@json:string(Email_id)}]
).
-file("src/stytch_codecs.gleam", 123).
-spec login_or_create_response_decoder() -> gleam@dynamic@decode:decoder(login_or_create_response()).
login_or_create_response_decoder() ->
gleam@dynamic@decode:field(
<<"status_code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Status_code) ->
gleam@dynamic@decode:field(
<<"request_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Request_id) ->
gleam@dynamic@decode:field(
<<"user_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(User_id) ->
gleam@dynamic@decode:field(
<<"email_id"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Email_id) ->
gleam@dynamic@decode:success(
{login_or_create_response,
Status_code,
Request_id,
User_id,
Email_id}
)
end
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 144).
-spec token_authenticate_request_to_json(token_authenticate_request()) -> gleam@json:json().
token_authenticate_request_to_json(Token_authenticate_request) ->
{token_authenticate_request, Token, Session_duration_minutes} = Token_authenticate_request,
gleam@json:object(
[{<<"token"/utf8>>, gleam@json:string(Token)},
{<<"session_duration_minutes"/utf8>>,
gleam@json:int(Session_duration_minutes)}]
).
-file("src/stytch_codecs.gleam", 155).
-spec token_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(token_authenticate_request()).
token_authenticate_request_decoder() ->
gleam@dynamic@decode:field(
<<"token"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Token) ->
gleam@dynamic@decode:field(
<<"session_duration_minutes"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Session_duration_minutes) ->
gleam@dynamic@decode:success(
{token_authenticate_request,
Token,
Session_duration_minutes}
)
end
)
end
).
-file("src/stytch_codecs.gleam", 175).
-spec passcode_authenticate_request_to_json(passcode_authenticate_request()) -> gleam@json:json().
passcode_authenticate_request_to_json(Passcode_authenticate_request) ->
{passcode_authenticate_request, Code, Method_id, Session_duration_minutes} = Passcode_authenticate_request,
gleam@json:object(
[{<<"code"/utf8>>, gleam@json:string(Code)},
{<<"method_id"/utf8>>, gleam@json:string(Method_id)},
{<<"session_duration_minutes"/utf8>>,
gleam@json:int(Session_duration_minutes)}]
).
-file("src/stytch_codecs.gleam", 187).
-spec passcode_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(passcode_authenticate_request()).
passcode_authenticate_request_decoder() ->
gleam@dynamic@decode:field(
<<"code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Code) ->
gleam@dynamic@decode:field(
<<"method_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Method_id) ->
gleam@dynamic@decode:field(
<<"session_duration_minutes"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Session_duration_minutes) ->
gleam@dynamic@decode:success(
{passcode_authenticate_request,
Code,
Method_id,
Session_duration_minutes}
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 211).
-spec session_token_authenticate_request_to_json(
session_token_authenticate_request()
) -> gleam@json:json().
session_token_authenticate_request_to_json(Session_token_authenticate_request) ->
{session_token_authenticate_request,
Session_token,
Session_duration_minutes} = Session_token_authenticate_request,
gleam@json:object(
[{<<"session_token"/utf8>>, gleam@json:string(Session_token)},
{<<"session_duration_minutes"/utf8>>,
gleam@json:int(Session_duration_minutes)}]
).
-file("src/stytch_codecs.gleam", 222).
-spec session_token_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(session_token_authenticate_request()).
session_token_authenticate_request_decoder() ->
gleam@dynamic@decode:field(
<<"session_token"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Session_token) ->
gleam@dynamic@decode:field(
<<"session_duration_minutes"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Session_duration_minutes) ->
gleam@dynamic@decode:success(
{session_token_authenticate_request,
Session_token,
Session_duration_minutes}
)
end
)
end
).
-file("src/stytch_codecs.gleam", 249).
-spec authenticate_response_to_json(authenticate_response()) -> gleam@json:json().
authenticate_response_to_json(Magic_link_authenticate_response) ->
{authenticate_response,
Status_code,
Request_id,
User_id,
Method_id,
Session_token,
Session_jwt} = Magic_link_authenticate_response,
gleam@json:object(
[{<<"status_code"/utf8>>, gleam@json:int(Status_code)},
{<<"request_id"/utf8>>, gleam@json:string(Request_id)},
{<<"user_id"/utf8>>, gleam@json:string(User_id)},
{<<"method_id"/utf8>>, gleam@json:string(Method_id)},
{<<"session_token"/utf8>>, gleam@json:string(Session_token)},
{<<"session_jwt"/utf8>>, gleam@json:string(Session_jwt)}]
).
-file("src/stytch_codecs.gleam", 270).
-spec authenticate_response_decoder() -> gleam@dynamic@decode:decoder(authenticate_response()).
authenticate_response_decoder() ->
gleam@dynamic@decode:field(
<<"status_code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Status_code) ->
gleam@dynamic@decode:field(
<<"request_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Request_id) ->
gleam@dynamic@decode:field(
<<"user_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(User_id) ->
gleam@dynamic@decode:field(
<<"method_id"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Method_id) ->
gleam@dynamic@decode:field(
<<"session_token"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Session_token) ->
gleam@dynamic@decode:field(
<<"session_jwt"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Session_jwt) ->
gleam@dynamic@decode:success(
{authenticate_response,
Status_code,
Request_id,
User_id,
Method_id,
Session_token,
Session_jwt}
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 342).
-spec session_revoke_request_to_json(session_revoke_request()) -> gleam@json:json().
session_revoke_request_to_json(Session_revoke_request) ->
{session_revoke_request, Session_token} = Session_revoke_request,
gleam@json:object(
[{<<"session_token"/utf8>>, gleam@json:string(Session_token)}]
).
-file("src/stytch_codecs.gleam", 351).
-spec session_revoke_request_decoder() -> gleam@dynamic@decode:decoder(session_revoke_request()).
session_revoke_request_decoder() ->
gleam@dynamic@decode:field(
<<"session_token"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Session_token) ->
gleam@dynamic@decode:success(
{session_revoke_request, Session_token}
)
end
).
-file("src/stytch_codecs.gleam", 362).
-spec session_revoke_response_to_json(session_revoke_response()) -> gleam@json:json().
session_revoke_response_to_json(Session_revoke_response) ->
{session_revoke_response, Request_id, Status_code} = Session_revoke_response,
gleam@json:object(
[{<<"request_id"/utf8>>, gleam@json:string(Request_id)},
{<<"status_code"/utf8>>, gleam@json:int(Status_code)}]
).
-file("src/stytch_codecs.gleam", 372).
-spec session_revoke_response_decoder() -> gleam@dynamic@decode:decoder(session_revoke_response()).
session_revoke_response_decoder() ->
gleam@dynamic@decode:field(
<<"request_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Request_id) ->
gleam@dynamic@decode:field(
<<"status_code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Status_code) ->
gleam@dynamic@decode:success(
{session_revoke_response, Request_id, Status_code}
)
end
)
end
).
-file("src/stytch_codecs.gleam", 407).
-spec name_to_json(name()) -> gleam@json:json().
name_to_json(Name) ->
{name, First_name, Middle_name, Last_name} = Name,
gleam@json:object(
[{<<"first_name"/utf8>>, gleam@json:string(First_name)},
{<<"middle_name"/utf8>>, gleam@json:string(Middle_name)},
{<<"last_name"/utf8>>, gleam@json:string(Last_name)}]
).
-file("src/stytch_codecs.gleam", 416).
-spec name_decoder() -> gleam@dynamic@decode:decoder(name()).
name_decoder() ->
gleam@dynamic@decode:field(
<<"first_name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(First_name) ->
gleam@dynamic@decode:field(
<<"middle_name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Middle_name) ->
gleam@dynamic@decode:field(
<<"last_name"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Last_name) ->
gleam@dynamic@decode:success(
{name, First_name, Middle_name, Last_name}
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 431).
-spec email_to_json(email()) -> gleam@json:json().
email_to_json(Email) ->
{email, Email_id, Email@1, Verified} = Email,
gleam@json:object(
[{<<"email_id"/utf8>>, gleam@json:string(Email_id)},
{<<"email"/utf8>>, gleam@json:string(Email@1)},
{<<"verified"/utf8>>, gleam@json:bool(Verified)}]
).
-file("src/stytch_codecs.gleam", 385).
-spec stytch_user_to_json(stytch_user()) -> gleam@json:json().
stytch_user_to_json(Stytch_user) ->
{stytch_user, User_id, Name, Emails} = Stytch_user,
gleam@json:object(
[{<<"user_id"/utf8>>, gleam@json:string(User_id)},
{<<"name"/utf8>>, name_to_json(Name)},
{<<"emails"/utf8>>, gleam@json:array(Emails, fun email_to_json/1)}]
).
-file("src/stytch_codecs.gleam", 298).
-spec session_authenticate_response_to_json(session_authenticate_response()) -> gleam@json:json().
session_authenticate_response_to_json(Session_authenticate_response) ->
{session_authenticate_response,
Status_code,
Request_id,
User,
Session_token,
Session_jwt} = Session_authenticate_response,
gleam@json:object(
[{<<"status_code"/utf8>>, gleam@json:int(Status_code)},
{<<"request_id"/utf8>>, gleam@json:string(Request_id)},
{<<"user"/utf8>>, stytch_user_to_json(User)},
{<<"session_token"/utf8>>, gleam@json:string(Session_token)},
{<<"session_jwt"/utf8>>, gleam@json:string(Session_jwt)}]
).
-file("src/stytch_codecs.gleam", 440).
-spec email_decoder() -> gleam@dynamic@decode:decoder(email()).
email_decoder() ->
gleam@dynamic@decode:field(
<<"email_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Email_id) ->
gleam@dynamic@decode:field(
<<"email"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Email) ->
gleam@dynamic@decode:field(
<<"verified"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(Verified) ->
gleam@dynamic@decode:success(
{email, Email_id, Email, Verified}
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 394).
-spec stytch_user_decoder() -> gleam@dynamic@decode:decoder(stytch_user()).
stytch_user_decoder() ->
gleam@dynamic@decode:field(
<<"user_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(User_id) ->
gleam@dynamic@decode:field(
<<"name"/utf8>>,
name_decoder(),
fun(Name) ->
gleam@dynamic@decode:field(
<<"emails"/utf8>>,
gleam@dynamic@decode:list(email_decoder()),
fun(Emails) ->
gleam@dynamic@decode:success(
{stytch_user, User_id, Name, Emails}
)
end
)
end
)
end
).
-file("src/stytch_codecs.gleam", 317).
-spec session_authenticate_response_decoder() -> gleam@dynamic@decode:decoder(session_authenticate_response()).
session_authenticate_response_decoder() ->
gleam@dynamic@decode:field(
<<"status_code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Status_code) ->
gleam@dynamic@decode:field(
<<"request_id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Request_id) ->
gleam@dynamic@decode:field(
<<"user"/utf8>>,
stytch_user_decoder(),
fun(User) ->
gleam@dynamic@decode:field(
<<"session_token"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Session_token) ->
gleam@dynamic@decode:field(
<<"session_jwt"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Session_jwt) ->
gleam@dynamic@decode:success(
{session_authenticate_response,
Status_code,
Request_id,
User,
Session_token,
Session_jwt}
)
end
)
end
)
end
)
end
)
end
).