oaspec/codegen/client_request
Types
Map from a parameter’s (wire name, location) pair to its deduped Gleam
field name within an operation. Used to keep type emission, server
dispatch, and client builders in sync when two parameters in different
locations would otherwise collide on the same snake_case field.
pub type ParamFieldNames =
dict.Dict(#(String, spec.ParameterIn), String)
Values
pub fn build_param_field_names(
operation: spec.Operation(spec.Resolved),
) -> dict.Dict(#(String, spec.ParameterIn), String)
Build a (name, in) → deduped-field-name map for a single operation.
The dedup order matches the spec’s parameter order, so all codegen
callers that use this map agree on the final field names.
pub fn build_param_list(
path_params: List(spec.Parameter(spec.Resolved)),
query_params: List(spec.Parameter(spec.Resolved)),
header_params: List(spec.Parameter(spec.Resolved)),
cookie_params: List(spec.Parameter(spec.Resolved)),
operation: spec.Operation(spec.Resolved),
op_id: String,
ctx: context.Context,
) -> String
Build parameter list for function signature.
pub fn build_request_object_call_args(
path_params: List(spec.Parameter(spec.Resolved)),
query_params: List(spec.Parameter(spec.Resolved)),
header_params: List(spec.Parameter(spec.Resolved)),
cookie_params: List(spec.Parameter(spec.Resolved)),
operation: spec.Operation(spec.Resolved),
) -> option.Option(String)
Build the call-site argument list for the _with_request wrapper that
unpacks a request_types.*Request record into the flat client function
it delegates to. Returns None if the operation uses a multi-content
body (where the flat API also takes a content_type argument that the
request type does not carry).
pub fn field_name_for(
map: dict.Dict(#(String, spec.ParameterIn), String),
param: spec.Parameter(spec.Resolved),
) -> String
Look up the deduped field name for a parameter. The map is built from the same operation the caller iterates, so the lookup always hits — the fallback is just a safety net that keeps the output valid Gleam if a caller ever passes a mismatched map.
pub fn generate_deep_object_query_param(
sb: string_tree.StringTree,
param: spec.Parameter(spec.Resolved),
param_name: String,
ctx: context.Context,
) -> string_tree.StringTree
Generate deepObject-style query parameters: key[prop]=value for each property.
pub fn generate_delimited_array_query_param(
sb: string_tree.StringTree,
param: spec.Parameter(spec.Resolved),
param_name: String,
joiner: String,
ctx: context.Context,
) -> string_tree.StringTree
Generate non-exploded delimited array query parameter: tags=a|b|c (pipeDelimited) or tags=a%20b%20c (spaceDelimited).
pub fn generate_exploded_array_query_param(
sb: string_tree.StringTree,
param: spec.Parameter(spec.Resolved),
param_name: String,
ctx: context.Context,
) -> string_tree.StringTree
Generate exploded array query parameter: tags=a&tags=b
pub fn generate_form_urlencoded_body(
sb: string_tree.StringTree,
rb: spec.RequestBody(spec.Resolved),
op_id: String,
ctx: context.Context,
) -> string_tree.StringTree
Generate application/x-www-form-urlencoded body encoding in the client function.
pub fn generate_multipart_body(
sb: string_tree.StringTree,
rb: spec.RequestBody(spec.Resolved),
op_id: String,
ctx: context.Context,
) -> string_tree.StringTree
Generate multipart/form-data body encoding in the client function.
pub fn get_body_encode_expr(
rb: spec.RequestBody(spec.Resolved),
op_id: String,
ctx: context.Context,
) -> String
Get the encode expression for a request body.
pub fn get_body_type(
rb: spec.RequestBody(spec.Resolved),
op_id: String,
) -> String
Get the Gleam type for a request body parameter.
pub fn is_deep_object_param(
param: spec.Parameter(spec.Resolved),
ctx: context.Context,
) -> Bool
Check if a parameter uses deepObject style with an object schema.
pub fn is_delimited_array_param(
param: spec.Parameter(spec.Resolved),
ctx: context.Context,
) -> option.Option(String)
Returns Some(joiner) if the parameter is a non-exploded delimited array (pipeDelimited or spaceDelimited). Returns None for everything else including form arrays — we keep that on the existing path.
pub fn is_exploded_array_param(
param: spec.Parameter(spec.Resolved),
ctx: context.Context,
) -> Bool
Check if a parameter is an array with explode behavior. OpenAPI default: style: form has explode: true by default.
pub fn multipart_field_is_binary(
field_schema: schema.SchemaRef,
ctx: context.Context,
) -> Bool
pub fn param_to_string_expr(
param: spec.Parameter(spec.Resolved),
param_name: String,
ctx: context.Context,
) -> String
Convert a parameter value to its String representation for URL/header use.
pub fn to_str_for_optional_value(
param: spec.Parameter(spec.Resolved),
ctx: context.Context,
) -> String
Convert an optional param value (bound to v) to string.
pub fn to_str_for_required(
param: spec.Parameter(spec.Resolved),
param_name: String,
ctx: context.Context,
) -> String
Convert a required param to string for query building.