oaspec/transport
Pure, runtime-agnostic transport contract for generated OpenAPI clients.
Generated client code depends on this module instead of any concrete
HTTP runtime. Adapters (e.g. oaspec/httpc, oaspec/fetch) bridge
Send to a real runtime; tests can plug in arbitrary fake Send
values via oaspec/mock.
Types
pub type Body {
EmptyBody
TextBody(String)
BytesBody(BitArray)
}
Constructors
-
EmptyBody -
TextBody(String) -
BytesBody(BitArray)
pub opaque type Credentials
pub type Method {
Get
Post
Put
Delete
Patch
Head
Options
Trace
Connect
}
Constructors
-
Get -
Post -
Put -
Delete -
Patch -
Head -
Options -
Trace -
Connect
pub type Request {
Request(
method: Method,
base_url: option.Option(String),
path: String,
query: List(#(String, String)),
headers: List(#(String, String)),
body: Body,
security: List(SecurityAlternative),
)
}
Constructors
-
Request( method: Method, base_url: option.Option(String), path: String, query: List(#(String, String)), headers: List(#(String, String)), body: Body, security: List(SecurityAlternative), )
pub type SecurityAlternative {
SecurityAlternative(requirements: List(SecurityRequirement))
}
Constructors
-
SecurityAlternative(requirements: List(SecurityRequirement))
pub type SecurityRequirement {
ApiKeyHeader(scheme_name: String, header_name: String)
ApiKeyQuery(scheme_name: String, query_name: String)
ApiKeyCookie(scheme_name: String, cookie_name: String)
HttpAuthorization(scheme_name: String, prefix: String)
}
Constructors
-
ApiKeyHeader(scheme_name: String, header_name: String) -
ApiKeyQuery(scheme_name: String, query_name: String) -
ApiKeyCookie(scheme_name: String, cookie_name: String) -
HttpAuthorization(scheme_name: String, prefix: String)
pub type Send =
fn(Request) -> Result(Response, TransportError)
pub type TransportError {
ConnectionFailed(detail: String)
Timeout
InvalidBaseUrl(detail: String)
TlsFailure(detail: String)
Unsupported(detail: String)
}
Constructors
-
ConnectionFailed(detail: String) -
Timeout -
InvalidBaseUrl(detail: String) -
TlsFailure(detail: String) -
Unsupported(detail: String)
Values
pub fn credentials() -> Credentials
pub fn with_api_key(
creds creds: Credentials,
scheme_name scheme_name: String,
value value: String,
) -> Credentials
pub fn with_base_url(
send send: fn(Request) -> Result(Response, TransportError),
base_url base_url: String,
) -> fn(Request) -> Result(Response, TransportError)
pub fn with_basic_auth(
creds creds: Credentials,
scheme_name scheme_name: String,
value value: String,
) -> Credentials
pub fn with_bearer_token(
creds creds: Credentials,
scheme_name scheme_name: String,
token token: String,
) -> Credentials
pub fn with_default_header(
send send: fn(Request) -> Result(Response, TransportError),
name name: String,
value value: String,
) -> fn(Request) -> Result(Response, TransportError)
pub fn with_default_headers(
send send: fn(Request) -> Result(Response, TransportError),
headers headers: List(#(String, String)),
) -> fn(Request) -> Result(Response, TransportError)
pub fn with_digest_auth(
creds creds: Credentials,
scheme_name scheme_name: String,
value value: String,
) -> Credentials
pub fn with_security(
send send: fn(Request) -> Result(Response, TransportError),
credentials creds: Credentials,
) -> fn(Request) -> Result(Response, TransportError)