Proper parsing of URLs
[?]
Jan 13, 2021, 2:37 PM
GYXIF25T2BCTCWCQI5DQOF3F4HBWDJUDJUMZ2WLHVBIOYATJTFAQCDependencies
- [2]
JRENVH5DReqwest 0.11 - [3]
5XMUEZMZpijul-clone: avoid panics on parsing remote URLs - [4]
VBMXB443Retrying if the HTTP connection drops while reading the body - [5]
367UBQ6KForwarding SSH stderr, and progress bar for push - [6]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [7]
SZWBLWZ4Reading ~/.ssh/config - [8]
TPEH2XNB1.0.0-alpha.28, with Tokio 1.0 - [9]
Q45QHPO4Feedback on network stuff - [10]
76PCXGMLPushing to, and pulling from the local repository - [11]
K6GWUOD5Styling progress bars - [12]
IQ4FCHPZHTTP connections: pooling + retry on error - [13]
FBXYP7QMForgot to add remote::http - [14]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [15]
MU5GSJAWPartial push and pull (WARNING: breaks the existing protocol) - [16]
KI2AFWOSFixing a panic in pull - [*]
LYTVEPH3Avoid cloning into an existing path - [*]
2K7JLB4ZNo pager on Windows - [*]
BT2ZHPY4Version bumps
Change contents
- replacement in pijul/src/remote/mod.rs at line 59[4.53500]→[4.53500:53622](∅→∅),[4.53622]→[4.243:285](∅→∅),[4.285]→[4.53657:53907](∅→∅),[4.53657]→[4.53657:53907](∅→∅),[4.53907]→[4.286:341](∅→∅),[4.341]→[4.2649:2706](∅→∅),[4.2706]→[4.54008:54130](∅→∅),[4.394]→[4.54008:54130](∅→∅),[4.54008]→[4.54008:54130](∅→∅)
if name.starts_with("http://") || name.starts_with("https://") {debug!("unknown_remote, http = {:?}", name);return Ok(RemoteRepo::Http(Http {url: name.to_string(),channel: channel.to_string(),client: reqwest::ClientBuilder::new().danger_accept_invalid_certs(no_cert_check).build()?,name: name.to_string(),}));}if name.starts_with("ssh://") {return if let Some(mut ssh) = ssh_remote(name) {debug!("unknown_remote, ssh = {:?}", ssh);Ok(RemoteRepo::Ssh(ssh.connect(name, channel).await?))if let Ok(url) = url::Url::parse(name) {let scheme = url.scheme();if scheme == "http" || scheme == "https" {debug!("unknown_remote, http = {:?}", name);return Ok(RemoteRepo::Http(Http {url,channel: channel.to_string(),client: reqwest::ClientBuilder::new().danger_accept_invalid_certs(no_cert_check).build()?,name: name.to_string(),}));} else if scheme == "ssh" {return if let Some(mut ssh) = ssh_remote(name) {debug!("unknown_remote, ssh = {:?}", ssh);Ok(RemoteRepo::Ssh(ssh.connect(name, channel).await?))} else {bail!("Remote not found: {:?}", name)}; - replacement in pijul/src/remote/mod.rs at line 79
bail!("Remote not found: {:?}", name)};bail!("Remote scheme not supported: {:?}", scheme)} - replacement in pijul/src/remote/mod.rs at line 146[4.56131]→[3.474:599](∅→∅),[3.599]→[4.56195:56271](∅→∅),[4.56195]→[4.56195:56271](∅→∅),[4.56271]→[3.600:647](∅→∅),[3.647]→[4.56314:56339](∅→∅),[4.56314]→[4.56314:56339](∅→∅),[4.56339]→[3.648:706](∅→∅)
let url =reqwest::Url::parse(&h.url).context("failed to parse remote repository URL")?;if let Some(name) = libpijul::path::file_name(url.path()) {Ok(Some(name.to_string()))} else {Ok(url.host().map(|h| h.to_string()))if let Some(name) = libpijul::path::file_name(h.url.path()) {if !name.trim().is_empty() {return Ok(Some(name.trim().to_string()));} - edit in pijul/src/remote/mod.rs at line 151
Ok(h.url.host().map(|h| h.to_string())) - replacement in pijul/src/remote/http.rs at line 12
pub url: String,pub url: url::Url, - replacement in pijul/src/remote/http.rs at line 20
url: String,url: url::Url, - replacement in pijul/src/remote/http.rs at line 142
let url = self.url.clone() + "/" + super::DOT_DIR;let url = {let mut p = self.url.path().to_string();if !p.ends_with("/") {p.push('/')}p.push_str(super::DOT_DIR);let mut u = self.url.clone();u.set_path(&p);u}; - replacement in pijul/src/remote/http.rs at line 162
.post(&url).post(url) - replacement in pijul/src/remote/http.rs at line 184
let url = self.url.clone() + "/" + super::DOT_DIR;let url = {let mut p = self.url.path().to_string();if !p.ends_with("/") {p.push('/')}p.push_str(super::DOT_DIR);let mut u = self.url.clone();u.set_path(&p);u}; - replacement in pijul/src/remote/http.rs at line 199
let res = self.client.get(&url).query(&query).send().await?;let res = self.client.get(url).query(&query).send().await?; - replacement in pijul/src/remote/http.rs at line 267
let url = self.url.clone() + "/" + super::DOT_DIR;let res = self.client.get(&url).query(&[("channel", &self.channel)]);let url = {let mut p = self.url.path().to_string();if !p.ends_with("/") {p.push('/')}p.push_str(super::DOT_DIR);let mut u = self.url.clone();u.set_path(&p);u};let res = self.client.get(url).query(&[("channel", &self.channel)]); - edit in pijul/Cargo.toml at line 81
url = "2.2" - edit in Cargo.lock at line 1324[4.1064526][20.314]
"url",