gproxy_protocol/claude/file_upload/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::claude::types::{AnthropicBeta, AnthropicVersion, HttpMethod};
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
11pub struct ClaudeFileUploadRequest {
12 pub method: HttpMethod,
14 pub path: PathParameters,
16 pub query: QueryParameters,
18 pub headers: RequestHeaders,
20 pub body: RequestBody,
22}
23
24impl Default for ClaudeFileUploadRequest {
25 fn default() -> Self {
26 Self {
27 method: HttpMethod::Post,
28 path: PathParameters::default(),
29 query: QueryParameters::default(),
30 headers: RequestHeaders::default(),
31 body: RequestBody::default(),
32 }
33 }
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
37pub struct PathParameters {}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
40pub struct QueryParameters {}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
43pub struct RequestHeaders {
44 #[serde(rename = "anthropic-version")]
45 pub anthropic_version: AnthropicVersion,
46 #[serde(
47 rename = "anthropic-beta",
48 default,
49 skip_serializing_if = "Option::is_none"
50 )]
51 pub anthropic_beta: Option<Vec<AnthropicBeta>>,
52 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
53 pub extra: BTreeMap<String, String>,
54}
55
56#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
61pub struct RequestBody {
62 #[serde(default, skip_serializing_if = "Vec::is_empty")]
64 pub file: Vec<u8>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
67 pub filename: Option<String>,
68 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub purpose: Option<String>,
71}