fix: allow player data to be fetched without botguard
This commit is contained in:
parent
3849982dab
commit
f152a853b8
2 changed files with 21 additions and 20 deletions
|
|
@ -2057,15 +2057,12 @@ impl RustyPipeQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get PO tokens
|
/// Get PO tokens
|
||||||
async fn get_po_tokens(&self, idents: &[&str]) -> Result<Vec<String>, Error> {
|
async fn get_po_tokens(&self, idents: &[&str]) -> Result<Option<Vec<String>>, Error> {
|
||||||
let bg = self
|
let bg = match self.client.inner.botguard.as_ref() {
|
||||||
.client
|
Some(bg) => bg,
|
||||||
.inner
|
None => return Ok(None),
|
||||||
.botguard
|
};
|
||||||
.as_ref()
|
let start = std::time::Instant::now();
|
||||||
.ok_or(Error::Extraction(ExtractionError::Botguard(
|
|
||||||
"not enabled".into(),
|
|
||||||
)))?;
|
|
||||||
let cmd = tokio::process::Command::new(&bg.program)
|
let cmd = tokio::process::Command::new(&bg.program)
|
||||||
.arg("--snapshot-file")
|
.arg("--snapshot-file")
|
||||||
.arg(&bg.snapshot_file)
|
.arg(&bg.snapshot_file)
|
||||||
|
|
@ -2092,14 +2089,17 @@ impl RustyPipeQuery {
|
||||||
"too few tokens returned".into(),
|
"too few tokens returned".into(),
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
tracing::debug!("generated PO token");
|
tracing::debug!("generated PO token (took {:?})", start.elapsed());
|
||||||
Ok(tokens)
|
Ok(Some(tokens))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get a PO token
|
/// Get a PO token
|
||||||
pub async fn get_po_token<S: AsRef<str>>(self, ident: S) -> Result<String, Error> {
|
pub async fn get_po_token<S: AsRef<str>>(self, ident: S) -> Result<String, Error> {
|
||||||
self.get_po_tokens(&[ident.as_ref()])
|
self.get_po_tokens(&[ident.as_ref()])
|
||||||
.await
|
.await?
|
||||||
|
.ok_or(Error::Extraction(ExtractionError::Botguard(
|
||||||
|
"not enabled".into(),
|
||||||
|
)))
|
||||||
.map(|res| res.into_iter().next().unwrap())
|
.map(|res| res.into_iter().next().unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,13 +128,13 @@ impl RustyPipeQuery {
|
||||||
}
|
}
|
||||||
Err(e) => return Err(e),
|
Err(e) => return Err(e),
|
||||||
}
|
}
|
||||||
last_e = Some(Error::Extraction(e));
|
|
||||||
} else {
|
} else {
|
||||||
return Err(Error::Extraction(e));
|
return Err(Error::Extraction(e));
|
||||||
}
|
}
|
||||||
} else if !e.switch_client() {
|
} else if !e.switch_client() {
|
||||||
return Err(Error::Extraction(e));
|
return Err(Error::Extraction(e));
|
||||||
}
|
}
|
||||||
|
last_e = Some(Error::Extraction(e));
|
||||||
}
|
}
|
||||||
Err(e) => return Err(e),
|
Err(e) => return Err(e),
|
||||||
}
|
}
|
||||||
|
|
@ -163,14 +163,15 @@ impl RustyPipeQuery {
|
||||||
},
|
},
|
||||||
async {
|
async {
|
||||||
if client_type.needs_po_token() {
|
if client_type.needs_po_token() {
|
||||||
let mut po_tokens = self
|
if let Some(po_tokens) = self.get_po_tokens(&[video_id, &visitor_data]).await? {
|
||||||
.get_po_tokens(&[video_id, &visitor_data])
|
let mut po_tokens = po_tokens.into_iter();
|
||||||
.await?
|
let po_token = po_tokens.next().unwrap();
|
||||||
.into_iter();
|
let session_po_token = po_tokens.next().unwrap();
|
||||||
let po_token = po_tokens.next().unwrap();
|
|
||||||
let session_po_token = po_tokens.next().unwrap();
|
|
||||||
|
|
||||||
Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token)))
|
Ok((Some(ServiceIntegrity { po_token }), Some(session_po_token)))
|
||||||
|
} else {
|
||||||
|
Ok((None, None))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Ok((None, None))
|
Ok((None, None))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue