claude_api/blocking/
messages.rs1use crate::error::Result;
4use crate::messages::request::{CountTokensRequest, CreateMessageRequest};
5use crate::messages::response::{CountTokensResponse, Message};
6
7use super::Client;
8
9pub struct Messages<'a> {
13 client: &'a Client,
14}
15
16impl<'a> Messages<'a> {
17 pub(crate) fn new(client: &'a Client) -> Self {
18 Self { client }
19 }
20
21 pub fn create(&self, request: CreateMessageRequest) -> Result<Message> {
24 self.create_with_beta(request, &[])
25 }
26
27 #[allow(clippy::needless_pass_by_value)]
30 pub fn create_with_beta(
31 &self,
32 request: CreateMessageRequest,
33 betas: &[&str],
34 ) -> Result<Message> {
35 let request_ref = &request;
36 self.client.execute_with_retry(
37 || {
38 self.client
39 .request_builder(reqwest::Method::POST, "/v1/messages")
40 .json(request_ref)
41 },
42 betas,
43 )
44 }
45
46 pub fn count_tokens(&self, request: CountTokensRequest) -> Result<CountTokensResponse> {
48 self.count_tokens_with_beta(request, &[])
49 }
50
51 #[allow(clippy::needless_pass_by_value)]
53 pub fn count_tokens_with_beta(
54 &self,
55 request: CountTokensRequest,
56 betas: &[&str],
57 ) -> Result<CountTokensResponse> {
58 let request_ref = &request;
59 self.client.execute_with_retry(
60 || {
61 self.client
62 .request_builder(reqwest::Method::POST, "/v1/messages/count_tokens")
63 .json(request_ref)
64 },
65 betas,
66 )
67 }
68}