@@ -2,12 +2,25 @@ use super::{Api, Result};
22use reqwest:: RequestBuilder ;
33use serde_json:: Value ;
44
5+ /// Client for accessing Listen Notes API.
56pub struct Client < ' a > {
7+ /// HTTP client.
68 client : reqwest:: Client ,
9+ /// API context.
710 api : Api < ' a > ,
811}
912
1013impl Client < ' _ > {
14+ /// Creates new Listen API Client.
15+ ///
16+ /// To access production API:
17+ /// ```
18+ /// let client = podcast_api::Client::new(reqwest::Client::new(), Some("YOUR-API-KEY"));
19+ /// ```
20+ /// To access mock API:
21+ /// ```
22+ /// let client = podcast_api::Client::new(reqwest::Client::new(), None);
23+ /// ```
1124 pub fn new < ' a > ( client : reqwest:: Client , id : Option < & ' a str > ) -> Client < ' a > {
1225 Client {
1326 client,
@@ -19,30 +32,41 @@ impl Client<'_> {
1932 }
2033 }
2134
35+ /// Calls [`GET /search`](https://www.listennotes.com/api/docs/#get-api-v2-search) with supplied parameters.
2236 pub async fn search ( & self , parameters : & Value ) -> Result < Value > {
2337 self . get ( "search" , parameters) . await
2438 }
2539
40+ /// Calls [`GET /typeahead`](https://www.listennotes.com/api/docs/#get-api-v2-typeahead) with supplied parameters.
2641 pub async fn typeahead ( & self , parameters : & Value ) -> Result < Value > {
2742 self . get ( "typeahead" , parameters) . await
2843 }
2944
45+ /// Calls [`GET /best_podcasts`](https://www.listennotes.com/api/docs/#get-api-v2-best_podcasts) with supplied parameters.
3046 pub async fn best_podcasts ( & self , parameters : & Value ) -> Result < Value > {
3147 self . get ( "best_podcasts" , parameters) . await
3248 }
3349
50+ /// Calls [`GET /podcasts/{id}`](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id) with supplied parameters.
3451 pub async fn podcast ( & self , id : & str , parameters : & Value ) -> Result < Value > {
3552 self . get ( & format ! ( "podcasts/{}" , id) , parameters) . await
3653 }
3754
55+ /// Calls [`POST /podcasts`](https://www.listennotes.com/api/docs/#post-api-v2-podcasts) with supplied parameters.
3856 pub async fn podcasts ( & self , parameters : & Value ) -> Result < Value > {
3957 self . post ( "podcasts" , parameters) . await
4058 }
4159
60+ /// Calls [`GET /episodes/{id}`](https://www.listennotes.com/api/docs/#get-api-v2-episodes-id) with supplied parameters.
4261 pub async fn episode ( & self , id : & str , parameters : & Value ) -> Result < Value > {
4362 self . get ( & format ! ( "episodes/{}" , id) , parameters) . await
63+ }
64+
65+ /// Calls [`POST /episodes`](https://www.listennotes.com/api/docs/#post-api-v2-episodes) with supplied parameters.
4466 pub async fn episodes ( & self , parameters : & Value ) -> Result < Value > {
4567 self . post ( "episodes" , parameters) . await
68+ }
69+
4670 async fn get ( & self , endpoint : & str , parameters : & Value ) -> Result < Value > {
4771 let request = self
4872 . client
@@ -74,15 +98,3 @@ impl Client<'_> {
7498 . await ?)
7599 }
76100}
77-
78- trait AddField {
79- fn with ( & self , key : & str , value : & str ) -> Self ;
80- }
81-
82- impl AddField for Value {
83- fn with ( & self , key : & str , value : & str ) -> Self {
84- let mut p = self . clone ( ) ;
85- p[ key] = json ! ( value) ;
86- p
87- }
88- }
0 commit comments