* Further refined `CommandLine` class to ensure consistent use of `CommandLineOptions`. * Improved method organization in command line option setup for better readability. * Updated `LoggerFactory` to utilize `LoggingLevel` directly in logging level management, streamlining the process.
27 lines
938 B
TypeScript
27 lines
938 B
TypeScript
import SupportedBrowser from "./SupportedBrowser";
|
|
|
|
// Source: https://github.com/browserstack/api
|
|
|
|
export class BrowserstackApi {
|
|
private readonly _baseUrl: string = 'https://api.browserstack.com/5';
|
|
private readonly _authorizationHeader: string;
|
|
|
|
constructor(username: string, accessKey: string) {
|
|
this._authorizationHeader = `Basic ${Buffer.from(`${username}:${accessKey}`).toString('base64')}`;
|
|
}
|
|
|
|
public async getSupportedBrowsers(): Promise<SupportedBrowser[]> {
|
|
const endpoint = `${this._baseUrl}/browsers?flat=true`;
|
|
const headers = {
|
|
'Authorization': this._authorizationHeader
|
|
};
|
|
|
|
const response = await fetch(endpoint, { headers });
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`Failed to fetch BrowserStack supported browsers due to [ ${response.statusText}]`);
|
|
}
|
|
|
|
return response.json() as Promise<SupportedBrowser[]>;
|
|
}
|
|
} |