From 119571229c18f3dc5dee5e9ed5ae76bedc310566 Mon Sep 17 00:00:00 2001 From: Cyborus Date: Wed, 22 May 2024 16:52:34 -0400 Subject: [PATCH] add oauth2 authentication --- src/lib.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index de99450..a87a696 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -57,6 +57,12 @@ pub enum Auth<'a> { /// To learn about token scope, see /// [the official Forgejo docs](https://forgejo.org/docs/latest/user/token-scope/). Token(&'a str), + /// OAuth2 Token. Grants full access to the user's account, except for + /// creating application access tokens. + /// + /// To learn how to create an OAuth2 token, see + /// [the official Forgejo docs on the subject](https://forgejo.org/docs/latest/user/oauth2-provider). + OAuth2(&'a str), /// Username, password, and 2-factor auth code (if enabled). Grants full /// access to the user's account. Password { @@ -124,6 +130,13 @@ impl Forgejo { headers.insert("X-FORGEJO-OTP", key_header); } } + Auth::OAuth2(token) => { + let mut header: reqwest::header::HeaderValue = format!("Bearer {token}") + .try_into() + .map_err(|_| ForgejoError::KeyNotAscii)?; + header.set_sensitive(true); + headers.insert("Authorization", header); + } Auth::None => (), } let client = Client::builder()