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);
}
} ```
OpenTDB itself is licensed under the MIT license
OpenTDB depends on serde
(for (de)serialization) and reqwest
(for sending HTTP requests).
The Open Trivia Database is a collection of user-contributed trivia questions. This project would not be possible without it.
All data provided by their API is available under the Creative Commons Attribution-ShareAlike 4.0 International License as is written on the Open Trivia Database website.