Skip to content

Commit f422955

Browse files
committed
references. more work needed
1 parent e9476e5 commit f422955

File tree

6 files changed

+23
-26
lines changed

6 files changed

+23
-26
lines changed

examples/mock_api.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ async fn run() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>>
5656
.await?;
5757

5858
let user = client
59-
.get_user_from_id(&*user_id, &token)
59+
.get_user_from_id(&user_id, &token)
6060
.await?
6161
.expect("no user found");
6262

src/helix/client_ext.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ impl<'a, C: crate::HttpClient<'a> + Sync> HelixClient<'a, C> {
3131
/// Get [User](helix::users::User) from user id
3232
pub async fn get_user_from_id<T>(
3333
&'a self,
34-
id: impl Into<types::UserId>,
34+
id: impl AsRef<types::UserIdRef>,
3535
token: &T,
3636
) -> Result<Option<helix::users::User>, ClientError<'a, C>>
3737
where
3838
T: TwitchToken + ?Sized,
3939
{
4040
self.req_get(
4141
helix::users::GetUsersRequest::builder()
42-
.id(vec![id.into()])
42+
.id(vec![id.as_ref()])
4343
.build(),
4444
token,
4545
)
@@ -101,7 +101,7 @@ impl<'a, C: crate::HttpClient<'a> + Sync> HelixClient<'a, C> {
101101
/// ```
102102
pub fn search_categories<T>(
103103
&'a self,
104-
query: impl Into<String>,
104+
query: impl std::borrow::Borrow<&'a str>,
105105
token: &'a T,
106106
) -> std::pin::Pin<
107107
Box<dyn futures::Stream<Item = Result<helix::search::Category, ClientError<'a, C>>> + 'a>,
@@ -110,7 +110,7 @@ impl<'a, C: crate::HttpClient<'a> + Sync> HelixClient<'a, C> {
110110
T: TwitchToken + Send + Sync + ?Sized,
111111
{
112112
let req = helix::search::SearchCategoriesRequest::builder()
113-
.query(query.into())
113+
.query(*query.borrow())
114114
.build();
115115
make_stream(req, token, self, std::collections::VecDeque::from)
116116
}

src/helix/mod.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,7 @@ pub mod tags;
5959
pub mod teams;
6060
pub mod users;
6161
pub mod videos;
62-
#[allow(deprecated_in_future, deprecated)]
63-
#[deprecated(
64-
since = "0.6.0",
65-
note = "webhooks are deprecated and decommisioned on 2021-09-16, use eventsub instead"
66-
)]
67-
pub mod webhooks;
62+
6863

6964
pub(crate) mod ser;
7065
pub(crate) use crate::deserialize_default_from_null;

src/helix/search/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::{
2424
types,
2525
};
2626
use serde::{Deserialize, Serialize};
27-
27+
use std::borrow::Cow;
2828
pub mod search_categories;
2929
pub mod search_channels;
3030

src/helix/search/search_categories.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -45,35 +45,35 @@ use helix::RequestGet;
4545
/// [`search-categories`](https://dev.twitch.tv/docs/api/reference#search-categories)
4646
#[derive(PartialEq, typed_builder::TypedBuilder, Deserialize, Serialize, Clone, Debug)]
4747
#[non_exhaustive]
48-
pub struct SearchCategoriesRequest {
48+
pub struct SearchCategoriesRequest<'a> {
4949
/// URI encoded search query
5050
#[builder(setter(into))]
51-
pub query: String,
51+
pub query: Cow<'a, str>,
5252
/// Cursor for forward pagination: tells the server where to start fetching the next set of results, in a multi-page response. The cursor value specified here is from the pagination response field of a prior query.
5353
#[builder(default)]
54-
pub after: Option<helix::Cursor>,
54+
pub after: Option<Cow<'a, helix::CursorRef>>,
5555
/// Cursor for backward pagination: tells the server where to start fetching the next set of results, in a multi-page response. The cursor value specified here is from the pagination response field of a prior query.
5656
#[builder(default)]
57-
pub before: Option<helix::Cursor>,
57+
pub before: Option<Cow<'a, helix::CursorRef>>,
5858
/// Number of values to be returned per page. Limit: 100. Default: 20.
5959
#[builder(setter(into), default)]
60-
pub first: Option<String>,
60+
pub first: Option<Cow<'a, str>>,
6161
}
6262

