rivalz_client 0.1.1

A Rust client for interacting with the Rivalz API, allowing file uploads and retrieval of IPFS hashes.
Documentation
# 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.