@@ -7,7 +7,7 @@ use http::header::{HeaderName, USER_AGENT};
77use reqwest:: { header:: HeaderMap , ClientBuilder , IntoUrl , Method , StatusCode } ;
88use serde:: { de:: DeserializeOwned , Serialize } ;
99use serde_json:: { Map , Value } ;
10- use stac:: { Collection , Href , Link , Links } ;
10+ use stac:: { Collection , Link , Links , SelfHref } ;
1111use std:: pin:: Pin ;
1212use tokio:: {
1313 runtime:: { Builder , Runtime } ,
@@ -170,13 +170,13 @@ impl Client {
170170
171171 async fn get < V > ( & self , url : impl IntoUrl ) -> Result < V >
172172 where
173- V : DeserializeOwned + Href ,
173+ V : DeserializeOwned + SelfHref ,
174174 {
175175 let url = url. into_url ( ) ?;
176176 let mut value = self
177177 . request :: < ( ) , V > ( Method :: GET , url. clone ( ) , None , None )
178178 . await ?;
179- value. set_href ( url) ;
179+ * value. self_href_mut ( ) = Some ( url. into ( ) ) ;
180180 Ok ( value)
181181 }
182182
@@ -243,7 +243,7 @@ impl Client {
243243 } else {
244244 None
245245 } ;
246- self . request :: < Map < String , Value > , R > ( method, link. href , & link. body , headers)
246+ self . request :: < Map < String , Value > , R > ( method, link. href . as_str ( ) , & link. body , headers)
247247 . await
248248 }
249249}
@@ -404,7 +404,7 @@ mod tests {
404404 let mut page_1_body: ItemCollection =
405405 serde_json:: from_str ( include_str ! ( "../mocks/search-page-1.json" ) ) . unwrap ( ) ;
406406 let mut next_link = page_1_body. link ( "next" ) . unwrap ( ) . clone ( ) ;
407- next_link. href = format ! ( "{}/search" , server. url( ) ) ;
407+ next_link. href = format ! ( "{}/search" , server. url( ) ) . into ( ) ;
408408 page_1_body. set_link ( next_link) ;
409409 let page_1 = server
410410 . mock ( "POST" , "/search" )
@@ -454,13 +454,14 @@ mod tests {
454454 let mut page_1_body: ItemCollection =
455455 serde_json:: from_str ( include_str ! ( "../mocks/items-page-1.json" ) ) . unwrap ( ) ;
456456 let mut next_link = page_1_body. link ( "next" ) . unwrap ( ) . clone ( ) ;
457- let url: Url = next_link. href . parse ( ) . unwrap ( ) ;
457+ let url: Url = next_link. href . as_str ( ) . parse ( ) . unwrap ( ) ;
458458 let query = url. query ( ) . unwrap ( ) ;
459459 next_link. href = format ! (
460460 "{}/collections/sentinel-2-l2a/items?{}" ,
461461 server. url( ) ,
462462 query
463- ) ;
463+ )
464+ . into ( ) ;
464465 page_1_body. set_link ( next_link) ;
465466 let page_1 = server
466467 . mock ( "GET" , "/collections/sentinel-2-l2a/items?limit=1" )
@@ -500,13 +501,14 @@ mod tests {
500501 let mut page_body: ItemCollection =
501502 serde_json:: from_str ( include_str ! ( "../mocks/items-page-1.json" ) ) . unwrap ( ) ;
502503 let mut next_link = page_body. link ( "next" ) . unwrap ( ) . clone ( ) ;
503- let url: Url = next_link. href . parse ( ) . unwrap ( ) ;
504+ let url: Url = next_link. href . as_str ( ) . parse ( ) . unwrap ( ) ;
504505 let query = url. query ( ) . unwrap ( ) ;
505506 next_link. href = format ! (
506507 "{}/collections/sentinel-2-l2a/items?{}" ,
507508 server. url( ) ,
508509 query
509- ) ;
510+ )
511+ . into ( ) ;
510512 page_body. set_link ( next_link) ;
511513 page_body. items = vec ! [ ] ;
512514 let page = server
0 commit comments