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

codeforces-api

使用Codeforces提供的身份验证API + 下载测试用例

13次发布

0.3.4 2021年3月2日
0.3.3 2021年3月1日
0.3.2 2021年2月20日
0.2.8 2021年2月8日
0.2.4 2021年1月31日

#489 in 身份验证


用于 caffeine-cf

MIT 许可证

77KB
1.5K SLoC

codeforces-api

A rust crate用于通过身份验证与Codeforces资源进行接口交互。它提供了Codeforces API的全部功能以及获取给定问题的测试用例的能力。

用法

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);
        }
    }
}

文档 | Crate | 许可证

依赖项

~4–17MB
~267K SLoC