use crate::auth::AuthToken;
use crate::parse::ProcessedResult;
use crate::query::Query;
use crate::Result;
use std::marker::PhantomData;
#[derive(PartialEq, Debug)]
pub struct RawResult<'a, Q, A>
where
Q: Query<A>,
A: AuthToken,
{
token: PhantomData<A>,
pub query: &'a Q,
pub json: String,
}
impl<'a, Q: Query<A>, A: AuthToken> RawResult<'a, Q, A> {
pub fn from_raw(json: String, query: &'a Q) -> Self {
Self {
query,
token: PhantomData,
json,
}
}
pub fn destructure_json(self) -> String {
self.json
}
pub fn process(self) -> Result<ProcessedResult<'a, Q>> {
A::deserialize_json(self)
}
}
pub fn fixed_column_item_pointer(col_idx: usize) -> String {
format!("/fixedColumns/{col_idx}/musicResponsiveListItemFixedColumnRenderer")
}
pub fn flex_column_item_pointer(col_idx: usize) -> String {
format!("/flexColumns/{col_idx}/musicResponsiveListItemFlexColumnRenderer")
}