wip
This commit is contained in:
40
src/api/auth.rs
Normal file
40
src/api/auth.rs
Normal file
@@ -0,0 +1,40 @@
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::{api, query};
|
||||
|
||||
#[derive(Clone)]
|
||||
struct CreateDeviceCode;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct DeviceCodeResponse {
|
||||
device_code: String,
|
||||
user_code: String,
|
||||
vertification_uri: String,
|
||||
expires_in: u16,
|
||||
interval: u16,
|
||||
}
|
||||
|
||||
impl query::QueryFn for CreateDeviceCode {
|
||||
type Data = DeviceCodeResponse;
|
||||
type Error = api::Error;
|
||||
type Context = api::QueryContext;
|
||||
|
||||
fn key(&self) -> &'static str {
|
||||
todo!()
|
||||
}
|
||||
|
||||
async fn run(&self, c: &Self::Context) -> Result<Self::Data, Self::Error> {
|
||||
let data = c
|
||||
.http
|
||||
.post(format!(
|
||||
"https://github.com/login/device/code?client_id={}",
|
||||
c.github.client_id
|
||||
))
|
||||
.send()
|
||||
.await?
|
||||
.bytes()
|
||||
.await?;
|
||||
|
||||
serde_json::from_slice::<DeviceCodeResponse>(&data).map_err(|e| e.into())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user