# RivalzClient
RivalzClient is a Rust client for interacting with the Rivalz API. This client allows you to upload files to IPFS and retrieve their IPFS hash.
## Features
- Upload files using multipart form data.
- Retrieve the IPFS hash of uploaded files.
- Robust error handling for network issues, server errors, and file accessibility.
## Getting Started
### Prerequisites
- [Rust](https://www.rust-lang.org/tools/install) (version 1.50 or later)
- A Rivalz API secret token.
### Installation
To use the `RivalzClient` library in your project, add the following to your `Cargo.toml`:
```toml
[dependencies]
rivalz_client = "0.1.0"
```
### Usage
1. **Set your Rivalz API secret token as an environment variable**:
```sh
export SECRET_TOKEN="your_secret_token"
```
2. **Create an instance of `RivalzClient` and use it to upload a file**:
```rust
use rivalz_client::RivalzClient;
fn main() {
let client = RivalzClient::new(None);
let file_path = "path/to/your/file.txt";
match client.upload_file(file_path) {
Ok(ipfs_hash) => println!("File uploaded successfully! IPFS hash: {}", ipfs_hash),
Err(e) => eprintln!("Failed to upload file: {}", e),
}
}
```
## Building from Source
To build RivalzClient from source, follow these steps:
1. **Clone the repository**:
```sh
git clone https://github.com/yourusername/rivalz-client.git
cd rivalz-client
```
2. **Build the project**:
```sh
cargo build
```
3. **Run tests**:
```sh
cargo test
```
## Publishing
To publish a new version of RivalzClient to [crates.io](https://crates.io/), follow these steps:
1. **Update the version number** in `Cargo.toml`.
2. **Login to crates.io**:
```sh
cargo login
```
3. **Publish the package**:
```sh
cargo publish
```
## Contributing
We welcome contributions to RivalzClient! To contribute:
1. **Fork the repository**.
2. **Create a new branch** for your feature or bugfix:
```sh
git checkout -b my-feature-branch
```
3. **Make your changes** and commit them:
```sh
git commit -am 'Add new feature'
```
4. **Push to the branch**:
```sh
git push origin my-feature-branch
```
5. **Create a new Pull Request** on GitHub.
### Submitting Issues
If you find a bug or have a feature request, please create an issue on [GitHub](https://github.com/ngocbd/rivalz-client/issues).
### Code of Conduct
This project adheres to the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). By participating, you are expected to uphold this code.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
```
### Explanation
- **Getting Started**: Provides an overview of prerequisites and installation steps.
- **Usage**: Demonstrates how to set up and use the `RivalzClient`.
- **Building from Source**: Instructions to clone, build, and test the project.
- **Publishing**: Steps to publish the crate to crates.io.
- **Contributing**: Guidelines for contributing, including forking the repository and submitting pull requests.
- **Submitting Issues**: Instructions for reporting bugs or requesting features.
- **Code of Conduct**: Link to the Contributor Covenant Code of Conduct.
- **License**: Information about the project's license.
Feel free to customize the links and details according to your specific project setup and repository.