#api #api-request #api-response #codeforces #api-key #api-secret #problem

codeforces-api

Use auth api provided by Codeforces + download testcases

13 releases

0.3.4 Mar 2, 2021
0.3.3 Mar 1, 2021
0.3.2 Feb 20, 2021
0.2.8 Feb 8, 2021
0.2.4 Jan 31, 2021

#489 in Authentication


Used in caffeine-cf

MIT license

77KB
1.5K SLoC

codeforces-api

A rust crate for interfacing with Codeforces resources with authentication. It provides the full functionality of the Codeforces API as well as the ability to fetch testcases for a given problem.

Usage

use codeforces_api::requests::{CFBlogEntryCommand, CFAPIRequestable};
use codeforces_api::responses::CFResult;

fn main() {
    // This is equivalent to the Codeforces `blogEntry.view` API method.
    let x = CFBlogEntryCommand::View {
        blog_entry_id: 82347,
    };

    // The `.get(..)` method on API commands returns a result with either
    // an error or an `Ok(CFResult)`.
    match x.get("<api_key>", "<api_secret>") {
        Ok(CFResult::CFBlogEntry(blog_entry)) => {
            assert_eq!(blog_entry.id, 82347);
            println!("Your blog entry: {:?}", blog_entry);
        },
        Ok(_) => {
            // In very rare cases, an unexpected type may be returned by
            // `.get()`. If this happens, then you may wish to throw a
            // custom error.
            panic!("`.get()` returned an unexpected type.");
        }
        Err(e) => {
            // Errors returned are of a custom Error type. This could be
            // returned if, for example, an invalid API key/secret was used
            // or if there was no internet connection.
            panic!("something failed {:?}", e);
        }
    }
}

Docs | Crate | License

Dependencies

~4–17MB
~267K SLoC