An open API service indexing awesome lists of open source software.

https://github.com/jordigulley/ticks

Simple, ergonomic Rust wrapper for the TickTick Open API
https://github.com/jordigulley/ticks

rust ticktick ticktick-api wrapper

Last synced: 4 months ago
JSON representation

Simple, ergonomic Rust wrapper for the TickTick Open API

Awesome Lists containing this project

README

          

# Ticks
Simple, ergonomic Rust wrapper for the TickTick Open API

![docs.rs](https://img.shields.io/docsrs/ticks)
## Getting Started
First, register your application with the TickTick Developer Center:
> To get started using the TickTick Open API, you will need to register your application and obtain a client ID and client secret. You can register your application by visiting the [TickTick Developer Center](https://developer.ticktick.com/manage). Once registered, you will receive a client ID and client secret which you will use to authenticate your requests.

Once you have registered your application, add `ticks` to your project's `Cargo.toml`:
```
cargo add ticks
```
To use the TickTick API, you must authorize your app at runtime. Let's talk about **Authorization**.

## Authorization
The TickTick API uses [OAuth](https://oauth.net/2/) for authentication.
Ticks handles most of the authentication for you, leaving only reading the API's HTTP OAuth response to you.
```rust
/// Get Authorization URL, this is the link the user must visit to allow our Application access to their account.
/// redirect_uri must be the same URL specified in the TickTick Developer Center.
let auth = Authorization::begin_auth(/* client_id */, /* redirect_uri */)?;
println!("Browse to: {:?}", auth.get_url());
/// Wait for response from TickTick's API. TickTick will send the required auth info over HTTP to the redirect_uri we specified.
let (access_code, state) = /* Get access_code & state from redirect_uri over HTTP */;
/// Get access token
let token = auth.finish_auth({client_secret}, code, state).await?;
/// Done! Create TickTick instance using AccessToken.
let ticktick = TickTick::new(token.clone())?;
```
For testing, you may want to set your redirect_uri to `localhost`. To read the OAuth HTTP Response locally, try a `TcpListener`
```rust
let listener = TcpListener::bind("127.0.0.1:{port of redirect_uri}")?;
let (mut stream, _) = listener.accept()?;
let mut stream_reader = BufReader::new(&stream);
let mut response = String::new();
stream_reader.read_line(&mut response)?;
stream.write_all("HTTP/1.1 200 OK".as_bytes())?;
println!("Response {:?}", response);
```

## Documentation
The docs can be found at https://docs.rs/ticks/latest.