@balldontlie/sdk
Version:
Official TypeScript/JavaScript SDK for the balldontlie API
67 lines (66 loc) • 2.61 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseClient = exports.APIError = void 0;
class APIError extends Error {
constructor(message, status) {
super(message);
this.status = status;
this.name = "APIError";
}
}
exports.APIError = APIError;
// Base client class
class BaseClient {
constructor(config) {
this.baseUrl = config.baseUrl || "https://api.balldontlie.io";
this.headers = {
Authorization: config.apiKey,
"Content-Type": "application/json",
};
}
request(path_1) {
return __awaiter(this, arguments, void 0, function* (path, options = {}) {
const url = `${this.baseUrl}${path}`;
const response = yield fetch(url, Object.assign(Object.assign({}, options), { headers: Object.assign(Object.assign({}, this.headers), options.headers) }));
if (!response.ok) {
const text = yield response.text();
let message;
try {
const error = JSON.parse(text);
message = error.error;
}
catch (_a) {
message = text;
}
throw new APIError(message || `HTTP error! status: ${response.status}`, response.status);
}
return response.json();
});
}
buildQueryParams(params) {
if (!params)
return {};
const result = {};
Object.entries(params).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((v, i) => {
result[`${key}[${i}]`] = v.toString();
});
}
else if (value !== undefined) {
result[key] = value.toString();
}
});
return result;
}
}
exports.BaseClient = BaseClient;