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