{"version":3,"file":"javgat-brawlify-api-client-angular.mjs","sources":["../../variables.ts","../../configuration.ts","../../api/brawler.service.ts","../../api/gamemode.service.ts","../../api/map.service.ts","../../api/api.ts","../../api.module.ts","../../javgat-brawlify-api-client-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const BASE_PATH = new InjectionToken<string>('basePath');\nexport const COLLECTION_FORMATS = {\n    'csv': ',',\n    'tsv': '   ',\n    'ssv': ' ',\n    'pipes': '|'\n}\n","export interface ConfigurationParameters {\n    apiKeys?: {[ key: string ]: string};\n    username?: string;\n    password?: string;\n    accessToken?: string | (() => string);\n    basePath?: string;\n    withCredentials?: boolean;\n}\n\nexport class Configuration {\n    apiKeys?: {[ key: string ]: string};\n    username?: string;\n    password?: string;\n    accessToken?: string | (() => string);\n    basePath?: string;\n    withCredentials?: boolean;\n\n    constructor(configurationParameters: ConfigurationParameters = {}) {\n        this.apiKeys = configurationParameters.apiKeys;\n        this.username = configurationParameters.username;\n        this.password = configurationParameters.password;\n        this.accessToken = configurationParameters.accessToken;\n        this.basePath = configurationParameters.basePath;\n        this.withCredentials = configurationParameters.withCredentials;\n    }\n\n    /**\n     * Select the correct content-type to use for a request.\n     * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\n     * If no content type is found return the first found type if the contentTypes is not empty\n     * @param contentTypes - the array of content types that are available for selection\n     * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n     */\n    public selectHeaderContentType (contentTypes: string[]): string | undefined {\n        if (contentTypes.length == 0) {\n            return undefined;\n        }\n\n        let type = contentTypes.find(x => this.isJsonMime(x));\n        if (type === undefined) {\n            return contentTypes[0];\n        }\n        return type;\n    }\n\n    /**\n     * Select the correct accept content-type to use for a request.\n     * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\n     * If no content type is found return the first found type if the contentTypes is not empty\n     * @param accepts - the array of content types that are available for selection.\n     * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n     */\n    public selectHeaderAccept(accepts: string[]): string | undefined {\n        if (accepts.length == 0) {\n            return undefined;\n        }\n\n        let type = accepts.find(x => this.isJsonMime(x));\n        if (type === undefined) {\n            return accepts[0];\n        }\n        return type;\n    }\n\n    /**\n     * Check if the given MIME is a JSON MIME.\n     * JSON MIME examples:\n     *   application/json\n     *   application/json; charset=UTF8\n     *   APPLICATION/JSON\n     *   application/vnd.company+json\n     * @param mime - MIME (Multipurpose Internet Mail Extensions)\n     * @return True if the given MIME is JSON, false otherwise.\n     */\n    public isJsonMime(mime: string): boolean {\n        const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\n        return mime != null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\n    }\n}\n","/**\n * Brawlify API (not official)\n * Some queries of the Brawlify API. This content is not affiliated with, endorsed, sponsored, or specifically approved by Supercell nor Brawlify and Supercell or Brawlify are not responsible for it\n *\n * OpenAPI spec version: 1.0.1\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent }                           from '@angular/common/http';\nimport { CustomHttpUrlEncodingCodec }                        from '../encoder';\n\nimport { Observable }                                        from 'rxjs';\n\nimport { Brawler } from '../model/brawler';\nimport { BrawlerList } from '../model/brawlerList';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\n\n\n@Injectable()\nexport class BrawlerService {\n\n    protected basePath = 'https://api.brawlapi.com/v1';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (basePath) {\n            this.basePath = basePath;\n        }\n        if (configuration) {\n            this.configuration = configuration;\n            this.basePath = basePath || configuration.basePath || this.basePath;\n        }\n    }\n\n    /**\n     * @param consumes string[] mime-types\n     * @return true: consumes contains 'multipart/form-data', false: otherwise\n     */\n    private canConsumeForm(consumes: string[]): boolean {\n        const form = 'multipart/form-data';\n        for (const consume of consumes) {\n            if (form === consume) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n\n    /**\n     * Finds all brawlers\n     * All brawlers\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAllBrawlers(observe?: 'body', reportProgress?: boolean): Observable<BrawlerList>;\n    public getAllBrawlers(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BrawlerList>>;\n    public getAllBrawlers(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BrawlerList>>;\n    public getAllBrawlers(observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<BrawlerList>(`${this.basePath}/brawlers`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n    /**\n     * Finds a brawler based on brawler ID\n     * A brawler information\n     * @param brawlerId ID of brawler to return\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getBrawler(brawlerId: number, observe?: 'body', reportProgress?: boolean): Observable<Brawler>;\n    public getBrawler(brawlerId: number, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Brawler>>;\n    public getBrawler(brawlerId: number, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Brawler>>;\n    public getBrawler(brawlerId: number, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        if (brawlerId === null || brawlerId === undefined) {\n            throw new Error('Required parameter brawlerId was null or undefined when calling getBrawler.');\n        }\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<Brawler>(`${this.basePath}/brawlers/${encodeURIComponent(String(brawlerId))}`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n}\n","/**\n * Brawlify API (not official)\n * Some queries of the Brawlify API. This content is not affiliated with, endorsed, sponsored, or specifically approved by Supercell nor Brawlify and Supercell or Brawlify are not responsible for it\n *\n * OpenAPI spec version: 1.0.1\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent }                           from '@angular/common/http';\nimport { CustomHttpUrlEncodingCodec }                        from '../encoder';\n\nimport { Observable }                                        from 'rxjs';\n\nimport { GameMode } from '../model/gameMode';\nimport { GameModeList } from '../model/gameModeList';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\n\n\n@Injectable()\nexport class GamemodeService {\n\n    protected basePath = 'https://api.brawlapi.com/v1';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (basePath) {\n            this.basePath = basePath;\n        }\n        if (configuration) {\n            this.configuration = configuration;\n            this.basePath = basePath || configuration.basePath || this.basePath;\n        }\n    }\n\n    /**\n     * @param consumes string[] mime-types\n     * @return true: consumes contains 'multipart/form-data', false: otherwise\n     */\n    private canConsumeForm(consumes: string[]): boolean {\n        const form = 'multipart/form-data';\n        for (const consume of consumes) {\n            if (form === consume) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n\n    /**\n     * Finds all gamemodes\n     * All gamemodes\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAllGamemodes(observe?: 'body', reportProgress?: boolean): Observable<GameModeList>;\n    public getAllGamemodes(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<GameModeList>>;\n    public getAllGamemodes(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<GameModeList>>;\n    public getAllGamemodes(observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<GameModeList>(`${this.basePath}/gamemodes`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n    /**\n     * Finds a gamemode based on gamemode ID\n     * A gamemode information\n     * @param gamemodeId ID of gamemode to return\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getGamemode(gamemodeId: number, observe?: 'body', reportProgress?: boolean): Observable<GameMode>;\n    public getGamemode(gamemodeId: number, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<GameMode>>;\n    public getGamemode(gamemodeId: number, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<GameMode>>;\n    public getGamemode(gamemodeId: number, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        if (gamemodeId === null || gamemodeId === undefined) {\n            throw new Error('Required parameter gamemodeId was null or undefined when calling getGamemode.');\n        }\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<GameMode>(`${this.basePath}/gamemodes/${encodeURIComponent(String(gamemodeId))}`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n}\n","/**\n * Brawlify API (not official)\n * Some queries of the Brawlify API. This content is not affiliated with, endorsed, sponsored, or specifically approved by Supercell nor Brawlify and Supercell or Brawlify are not responsible for it\n *\n * OpenAPI spec version: 1.0.1\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent }                           from '@angular/common/http';\nimport { CustomHttpUrlEncodingCodec }                        from '../encoder';\n\nimport { Observable }                                        from 'rxjs';\n\nimport { MapList } from '../model/mapList';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\n\n\n@Injectable()\nexport class MapService {\n\n    protected basePath = 'https://api.brawlapi.com/v1';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (basePath) {\n            this.basePath = basePath;\n        }\n        if (configuration) {\n            this.configuration = configuration;\n            this.basePath = basePath || configuration.basePath || this.basePath;\n        }\n    }\n\n    /**\n     * @param consumes string[] mime-types\n     * @return true: consumes contains 'multipart/form-data', false: otherwise\n     */\n    private canConsumeForm(consumes: string[]): boolean {\n        const form = 'multipart/form-data';\n        for (const consume of consumes) {\n            if (form === consume) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n\n    /**\n     * Finds all maps\n     * All maps\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAllMaps(observe?: 'body', reportProgress?: boolean): Observable<MapList>;\n    public getAllMaps(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<MapList>>;\n    public getAllMaps(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<MapList>>;\n    public getAllMaps(observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<MapList>(`${this.basePath}/maps`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n    /**\n     * Finds a map based on map ID\n     * A map information\n     * @param mapId ID of map to return\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getMap(mapId: number, observe?: 'body', reportProgress?: boolean): Observable<any>;\n    public getMap(mapId: number, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\n    public getMap(mapId: number, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\n    public getMap(mapId: number, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        if (mapId === null || mapId === undefined) {\n            throw new Error('Required parameter mapId was null or undefined when calling getMap.');\n        }\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<any>(`${this.basePath}/maps/${encodeURIComponent(String(mapId))}`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n    /**\n     * Finds a map based on map ID with custom stats\n     * A map information, with the stats of the trophy range\n     * @param mapId ID of map to return\n     * @param trophyRange Trophy Range of which return the stats\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getMapWithTrophyRange(mapId: number, trophyRange: '0-299' | '300-599' | '600+', observe?: 'body', reportProgress?: boolean): Observable<any>;\n    public getMapWithTrophyRange(mapId: number, trophyRange: '0-299' | '300-599' | '600+', observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\n    public getMapWithTrophyRange(mapId: number, trophyRange: '0-299' | '300-599' | '600+', observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\n    public getMapWithTrophyRange(mapId: number, trophyRange: '0-299' | '300-599' | '600+', observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\n\n        if (mapId === null || mapId === undefined) {\n            throw new Error('Required parameter mapId was null or undefined when calling getMapWithTrophyRange.');\n        }\n\n        if (trophyRange === null || trophyRange === undefined) {\n            throw new Error('Required parameter trophyRange was null or undefined when calling getMapWithTrophyRange.');\n        }\n\n        let headers = this.defaultHeaders;\n\n        // to determine the Accept header\n        let httpHeaderAccepts: string[] = [\n            'application/json'\n        ];\n        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        if (httpHeaderAcceptSelected != undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n        ];\n\n        return this.httpClient.get<any>(`${this.basePath}/maps/${encodeURIComponent(String(mapId))}/${encodeURIComponent(String(trophyRange))}`,\n            {\n                withCredentials: this.configuration.withCredentials,\n                headers: headers,\n                observe: observe,\n                reportProgress: reportProgress\n            }\n        );\n    }\n\n}\n","export * from './brawler.service';\nimport { BrawlerService } from './brawler.service';\nexport * from './gamemode.service';\nimport { GamemodeService } from './gamemode.service';\nexport * from './map.service';\nimport { MapService } from './map.service';\nexport const APIS = [BrawlerService, GamemodeService, MapService];\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { Configuration } from './configuration';\nimport { HttpClient } from '@angular/common/http';\n\n\nimport { BrawlerService } from './api/brawler.service';\nimport { GamemodeService } from './api/gamemode.service';\nimport { MapService } from './api/map.service';\n\n@NgModule({\n  imports:      [],\n  declarations: [],\n  exports:      [],\n  providers: [\n    BrawlerService,\n    GamemodeService,\n    MapService ]\n})\nexport class ApiModule {\n    public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\n        return {\n            ngModule: ApiModule,\n            providers: [ { provide: Configuration, useFactory: configurationFactory } ]\n        };\n    }\n\n    constructor( @Optional() @SkipSelf() parentModule: ApiModule,\n                 @Optional() http: HttpClient) {\n        if (parentModule) {\n            throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\n        }\n        if (!http) {\n            throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n            'See also https://github.com/angular/angular/issues/20575');\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}