7 releases

new 0.1.12 Dec 5, 2024
0.1.11 Apr 20, 2024
0.1.10 Mar 5, 2024

#283 in Authentication

Download history 12/week @ 2024-08-19 36/week @ 2024-09-16 28/week @ 2024-09-23 17/week @ 2024-09-30 10/week @ 2024-10-21 15/week @ 2024-11-04 33/week @ 2024-11-11 21/week @ 2024-11-18 250/week @ 2024-12-02

305 downloads per month

GPL-3.0 license

47KB
732 lines

neocities-client

Crates.io Version GitHub Actions Workflow Status License


neocities-deployGitHub | Codeberg | Releases | AUR | AUR (git) | AUR (binary)

neocities-clientGitHub | Codeberg | crates.io | docs.rs


This is a Rust library for interacting with the Neocities API. It is part of the neocities-deploy project, a command-line tool for deploying a NeoCities site.

This project is in no way affiliated with Neocities. It is a personal project and is not endorsed by Neocities.

Usage

The Client struct provides a simple interface for interacting with the website API. To use it, first create a new instance of the Client struct (replace "username:password" with your actual username and password):

let client = Client::builder()
    .auth(Auth::from("username:password"))
    .build()?;

Once you have a Client instance, you can use its methods to interact with the website API. For example, to create an API key (which can be later used to authenticate with the API without providing your username and password):

let api_key = client.key()?;
println!("API key: {}", api_key);

Or to get more information about the website:

let info = client.info()?;
println!("{:?}", info);

To list the files on the website:

let files = client.list()?;
for file in files {
    println!("{}", file.path);
}

To upload one or more files to the website:

client.upload(&[
    ("/1st_file.txt", b"Contents of the first file"),
    ("/2nd_file.txt", b"Contents of the second file"),
])?;

To delete one or more files from the website:

client.delete(&["file1.txt", "file2.txt"])?;

For more information on the available methods, see the documentation for the Client struct.

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

Send me a tip

If you find this project useful, you can send me a tip.

Bitcoin: bc1qlj7jdw6fff0q8yg93ssg6qp04p88cuurgwxk8r

Monero: 43mSMDDTuwbGX8LBH7XpT6gbnUcJ86KWVfrpKbopnk7QTDpQkSb53e43MBGGyZ8FgYZ3YzcaTa4Pb46cQUz3DsXeRn4Ef5e

Dependencies

~6.5–9MB
~161K SLoC