Skip to content

Commit d7b1254

Browse files
authored
refactor: href method names (#747)
1 parent 4fb24fb commit d7b1254

File tree

3 files changed

+19
-11
lines changed

3 files changed

+19
-11
lines changed

crates/core/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2020

2121
- Default to snappy compression for geoparquet ([#673](https://github.com/stac-utils/rustac/pull/673))
2222
- Ensure geoparquet->json provides valid datetime strings (UTC) ([#711](https://github.com/stac-utils/rustac/pull/711)])
23+
- Some `Href` method names ([#747](https://github.com/stac-utils/rustac/pull/747))
2324

2425
### Fixed
2526

crates/core/src/href.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,11 @@ impl Href {
8282
/// ```
8383
/// use stac::Href;
8484
///
85-
/// let href = Href::from("./a/b.json").absolute(&"/c/d/e.json".into()).unwrap();
85+
/// let href = Href::from("./a/b.json").into_absolute(Href::from("/c/d/e.json")).unwrap();
8686
/// assert_eq!(href, "/c/d/a/b.json");
8787
/// ```
88-
pub fn absolute(&self, base: &Href) -> Result<Href> {
88+
pub fn into_absolute(&self, base: impl AsRef<Href>) -> Result<Href> {
89+
let base = base.as_ref();
8990
tracing::debug!("making href={self} absolute with base={base}");
9091
match base {
9192
Href::Url(url) => url.join(self.as_str()).map(Href::Url).map_err(Error::from),
@@ -100,10 +101,11 @@ impl Href {
100101
/// ```
101102
/// use stac::Href;
102103
///
103-
/// let href = Href::from("/a/b/c.json").relative(&"/a/d.json".into()).unwrap();
104+
/// let href = Href::from("/a/b/c.json").into_relative(Href::from("/a/d.json")).unwrap();
104105
/// assert_eq!(href, "./b/c.json");
105106
/// ```
106-
pub fn relative(&self, base: &Href) -> Result<Href> {
107+
pub fn into_relative(&self, base: impl AsRef<Href>) -> Result<Href> {
108+
let base = base.as_ref();
107109
tracing::debug!("making href={self} relative with base={base}");
108110
match base {
109111
Href::Url(base) => match self {
@@ -221,8 +223,13 @@ impl PartialEq<&str> for Href {
221223
}
222224
}
223225

226+
impl AsRef<Href> for Href {
227+
fn as_ref(&self) -> &Href {
228+
self
229+
}
230+
}
231+
224232
fn make_absolute(href: &str, base: &str) -> String {
225-
// TODO if we make this interface public, make this an impl Option
226233
if href.starts_with('/') {
227234
href.to_string()
228235
} else {

crates/core/src/link.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -671,20 +671,20 @@ impl Link {
671671
/// # Examples
672672
///
673673
/// ```
674-
/// use stac::Link;
674+
/// use stac::{Link, Href};
675675
///
676676
/// let mut link = Link::new("./b/item.json", "rel");
677-
/// link.make_absolute(&"/a/base/catalog.json".into()).unwrap();
677+
/// link.make_absolute(Href::from("/a/base/catalog.json")).unwrap();
678678
/// assert_eq!(link.href, "/a/base/b/item.json")
679679
/// ```
680-
pub fn make_absolute(&mut self, base: &Href) -> Result<()> {
681-
self.href = self.href.absolute(base)?;
680+
pub fn make_absolute(&mut self, base: impl AsRef<Href>) -> Result<()> {
681+
self.href = self.href.into_absolute(base)?;
682682
Ok(())
683683
}
684684

685685
/// Makes this link relative
686-
pub fn make_relative(&mut self, base: &Href) -> Result<()> {
687-
self.href = self.href.relative(base)?;
686+
pub fn make_relative(&mut self, base: impl AsRef<Href>) -> Result<()> {
687+
self.href = self.href.into_relative(base)?;
688688
Ok(())
689689
}
690690
}

0 commit comments

Comments
 (0)