Pocket API bindings (http://getpocket.com), WIP
API is very easy, actually. The most complex code is for authorization.
You will need a consumer_key
and an access_token
in order to use the API.
A consumer_key
can be obtained by creating an app at the My Applications page.
An access_token
is obtained by walking through OAuth authentication workflow.
The OAuth workflow is implemented with a pair of methods in this implementation:
```rust extern crate pocket;
use pocket::Pocket;
fn authenticate() { let mut pocket = Pocket::new("YOUR-CONSUMER-KEY-HERE", None); let url = pocket.getauthurl().unwrap(); println!("Follow the link to authorize the app: {}", url); // Here we should wait until user follows the URL and confirm app access
let username = pocket.authorize().unwrap; } ```
So you 1) generate OAuth access request URL with pocket.get_auth_url()
, 2) let user follow the URL
and confirm app access, 3) call pocket.authorize()
and either get an error,
or username of user just authorized.
I recommend storing the access token after you get it, so you don't have to repeat this workflow again next time.
The access token can be obtained with pocket.access_token()
method. Store it somewhere and use to construct
Pocket
object:
rust
let access_token = "YOUR-STORED-ACCESS-TOKEN";
let mut pocket = Pocket::new("YOUR-CONSUMER-KEY-HERE", Some(access_token));
Now you have two methods (for now) to get and add new URLs to your pocket.
To add an item, use Pocket::add()
or Pocket::push()
method:
```rust // Quick add by URL only let added_item = pocket.push("http://example.com").unwrap();
// Add with all meta-info provided (title, tags, tweet id) let addeditem = pocket.push("http://example.com", Some("Example title"), Some("example-tag"), Some("exampletweet_id")).unwrap(); ```
To query your pocket, use Pocket::filter()
method:
```rust let items = { let mut f = pocket.filter();
f.complete() // complete data
f.archived() // archived items only
f.videos() // videos only
f.offset(10) // items 10-20
f.count(10)
f.sort_by_title() // sorted by title
f.get(); // get items
};
// There are other methods, see PocketGetRequest
struct for details
...
```
The API bindings will be improved with new methods and parameters. Keep tuned!
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.