Skip to main content

igdb_rs/
client.rs

1use_client_imports!();
2//create_client! macro automatically generates clients
3//for different endpoints and extends IGDBClient struct
4
5//params: (ClientName, EntityResult, IGDB client impl method)
6
7create_client!(AgeRatingsClient, AgeRating, age_ratings);
8create_client!(ArtworksClient, Artwork, artworks);
9create_client!(
10    CharacterMugshotsClient,
11    CharacterMugshot,
12    character_mug_shots
13);
14create_client!(CharactersClient, Character, characters);
15create_client!(CompaniesClient, Company, companies);
16create_client!(CoversClient, Cover, covers);
17create_client!(GamesClient, Game, games);
18create_client!(GameModesClient, GameMode, game_modes);
19create_client!(GameVideosClient, GameVideo, game_videos);
20create_client!(EnginesClient, Engine, game_engines);
21create_client!(FranchisesClient, Franchise, franchises);
22create_client!(MultiPlayerModesClient, MultiplayerMode, multiplayer_modes);
23create_client!(PlatformsClient, Platform, platforms);
24create_client!(PlatformLogosClient, PlatformLogo, platform_logos);
25create_client!(
26    PlayerPerpectivesClient,
27    PlayerPerspective,
28    player_perspectives
29);
30create_client!(ReleaseDatesClient, ReleaseDate, release_dates);
31create_client!(ScreenshotsClient, Screenshot, screenshots);
32create_client!(ThemesClient, Theme, themes);
33create_client!(WebsitesClient, Website, websites);
34
35expand_media_download!(ArtworksClient);
36expand_media_download!(CoversClient);
37expand_media_download!(ScreenshotsClient);
38expand_media_download!(PlatformLogosClient);
39expand_media_download!(CharacterMugshotsClient);
40
41expand_get_by_game_id!(ArtworksClient, Artwork);
42expand_get_by_game_id!(CoversClient, Cover);
43expand_get_by_game_id!(GameVideosClient, GameVideo);
44expand_get_by_game_id!(MultiPlayerModesClient, MultiplayerMode);
45expand_get_by_game_id!(ReleaseDatesClient, ReleaseDate);
46expand_get_by_game_id!(ScreenshotsClient, Screenshot);
47expand_get_by_game_id!(WebsitesClient, Website);
48
49pub struct IGDBClient {
50    api_key: String,
51}
52
53// The IGDB client.
54impl IGDBClient {
55    /// Creates a new instance of the IGDB Client
56    /// To create a new instance you need to provide the user-key your are provided with
57    /// when you register in the API Website
58    /// # Examples
59    /// ```
60    /// use igdb_rs::client::IGDBClient;
61    ///
62    /// let igdb = IGDBClient::new("user-key");
63    /// ```
64    pub fn new<S: Into<String>>(api_key: S) -> IGDBClient {
65        IGDBClient {
66            api_key: api_key.into(),
67        }
68    }
69    /// Creates a new instance of a Request builder
70    /// you can use it's methods to create custom queries
71    ///
72    /// # Examples
73    ///
74    /// ```
75    /// use igdb_rs::client::IGDBClient;
76    /// use igdb_rs::request_builder::Equality;
77    ///
78    /// let mut request = IGDBClient::create_request();
79    /// request
80    /// .all_fields()
81    /// .add_where("id", Equality::Greater, "340")
82    /// .limit(10);
83    /// ```
84    pub fn create_request() -> RequestBuilder {
85        RequestBuilder::new()
86    }
87}