An implementation of the Open Trivia Database API in Rust https://opentdb.com
bash
cargo add opentdb
```rust extern crate opentdb;
use opentdb::apirequest::ApiRequest; use opentdb::apiresponse::ApiResponse;
use opentdb::enums::category::Category; use opentdb::enums::difficulty::Difficulty; use opentdb::enums::question_type::QuestionType; use opentdb::enums::encoding::Encoding;
fn main() { // Start a new session so that the service remains the questions we've received already. let token: String = opentdb::session_new() .expect("New Session Creation failed") .token;
// Build a new ApiRequest
let rq: ApiRequest = opentdb::builder()
.questions(25)
.category(Category::Any)
.difficulty(Difficulty::Any)
.question_type(QuestionType::All)
.encoding(Encoding::DefaultEncoding)
.token(token)
.build();
// Create a HTTP request from an ApiRequest, send it, and parse the JSON into an ApiResponse.
let rs: ApiResponse = opentdb::send_and_parse(rq).unwrap();
println!("Response Code: {:?}", rs.response_code);
for results in rs.results {
println!(" [{}] Question: {}", results.category, results.question);
}
} ```
The following API lookups are not implemented:
Category Lookup: Returns the entire list of categories and ids in the database.
Category Question Count Lookup: Returns the number of questions in the database, in a specific category.
Global Question Count Lookup: Returns the number of ALL questions in the database. Total, Pending, Verified, and Rejected.
OpenTDB itself is licensed under the MIT license
OpenTDB depends on serde
(for (de)serialization) and reqwest
(for sending HTTP requests).