accept int or string in api
This commit is contained in:
18
src/api.rs
18
src/api.rs
@@ -1029,18 +1029,14 @@ async fn videos_post(
|
||||
}
|
||||
let page: u8 = video_request
|
||||
.page
|
||||
.as_deref()
|
||||
.unwrap_or("1")
|
||||
.to_string()
|
||||
.parse()
|
||||
.unwrap();
|
||||
.as_ref()
|
||||
.and_then(|value| value.to_u8())
|
||||
.unwrap_or(1);
|
||||
let perPage: u8 = video_request
|
||||
.perPage
|
||||
.as_deref()
|
||||
.unwrap_or("10")
|
||||
.to_string()
|
||||
.parse()
|
||||
.unwrap();
|
||||
.as_ref()
|
||||
.and_then(|value| value.to_u8())
|
||||
.unwrap_or(10);
|
||||
let featured = video_request
|
||||
.featured
|
||||
.as_deref()
|
||||
@@ -1199,4 +1195,4 @@ pub async fn test() -> Result<impl web::Responder, web::Error> {
|
||||
).await;
|
||||
|
||||
Ok(web::HttpResponse::Ok())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::util::requester::Requester;
|
||||
use serde;
|
||||
|
||||
#[derive(serde::Serialize, serde::Deserialize, Debug)]
|
||||
#[serde(untagged)]
|
||||
pub enum FlexibleNumber {
|
||||
String(String),
|
||||
Int(u64),
|
||||
}
|
||||
impl FlexibleNumber {
|
||||
pub fn to_u8(&self) -> Option<u8> {
|
||||
match self {
|
||||
FlexibleNumber::String(value) => value.parse::<u8>().ok(),
|
||||
FlexibleNumber::Int(value) => u8::try_from(*value).ok(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(serde::Serialize, serde::Deserialize, Debug)]
|
||||
pub struct VideosRequest {
|
||||
@@ -21,8 +37,8 @@ pub struct VideosRequest {
|
||||
pub channel: Option<String>, //"youtube",
|
||||
pub sort: Option<String>, //"new",
|
||||
pub query: Option<String>, //"kittens",
|
||||
pub page: Option<String>, //1,
|
||||
pub perPage: Option<String>, //10,
|
||||
pub page: Option<FlexibleNumber>, //1,
|
||||
pub perPage: Option<FlexibleNumber>, //10,
|
||||
// Your server's global options will be sent in the videos request
|
||||
// pub flavor: "mint chocolate chip"
|
||||
pub featured: Option<String>, // "featured",
|
||||
|
||||
Reference in New Issue
Block a user