opentdb-rs

Build Status MIT licensed crates.io Released API docs dependency status codecov

An implementation of the Open Trivia Database API in Rust https://opentdb.com

Install

bash cargo add opentdb

Usage

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

} ```

Limitations

License and Acknowledgements

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.