trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
240 lines • 12 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SubscriptionHttpClient = void 0;
const enums_1 = require("../enums");
const _httpClient_1 = require("../../base-http-client");
const requests_1 = require("../../common/subscription/requests");
const responses_1 = require("../../common/subscription/responses");
const { GET_PACKAGE_QUOTA_PREFIX_URL, GET_FIXTURES_SCHEDULE_PREFIX_URL, SUBSCRIBE_BY_FIXTURES_PREFIX_URL, UNSUBSCRIBE_BY_FIXTURE_PREFIX_URL, SUBSCRIBE_BY_LEAGUES_PREFIX_URL, UNSUBSCRIBE_BY_LEAGUES_PREFIX_URL, GET_FIXTURES_SUBSCRIPTION_PREFIX_URL, SUBSCRIBE_BY_COMPETITIONS_PREFIX_URL, UNSUBSCRIBE_BY_COMPETITIONS_PREFIX_URL, GET_ALL_MANUAL_SUSPENSIONS_PREFIX_URL, ADD_MANUAL_SUSPENSIONS_PREFIX_URL, REMOVE_MANUAL_SUSPENSIONS_PREFIX_URL, GET_FIXTURES_METADATA_SUBSCRIPTIONS_PREFIX_URL, } = enums_1.SubscriptionRoutesPrefixUrl;
/**
* SubscriptionHttpClient class is responsible for sending requests
* to the subscription API. It is a HTTP client for the subscription
* API. It contains the logic for sending requests to the subscription
* API.
* @param restApiBaseUrl The base URL of the customers API
* @param packageCredentials The package credentials for the API
* @param logger The logger instance
* @param mapper The mapper instance
* @returns A new instance of the SubscriptionHttpClient class with
* the provided HTTP service configuration and mapper.
* @implements ISubscriptionHttpClient interface for sending requests
* to the subscription API and getting responses from the subscription
* API.
* @see ISubscriptionHttpClient interface for sending requests to the
* subscription API and getting responses from the subscription API.
* @see BaseHttpClient class for sending requests to the customers API.
*
*/
class SubscriptionHttpClient extends _httpClient_1.BaseHttpClient {
constructor({ packageCredentials, restApiBaseUrl, logger }, mapper) {
super({ restApiBaseUrl, packageCredentials, logger });
this.mapper = mapper;
}
/**
* Sends a request to the subscription API to get the package
* quota information.
* @returns A promise that resolves to a PackageQuotaResponse
* object containing the package quota information.
*/
async getPackageQuota() {
const packageQuota = await this.postRequest({
route: GET_PACKAGE_QUOTA_PREFIX_URL,
responseBodyType: responses_1.PackageQuotaResponse,
});
return packageQuota;
}
/**
* Sends a request to the subscription API to get the fixtures schedule.
* @param requestDto The request DTO for getting the fixtures schedule.
* @returns A promise that resolves to a FixtureScheduleCollectionResponse
* object containing the fixture schedule information.
*/
async getFixturesSchedule(requestDto) {
const request = this.mapper.map(requestDto, requests_1.GetFixtureScheduleRequest);
const fixturesScheduleCollection = await this.postRequest({
route: GET_FIXTURES_SCHEDULE_PREFIX_URL,
responseBodyType: responses_1.FixtureScheduleCollectionResponse,
requestBody: request,
});
return fixturesScheduleCollection;
}
/**
* Sends a request to the subscription API to subscribe to fixtures.
* @param requestDto The request DTO for subscribing to fixtures.
* @returns A promise that resolves to a
* FixturesSubscriptionCollectionResponse object containing the
* fixtures subscription information.
*/
async subscribeByFixtures(requestDto) {
const request = this.mapper.map(requestDto, requests_1.FixturesSubscriptionRequest);
const fixturesSubscriptionResponse = await this.postRequest({
route: SUBSCRIBE_BY_FIXTURES_PREFIX_URL,
responseBodyType: responses_1.FixturesSubscriptionCollectionResponse,
requestBody: request,
});
return fixturesSubscriptionResponse;
}
/**
* Sends a request to the subscription API to unsubscribe from fixtures.
* @param requestDto The request DTO for unsubscribing from fixtures.
* @returns A promise that resolves to a
* FixturesSubscriptionCollectionResponse object containing the
* fixtures unsubscription information.
*/
async unSubscribeByFixtures(requestDto) {
const request = this.mapper.map(requestDto, requests_1.FixturesSubscriptionRequest);
const fixturesUnSubscriptionsResponse = await this.postRequest({
route: UNSUBSCRIBE_BY_FIXTURE_PREFIX_URL,
responseBodyType: responses_1.FixturesSubscriptionCollectionResponse,
requestBody: request,
});
return fixturesUnSubscriptionsResponse;
}
/**
* Sends a request to the subscription API to subscribe to leagues.
* @param requestDto The request DTO for subscribing to leagues.
* @returns A promise that resolves to a
* LeaguesSubscriptionCollectionResponse object containing the
* leagues subscription information.
*/
async subscribeByLeagues(requestDto) {
const request = this.mapper.map(requestDto, requests_1.LeaguesSubscriptionRequest);
const leaguesSubscriptionResponse = await this.postRequest({
route: SUBSCRIBE_BY_LEAGUES_PREFIX_URL,
responseBodyType: responses_1.LeaguesSubscriptionCollectionResponse,
requestBody: request,
});
return leaguesSubscriptionResponse;
}
/**
* Sends a request to the subscription API to unsubscribe from leagues.
* @param requestDto The request DTO for unsubscribing from leagues.
* @returns A promise that resolves to a
* LeaguesSubscriptionCollectionResponse object containing the leagues
* unsubscription information.
*/
async unSubscribeByLeagues(requestDto) {
const request = this.mapper.map(requestDto, requests_1.LeaguesSubscriptionRequest);
const leaguesUnSubscriptionResponse = await this.postRequest({
route: UNSUBSCRIBE_BY_LEAGUES_PREFIX_URL,
responseBodyType: responses_1.LeaguesSubscriptionCollectionResponse,
requestBody: request,
});
return leaguesUnSubscriptionResponse;
}
/**
* Sends a request to the subscription API to get fixtures subscriptions.
* @param requestDto The request DTO for getting fixtures subscriptions.
* @returns A promise that resolves to a
* GetSubscriptionsCollectionResponse object containing the fixtures
* subscriptions information.
*/
async getSubscriptions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.GetSubscriptionsRequest);
const fixturesSubscriptionsCollection = await this.postRequest({
route: GET_FIXTURES_SUBSCRIPTION_PREFIX_URL,
responseBodyType: responses_1.SubscriptionsCollectionResponse,
requestBody: request,
});
return fixturesSubscriptionsCollection;
}
/**
* Sends a request to the subscription API to subscribe to competitions.
* @param requestDto The request DTO for subscribing to competitions.
* @returns A promise that resolves to a
* CompetitionsSubscriptionCollectionResponse object containing the
* competitions subscription information.
*/
async subscribeByCompetitions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.CompetitionsSubscriptionRequest);
const competitionsSubscriptionResponse = await this.postRequest({
route: SUBSCRIBE_BY_COMPETITIONS_PREFIX_URL,
responseBodyType: responses_1.CompetitionsSubscriptionCollectionResponse,
requestBody: request,
});
return competitionsSubscriptionResponse;
}
/**
* Sends a request to the subscription API to unsubscribe from
* competitions.
* @param requestDto The request DTO for unsubscribing from competitions.
* @returns A promise that resolves to a
* CompetitionsSubscriptionCollectionResponse object containing the
* competitions unsubscription information from the subscription API.
*/
async unSubscribeByCompetitions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.CompetitionsSubscriptionRequest);
const competitionsUnSubscriptionResponse = await this.postRequest({
route: UNSUBSCRIBE_BY_COMPETITIONS_PREFIX_URL,
responseBodyType: responses_1.CompetitionsSubscriptionCollectionResponse,
requestBody: request,
});
return competitionsUnSubscriptionResponse;
}
/**
* Sends a request to the subscription API to get all manual suspensions.
* @returns A promise that resolves to a GetManualSuspensionsResponse object
* containing the manual suspensions information.
*/
async getAllManualSuspensions() {
const allManualSuspensionsCollection = await this.postRequest({
route: GET_ALL_MANUAL_SUSPENSIONS_PREFIX_URL,
responseBodyType: responses_1.GetManualSuspensionsResponse,
});
return allManualSuspensionsCollection;
}
/**
* Sends a request to the subscription API to add manual suspensions.
* @param requestDto The request DTO for adding manual suspensions.
* @returns A promise that resolves to a ChangeManualSuspensionsResponse
* object containing the manual suspensions information.
*/
async addManualSuspensions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.ChangeManualSuspensionsRequest);
const activatedManualSuspensionsResponse = await this.postRequest({
route: ADD_MANUAL_SUSPENSIONS_PREFIX_URL,
responseBodyType: responses_1.ChangeManualSuspensionsResponse,
requestBody: request,
});
return activatedManualSuspensionsResponse;
}
/**
* Sends a request to the subscription API to remove manual suspensions.
* @param requestDto The request DTO for removing manual suspensions.
* @returns A promise that resolves to a ChangeManualSuspensionsResponse
* object containing the manual suspensions information.
*/
async removeManualSuspensions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.ChangeManualSuspensionsRequest);
const deactivateManualSuspensionsResponse = await this.postRequest({
route: REMOVE_MANUAL_SUSPENSIONS_PREFIX_URL,
responseBodyType: responses_1.ChangeManualSuspensionsResponse,
requestBody: request,
});
return deactivateManualSuspensionsResponse;
}
/**
* Sends a request to the subscription API to get fixtures metadata
* subscriptions. It sends a
* GET request to API and FixturesMetadataCollectionResponse as the
* response type. The request contains the properties for the
* request to get fixture metadata from the API. The response will
* automatically trim and provide data only for the configured
* upcoming duration if the date range is more than configured max
* duration.
* @returns A promise that resolves to a
* FixturesMetadataSubscriptionsCollectionResponse object containing
* the fixtures metadata subscriptions information.
*/
async getFixturesMetadataSubscriptions(requestDto) {
const request = this.mapper.map(requestDto, requests_1.FixturesMetadataSubscriptionsRequest);
const fixturesMetadataSubscriptionsCollection = await this.getRequest({
route: GET_FIXTURES_METADATA_SUBSCRIPTIONS_PREFIX_URL,
responseBodyType: responses_1.FixturesMetadataSubscriptionsCollectionResponse,
requestBody: request,
});
return fixturesMetadataSubscriptionsCollection;
}
}
exports.SubscriptionHttpClient = SubscriptionHttpClient;
//# sourceMappingURL=subscription.service.js.map