6363
/// Return Values for [Search Categories](super::search_categories)
6464
///
6565
/// [`search-categories`](https://dev.twitch.tv/docs/api/reference#search-categories)
6666
pub type Category = types::TwitchCategory;
6767

68-
impl Request for SearchCategoriesRequest {
68+
impl Request for SearchCategoriesRequest<'_> {
6969
type Response = Vec<Category>;
7070

7171
const PATH: &'static str = "search/categories";
7272
#[cfg(feature = "twitch_oauth2")]
7373
const SCOPE: &'static [twitch_oauth2::Scope] = &[];
7474
}
7575

76-
impl RequestGet for SearchCategoriesRequest {
76+
impl RequestGet for SearchCategoriesRequest<'_> {
7777
fn parse_inner_response(
7878
request: Option<Self>,
7979
uri: &http::Uri,
@@ -100,8 +100,8 @@ impl RequestGet for SearchCategoriesRequest {
100100
}
101101
}
102102

103-
impl helix::Paginated for SearchCategoriesRequest {
104-
fn set_pagination(&mut self, cursor: Option<helix::Cursor>) { self.after = cursor }
103+
impl helix::Paginated for SearchCategoriesRequest<'_> {
104+
fn set_pagination(&mut self, cursor: Option<helix::Cursor>) { self.after = cursor.map(Cow::Owned) }
105105
}
106106

107107
#[cfg(test)]

src/helix/users/get_users.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
//! # let client: helix::HelixClient<'static, client::DummyHttpClient> = helix::HelixClient::default();
2626
//! # let token = twitch_oauth2::AccessToken::new("validtoken".to_string());
2727
//! # let token = twitch_oauth2::UserToken::from_existing(&client, token, None, None).await?;
28+
//! let s = twitch_api2::types::UserId::new("1234");
2829
//! let request = get_users::GetUsersRequest::builder()
29-
//! .id(vec!["1234".into()])
30+
//! .id(vec!["1234".into(), "1234".into(), s.as_ref()])
3031
//! .login(vec!["justintvfan".into()])
3132
//! .build();
3233
//! let response: Vec<get_users::User> = client.req_get(request, &token).await?.data;
@@ -45,10 +46,11 @@ use helix::RequestGet;
4546
/// [`get-users`](https://dev.twitch.tv/docs/api/reference#get-users)
4647
#[derive(PartialEq, typed_builder::TypedBuilder, Deserialize, Serialize, Clone, Debug)]
4748
#[non_exhaustive]
48-
pub struct GetUsersRequest {
49+
pub struct GetUsersRequest<'a> {
4950
/// User ID. Multiple user IDs can be specified. Limit: 100.
5051
#[builder(default)]
51-
pub id: Vec<types::UserId>,
52+
#[serde(borrow = "'a")]
53+
pub id: Vec<&'a types::UserIdRef>,
5254
/// User login name. Multiple login names can be specified. Limit: 100.
5355
#[builder(default)]
5456
pub login: Vec<types::UserName>,
@@ -86,7 +88,7 @@ pub struct User {
8688
pub view_count: usize,
8789
}
8890

89-
impl Request for GetUsersRequest {
91+
impl Request for GetUsersRequest<'_> {
9092
type Response = Vec<User>;
9193

9294
#[cfg(feature = "twitch_oauth2")]
@@ -96,7 +98,7 @@ impl Request for GetUsersRequest {
9698
const SCOPE: &'static [twitch_oauth2::Scope] = &[];
9799
}
98100

99-
impl RequestGet for GetUsersRequest {}
101+
impl RequestGet for GetUsersRequest<'_> {}
100102

101103
#[cfg(test)]
102104
#[test]

0 commit comments

Comments
 (0)