Skip to content

Commit bac4dcf

Browse files
authored
Merge pull request tjardoo#41 from tjardoo/fix-unwrap-missing-headers-exception
Fix unwrap missing headers exception
2 parents 267ffa5 + 68168b0 commit bac4dcf

File tree

3 files changed

+77
-48
lines changed

3 files changed

+77
-48
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "openai_dive"
3-
version = "0.3.5"
3+
version = "0.3.6"
44
edition = "2021"
55
license = "MIT"
66
description = "OpenAI Dive is an unofficial async Rust library that allows you to interact with the OpenAI API."

src/v1/resources/shared.rs

Lines changed: 75 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ pub struct ResponseWrapper<T> {
2222
pub struct Headers {
2323
/// The maximum number of requests that are permitted before exhausting the rate limit.
2424
#[serde(rename = "x-ratelimit-limit-requests")]
25-
pub x_ratelimit_limit_requests: u32,
25+
pub x_ratelimit_limit_requests: Option<u32>,
2626
/// The maximum number of tokens that are permitted before exhausting the rate limit.
2727
#[serde(rename = "x-ratelimit-limit-tokens")]
28-
pub x_ratelimit_limit_tokens: u32,
28+
pub x_ratelimit_limit_tokens: Option<u32>,
2929
/// The remaining number of requests that are permitted before exhausting the rate limit.
3030
#[serde(rename = "x-ratelimit-remaining-requests")]
31-
pub x_ratelimit_remaining_requests: u32,
31+
pub x_ratelimit_remaining_requests: Option<u32>,
3232
/// The remaining number of tokens that are permitted before exhausting the rate limit.
3333
#[serde(rename = "x-ratelimit-remaining-tokens")]
34-
pub x_ratelimit_remaining_tokens: u32,
34+
pub x_ratelimit_remaining_tokens: Option<u32>,
3535
/// The time until the rate limit (based on requests) resets to its initial state.
3636
#[serde(rename = "x-ratelimit-reset-requests")]
37-
pub x_ratelimit_reset_requests: String,
37+
pub x_ratelimit_reset_requests: Option<String>,
3838
/// The time until the rate limit (based on tokens) resets to its initial state.
3939
#[serde(rename = "x-ratelimit-reset-tokens")]
40-
pub x_ratelimit_reset_tokens: String,
40+
pub x_ratelimit_reset_tokens: Option<String>,
4141
}
4242

4343
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
@@ -103,47 +103,76 @@ pub enum StopToken {
103103

104104
impl From<HeaderMap> for Headers {
105105
fn from(value: HeaderMap) -> Self {
106+
if value.get("x-ratelimit-limit-requests").is_none()
107+
|| value.get("x-ratelimit-limit-tokens").is_none()
108+
|| value.get("x-ratelimit-remaining-requests").is_none()
109+
|| value.get("x-ratelimit-remaining-tokens").is_none()
110+
|| value.get("x-ratelimit-reset-requests").is_none()
111+
|| value.get("x-ratelimit-reset-tokens").is_none()
112+
{
113+
return Self {
114+
x_ratelimit_limit_requests: None,
115+
x_ratelimit_limit_tokens: None,
116+
x_ratelimit_remaining_requests: None,
117+
x_ratelimit_remaining_tokens: None,
118+
x_ratelimit_reset_requests: None,
119+
x_ratelimit_reset_tokens: None,
120+
};
121+
}
122+
106123
Self {
107-
x_ratelimit_limit_requests: value
108-
.get("x-ratelimit-limit-requests")
109-
.unwrap()
110-
.to_str()
111-
.unwrap()
112-
.parse::<u32>()
113-
.unwrap(),
114-
x_ratelimit_limit_tokens: value
115-
.get("x-ratelimit-limit-tokens")
116-
.unwrap()
117-
.to_str()
118-
.unwrap()
119-
.parse::<u32>()
120-
.unwrap(),
121-
x_ratelimit_remaining_requests: value
122-
.get("x-ratelimit-remaining-requests")
123-
.unwrap()
124-
.to_str()
125-
.unwrap()
126-
.parse::<u32>()
127-
.unwrap(),
128-
x_ratelimit_remaining_tokens: value
129-
.get("x-ratelimit-remaining-tokens")
130-
.unwrap()
131-
.to_str()
132-
.unwrap()
133-
.parse::<u32>()
134-
.unwrap(),
135-
x_ratelimit_reset_requests: value
136-
.get("x-ratelimit-reset-requests")
137-
.unwrap()
138-
.to_str()
139-
.unwrap()
140-
.to_string(),
141-
x_ratelimit_reset_tokens: value
142-
.get("x-ratelimit-reset-tokens")
143-
.unwrap()
144-
.to_str()
145-
.unwrap()
146-
.to_string(),
124+
x_ratelimit_limit_requests: Some(
125+
value
126+
.get("x-ratelimit-limit-requests")
127+
.unwrap()
128+
.to_str()
129+
.unwrap()
130+
.parse::<u32>()
131+
.unwrap(),
132+
),
133+
x_ratelimit_limit_tokens: Some(
134+
value
135+
.get("x-ratelimit-limit-tokens")
136+
.unwrap()
137+
.to_str()
138+
.unwrap()
139+
.parse::<u32>()
140+
.unwrap(),
141+
),
142+
x_ratelimit_remaining_requests: Some(
143+
value
144+
.get("x-ratelimit-remaining-requests")
145+
.unwrap()
146+
.to_str()
147+
.unwrap()
148+
.parse::<u32>()
149+
.unwrap(),
150+
),
151+
x_ratelimit_remaining_tokens: Some(
152+
value
153+
.get("x-ratelimit-remaining-tokens")
154+
.unwrap()
155+
.to_str()
156+
.unwrap()
157+
.parse::<u32>()
158+
.unwrap(),
159+
),
160+
x_ratelimit_reset_requests: Some(
161+
value
162+
.get("x-ratelimit-reset-requests")
163+
.unwrap()
164+
.to_str()
165+
.unwrap()
166+
.to_string(),
167+
),
168+
x_ratelimit_reset_tokens: Some(
169+
value
170+
.get("x-ratelimit-reset-tokens")
171+
.unwrap()
172+
.to_str()
173+
.unwrap()
174+
.to_string(),
175+
),
147176
}
148177
}
149178
}

0 commit comments

Comments
 (0)