feat: naive implementation of ssh_url deserialization
This commit is contained in:
parent
1c5506c707
commit
9b2864bd70
3 changed files with 41 additions and 5 deletions
|
|
@ -2278,7 +2278,8 @@ pub struct Repository {
|
|||
pub release_counter: Option<u64>,
|
||||
pub repo_transfer: Option<RepoTransfer>,
|
||||
pub size: Option<u64>,
|
||||
pub ssh_url: Option<String>,
|
||||
#[serde(deserialize_with = "crate::deserialize_optional_ssh_url")]
|
||||
pub ssh_url: Option<url::Url>,
|
||||
pub stars_count: Option<u64>,
|
||||
pub template: Option<bool>,
|
||||
#[serde(with = "time::serde::rfc3339::option")]
|
||||
|
|
|
|||
26
src/lib.rs
26
src/lib.rs
|
|
@ -1,4 +1,5 @@
|
|||
use reqwest::{Client, Request, StatusCode};
|
||||
use serde::{Deserialize, Deserializer};
|
||||
use soft_assert::*;
|
||||
use url::Url;
|
||||
use zeroize::Zeroize;
|
||||
|
|
@ -254,6 +255,31 @@ fn none_if_blank_url<'de, D: serde::Deserializer<'de>>(
|
|||
deserializer.deserialize_str(EmptyUrlVisitor)
|
||||
}
|
||||
|
||||
#[allow(dead_code)] // not used yet, but it might appear in the future
|
||||
fn deserialize_ssh_url<'de, D, DE>(deserializer: D) -> Result<Url, DE>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
DE: serde::de::Error,
|
||||
{
|
||||
let raw_url: String = String::deserialize(deserializer).map_err(DE::custom)?;
|
||||
let url = format!("ssh://{url}", url = raw_url.replace(":", "/"));
|
||||
Url::parse(url.as_str()).map_err(DE::custom)
|
||||
}
|
||||
|
||||
fn deserialize_optional_ssh_url<'de, D, DE>(deserializer: D) -> Result<Option<Url>, DE>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
DE: serde::de::Error,
|
||||
{
|
||||
let raw_url: Option<String> = Option::deserialize(deserializer).map_err(DE::custom)?;
|
||||
raw_url
|
||||
.map(|raw_url| {
|
||||
let url = format!("ssh://{url}", url = raw_url.replace(":", "/"));
|
||||
Url::parse(url.as_str()).map_err(DE::custom).map(Some)
|
||||
})
|
||||
.unwrap_or(Ok(None))
|
||||
}
|
||||
|
||||
impl From<structs::DefaultMergeStyle> for structs::MergePullRequestOptionDo {
|
||||
fn from(value: structs::DefaultMergeStyle) -> Self {
|
||||
match value {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue