Boosty API
A minimal, async-ready client for fetching post data from a remote blogging API that requires either a bearer token or a refresh token + device ID combo for authentication. This crate is designed with resiliency in mind: it transparently handles token expiration and retries requests when needed.
Table of Contents
- Disclaimer
- Features
- Installation
- Example: Fetching a Single Post
- Example: Fetching Multiple Posts
- Extracting Content from a Post
- Authentication
- Crate Structure
- Error Handling
- API Documentation
- Contributing
- License
Disclaimer
This crate is intended for research and personal use only. By using it, you agree to:
- Access only your own content from the Boosty platform.
- Refrain from scraping, redistributing, or otherwise misusing content that you do not own.
- Comply with Boosty's Terms of Service and any applicable copyright laws.
The author is not responsible for any misuse of this software.
Features
- Simple, high-level API for fetching individual posts or batches of posts.
- Built-in token management using access and refresh tokens (similar in concept to OAuth2 flows).
- Automatic token refreshing and retrying failed requests (when tokens are provided).
- Deserialization into rich, typed Rust structs using
serde. - Clean separation of concerns between authentication and API interaction.
- Currently, supports content types: video, audio, image, text, link and file.
Installation
Add this to your Cargo.toml:
[]
= "0.8.4"
or
Example fetching single post
use ApiClient;
use Client;
async
Example fetching multiple posts
use ApiClient;
use Client;
async
Extracting content from a post
use ContentItem;
let content_items = post.extract_content;
for item in content_items
Authentication
To get access token or refresh token and device_id, you need to log in to the service, then press F12 in the browser and go to the application tab, where you can select local storage. The required keys are _clentId and auth.
There are two options:
1. Static Bearer Token
api_client.set_bearer_token.await?;
2. Refresh Token Flow
api_client.set_refresh_token_and_device_id.await?;
If a post is unavailable and refresh credentials are present, the client will automatically attempt a refresh.
Crate Structure
api_client: Main entry point; fetches post(s), manages headers, and authentication logicauth_provider: Refresh-token and access-token managementapi_response: Deserialization models for all content types (video, image, audio, etc.)error: Uniform error types for API and auth operationspost_data_extractor: Utility module
Error Handling
All API and auth operations return Result<T, ApiError> or Result<T, AuthError>, depending on context. Errors are
strongly typed and cover:
- HTTP request failures
- JSON (de)serialization issues
- Invalid or expired credentials
- Unsuccessful API status codes
API Documentation
For detailed documentation, please refer to docs.rs.
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
License
This project is licensed under the MIT License.