pub struct HttpClient {Show 15 fields
pub http_client: Client,
pub address: String,
pub authorization: Option<Arc<String>>,
pub user_agent: Option<String>,
pub x_title: Option<String>,
pub http_referer: Option<String>,
pub x_github_authorization: Option<Arc<String>>,
pub x_openrouter_authorization: Option<Arc<String>>,
pub x_mcp_authorization: Option<Arc<HashMap<String, String>>>,
pub x_viewer_signature: Option<Arc<String>>,
pub x_viewer_address: Option<Arc<String>>,
pub x_commit_author_name: Option<Arc<String>>,
pub x_commit_author_email: Option<Arc<String>>,
pub agent_instance_hierarchy: Option<Arc<String>>,
pub mcp_session_id: Option<Arc<String>>,
}Expand description
HTTP client for making requests to the ObjectiveAI API.
Handles authentication, request building, and response parsing for both unary and streaming endpoints.
§Example
let client = HttpClient::new(
reqwest::Client::new(),
None, // Use default address
Some("your-api-key"),
None, // user_agent
None, // x_title
None, // http_referer
None, // x_github_authorization
None, // x_openrouter_authorization
None, // x_mcp_authorization
None, // x_viewer_signature
None, // x_viewer_address
None, // x_commit_author_name
None, // x_commit_author_email
);Fields§
§http_client: ClientThe underlying reqwest HTTP client.
address: StringBase URL for API requests. Defaults to https://api.objectiveai.dev.
API key for authentication. Sent as Bearer token in Authorization header.
user_agent: Option<String>Value for the User-Agent header.
x_title: Option<String>Value for the X-Title header.
http_referer: Option<String>Value for both Referer and HTTP-Referer headers.
Value for the X-GITHUB-AUTHORIZATION header.
Value for the X-OPENROUTER-AUTHORIZATION header.
Values for the X-MCP-AUTHORIZATION header (JSON-encoded).
x_viewer_signature: Option<Arc<String>>Value for the X-VIEWER-SIGNATURE header.
x_viewer_address: Option<Arc<String>>Value for the X-VIEWER-ADDRESS header.
Value for the X-COMMIT-AUTHOR-NAME header.
Value for the X-COMMIT-AUTHOR-EMAIL header.
agent_instance_hierarchy: Option<Arc<String>>Value for the X-OBJECTIVEAI-AGENT-INSTANCE-HIERARCHY header.
mcp_session_id: Option<Arc<String>>Value for the Mcp-Session-Id header — propagated through to
objectiveai-mcp so server-side tool invocations see a stable
per-session id. See objectiveai_sdk::mcp::MCP_SESSION_ID_HEADER.
Implementations§
Source§impl HttpClient
impl HttpClient
Sourcepub fn new(
http_client: Client,
address: Option<impl Into<String>>,
authorization: Option<impl Into<String>>,
user_agent: Option<impl Into<String>>,
x_title: Option<impl Into<String>>,
http_referer: Option<impl Into<String>>,
x_github_authorization: Option<impl Into<String>>,
x_openrouter_authorization: Option<impl Into<String>>,
x_mcp_authorization: Option<HashMap<String, String>>,
x_viewer_signature: Option<impl Into<String>>,
x_viewer_address: Option<impl Into<String>>,
x_commit_author_name: Option<impl Into<String>>,
x_commit_author_email: Option<impl Into<String>>,
agent_instance_hierarchy: Option<impl Into<String>>,
mcp_session_id: Option<impl Into<String>>,
) -> Self
pub fn new( http_client: Client, address: Option<impl Into<String>>, authorization: Option<impl Into<String>>, user_agent: Option<impl Into<String>>, x_title: Option<impl Into<String>>, http_referer: Option<impl Into<String>>, x_github_authorization: Option<impl Into<String>>, x_openrouter_authorization: Option<impl Into<String>>, x_mcp_authorization: Option<HashMap<String, String>>, x_viewer_signature: Option<impl Into<String>>, x_viewer_address: Option<impl Into<String>>, x_commit_author_name: Option<impl Into<String>>, x_commit_author_email: Option<impl Into<String>>, agent_instance_hierarchy: Option<impl Into<String>>, mcp_session_id: Option<impl Into<String>>, ) -> Self
Creates a new HTTP client.
§Arguments
http_client- The reqwest client to use for requestsaddress- Base URL for API requests (defaults tohttps://api.objectiveai.dev)authorization- API key for authenticationuser_agent- Optional User-Agent header valuex_title- Optional X-Title header valuehttp_referer- Optional Referer header valuex_github_authorization- Optional X-GITHUB-AUTHORIZATION header valuex_openrouter_authorization- Optional X-OPENROUTER-AUTHORIZATION header valuex_mcp_authorization- Optional X-MCP-AUTHORIZATION header value (HashMap)x_viewer_signature- Optional X-VIEWER-SIGNATURE header valuex_viewer_address- Optional X-VIEWER-ADDRESS header valuex_commit_author_name- Optional X-COMMIT-AUTHOR-NAME header valuex_commit_author_email- Optional X-COMMIT-AUTHOR-EMAIL header valueagent_instance_hierarchy- Optional X-OBJECTIVEAI-AGENT-INSTANCE-HIERARCHY header valuemcp_session_id- Optional Mcp-Session-Id header value
Sourcepub async fn send_unary<T: DeserializeOwned + Send + 'static>(
&self,
method: Method,
path: impl AsRef<str>,
body: Option<impl Serialize>,
) -> Result<T, HttpError>
pub async fn send_unary<T: DeserializeOwned + Send + 'static>( &self, method: Method, path: impl AsRef<str>, body: Option<impl Serialize>, ) -> Result<T, HttpError>
Sends a unary (request-response) API call and deserializes the response.
§Type Parameters
T- The expected response type to deserialize into
§Errors
Returns super::HttpError if the request fails, returns a non-success status,
or the response cannot be deserialized.
Sourcepub async fn send_unary_no_response(
&self,
method: Method,
path: impl AsRef<str>,
body: Option<impl Serialize>,
) -> Result<(), HttpError>
pub async fn send_unary_no_response( &self, method: Method, path: impl AsRef<str>, body: Option<impl Serialize>, ) -> Result<(), HttpError>
Sends a unary API call that expects no response body.
Useful for DELETE or other operations that only return a status code.
§Errors
Returns super::HttpError if the request fails or returns a non-success status.
Sourcepub async fn send_streaming<T: DeserializeOwned + Send + 'static, P: AsRef<str> + Send, B: Serialize + Send>(
&self,
method: Method,
path: P,
body: Option<B>,
) -> Result<impl Stream<Item = Result<T, HttpError>> + Send + 'static + use<T, P, B>, HttpError>
pub async fn send_streaming<T: DeserializeOwned + Send + 'static, P: AsRef<str> + Send, B: Serialize + Send>( &self, method: Method, path: P, body: Option<B>, ) -> Result<impl Stream<Item = Result<T, HttpError>> + Send + 'static + use<T, P, B>, HttpError>
Sends a streaming API call using Server-Sent Events (SSE).
Returns a stream of deserialized chunks. The stream automatically handles:
- SSE
[DONE]messages (filtered out) - Comment lines starting with
:(filtered out) - Empty data lines (filtered out)
- API errors embedded in stream data
§Type Parameters
T- The expected chunk type to deserialize each SSE message into
§Errors
Returns super::HttpError if the stream cannot be established.
Sourcepub async fn send_streaming_ws<Chunk, B, H, P>(
&self,
method: Method,
path: P,
body: B,
handler: H,
) -> Result<(impl Stream<Item = Result<Chunk, HttpError>> + Send + Unpin + 'static + use<Chunk, B, H, P>, Notifier), HttpError>where
Chunk: DeserializeOwned + Send + 'static,
B: Serialize + Send + 'static,
H: McpHandler,
P: AsRef<str>,
pub async fn send_streaming_ws<Chunk, B, H, P>(
&self,
method: Method,
path: P,
body: B,
handler: H,
) -> Result<(impl Stream<Item = Result<Chunk, HttpError>> + Send + Unpin + 'static + use<Chunk, B, H, P>, Notifier), HttpError>where
Chunk: DeserializeOwned + Send + 'static,
B: Serialize + Send + 'static,
H: McpHandler,
P: AsRef<str>,
WebSocket variant of Self::send_streaming. Opens a WS to
the configured address, sends body as the first text
frame, then demultiplexes inbound frames into:
- Chunk frames (yielded on the returned
Stream). client_response::Responseframes (routed to thesuper::Notifier’s pending-id map).server_request::Requestframes (dispatched tohandler; the result is written back as aserver_response::Responseechoing the request id).
Both the returned Stream and the returned super::Notifier
share the underlying WebSocket: dropping both stops the demux
task and closes the connection cleanly. Dropping only one
keeps the WS alive — useful when a caller wants to send
notifies after the chunk stream has finished, or vice-versa.
Trait Implementations§
Source§impl Clone for HttpClient
impl Clone for HttpClient
Source§fn clone(&self) -> HttpClient
fn clone(&self) -> HttpClient
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for HttpClient
impl !UnwindSafe for HttpClient
impl Freeze for HttpClient
impl Send for HttpClient
impl Sync for HttpClient
impl Unpin for HttpClient
impl UnsafeUnpin for HttpClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more