Skip to content

A rust crate implementation of the Codeforces web API + testcase input fetcher.

License

Notifications You must be signed in to change notification settings

thud/codeforces-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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