UNPKG

flipkart-affiliate-client-v1

Version:
167 lines (155 loc) 5.22 kB
import request from "request"; interface AffiliateDetails { trackingId: string; token: string; format: string; } export class CreateAffiliateClient { constructor(private authDetails: AffiliateDetails) {} getProductsFeedListing() { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/api/" + this.authDetails.trackingId + ".json" : "https://affiliate-api.flipkart.net/affiliate/api/" + this.authDetails.trackingId + ".xml"; return getData(this.authDetails, url); } getProductsFeed(CategoryUrl: string) { return getData(this.authDetails, CategoryUrl); } getBooksCategoryFeed() { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/1.0/booksApi/" + this.authDetails.trackingId + ".json" : "https://affiliate-api.flipkart.net/affiliate/1.0/booksApi/" + this.authDetails.trackingId + ".xml"; return getData(this.authDetails, url); } getTopSellingBooks(booksCategoryUrl: string) { return getData(this.authDetails, booksCategoryUrl); } doKeywordSearch(keyword: string, limit: number = 5) { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/1.0/search.json?query=" + keyword + "&resultCount=" + limit : "https://affiliate-api.flipkart.net/affiliate/1.0/search.xml?query=" + keyword + "&resultCount=" + limit; return getData(this.authDetails, url); } doIdSearch(id: string) { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/1.0/product.json?id=" + id : "https://affiliate-api.flipkart.net/affiliate/1.0/product.xml?id=" + id; return getData(this.authDetails, url); } getAllOffers() { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/offers/v1/all/json" : "https://affiliate-api.flipkart.net/affiliate/offers/v1/all/xml"; return getData(this.authDetails, url); } getDealsOfTheDay() { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/offers/v1/dotd/json" : "https://affiliate-api.flipkart.net/affiliate/offers/v1/dotd/xml"; return getData(this.authDetails, url); } getOrdersReport(info: any) { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate=" + info.startDate + "&endDate=" + info.endDate + "&status=" + info.status + "&offset=" + info.offset : "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/xml?startDate=" + info.startDate + "&endDate=" + info.endDate + "&status=" + info.status + "&offset=" + info.offset; return getData(this.authDetails, url); } getAppInstallReport(info: any) { let url = this.authDetails.format == "json" ? "https://affiliate-api.flipkart.net/affiliate/v1/appInstall/json?startDate=" + info.startDate + "&endDate=" + info.endDate + "&status=" + info.status : "https://affiliate-api.flipkart.net/affiliate/v1/appInstall/xml?startDate=" + info.startDate + "&endDate=" + info.endDate + "&status=" + info.status; return getData(this.authDetails, url); } } /** * function accepts AuthDetails and URL */ let getData = function(details: AffiliateDetails, url: string) { let headers = { "Fk-Affiliate-Id": details.trackingId, "Fk-Affiliate-Token": details.token }; return new Promise((resolve: any, reject: any) => { request( { url: url, headers: headers }, function(error: any, response: any, body: any) { if (error) reject(error); else { resolve({ status: response.statusCode, error: getStatusError(response.statusCode), body: body }); } } ); }); }; /** * FUnction Returning the Error Status */ let getStatusError = function(statusCode: Number) { if (statusCode == 400) return "Bad request"; else if (statusCode == 401) return "Unauthorized. Affiliate Id or Token InCorrect"; else if (statusCode == 403) return "Forbidden"; else if (statusCode == 404) return "Error: Not Found"; else if (statusCode == 500) return "Internal Server Error"; else if (statusCode == 503) return "Service unavailable"; else if (statusCode == 599) return "Connection timed out"; else if (statusCode == 410) return "Resource requested is no longer available"; else if (statusCode == 200) return null; else return "Unknown Error Occured"; };