pub struct HttpClient {Show 13 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>>,
}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.
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>>,
) -> 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>>, ) -> 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 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.
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 Freeze for HttpClient
impl !RefUnwindSafe for HttpClient
impl Send for HttpClient
impl Sync for HttpClient
impl Unpin for HttpClient
impl UnsafeUnpin for HttpClient
impl !UnwindSafe 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