flipkart-affiliate-client-v1
Version:
Node.js Client to access Flipkart Affiliate API Version 1.0
167 lines (155 loc) • 5.22 kB
text/typescript
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";
};