nsyelpapi
Version:
Nativescript implementation of the native v2 yelp api
174 lines • 6.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var observable_1 = require("tns-core-modules/data/observable");
var utils_1 = require("tns-core-modules/utils/utils");
var Common = (function (_super) {
__extends(Common, _super);
function Common() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.sortMap = {
'best_match': 0,
'distance': 1,
'rating': 2,
'review_count': 3
};
return _this;
}
Common.prototype.parseBusiness = function (business) {
return {
id: business.identifier,
name: business.name,
closed: business.closed,
website: business.URL.absoluteString,
categories: this.parseCategories(business.categories),
location: this.parseYelpLocation(business.location),
rating: business.rating,
imageUrl: business.imageURL.absoluteString,
reviewCount: business.reviewCount,
phone: business.phone
};
};
Common.prototype.parseCategories = function (categories) {
var _this = this;
var convCategories = utils_1.ios.collections.nsArrayToJSArray(categories);
var categoryResults = convCategories.map(function (category) { return _this.parseYLPCategories(category); });
return categoryResults;
};
Common.prototype.parseYLPCategories = function (category) {
return {
alias: category.alias,
name: category.name
};
};
Common.prototype.parseYelpLocation = function (location) {
return {
address: utils_1.ios.collections.nsArrayToJSArray(location.address)[0],
city: location.city,
coordinates: this.parseCoordinates(location.coordinate),
countryCode: location.countryCode,
postalCode: location.postalCode,
stateCode: location.stateCode
};
};
Common.prototype.parseCoordinates = function (coordinates) {
return {
latitude: coordinates.latitude,
longitude: coordinates.longitude
};
};
Common.prototype.parseReviews = function (reviews) {
var _this = this;
return {
reviews: utils_1.ios.collections.nsArrayToJSArray(reviews.reviews).map((function (review) { return _this.parseReview(review); })),
total: reviews.total
};
};
Common.prototype.parseReview = function (review) {
return {
message: review.excerpt,
rating: review.rating,
timeCreate: review.timeCreated.toISOString(),
user: review.user.name
};
};
Common.prototype.formatSearchQuery = function (location, category, deals, limit, offset, radius, sort, searchTerm) {
var query;
if (location.hasOwnProperty('latitude')) {
var coordinates = location;
var queryLocation = new YLPCoordinate(coordinates);
query = new YLPQuery({ coordinate: queryLocation });
}
else {
query = new YLPQuery({ location: location });
}
if (category) {
query.categoryFilter = utils_1.ios.collections.jsArrayToNSArray(category);
}
if (deals) {
query['dealsFilter'] = deals;
}
if (limit) {
query['limit'] = limit;
}
if (offset) {
query['offset'] = offset;
}
if (radius) {
query['radiusFilter'] = radius;
}
if (sort) {
query['sort'] = this.sortMap[sort];
}
if (searchTerm) {
query['term'] = searchTerm;
}
console.log(query.radiusFilter);
return query;
};
Common.prototype.parseAndroidReviews = function (reviews, total) {
var data = {
total: total,
reviews: []
};
for (var i = 0; i < reviews.size(); i++) {
var review = reviews.get(i);
var reviewData = {
message: review.getText(),
rating: review.getRating(),
timeCreate: review.getTimeCreated(),
user: review.getUser().getName()
};
data.reviews.push(reviewData);
}
return data;
};
Common.prototype.parseAndroidBusinesses = function (businesses) {
var results = [];
for (var i = 0; i < businesses.size(); i++) {
results.push(this.parseAndroidBusiness(businesses.get(i)));
}
return results;
};
Common.prototype.parseAndroidBusiness = function (business) {
return {
id: business.getId(),
name: business.getName(),
closed: business.getIsClosed(),
website: business.getUrl(),
categories: this.parseAndroidCategory(business.getCategories()),
location: this.parseLocation(business.getLocation(), business.getCoordinates()),
rating: business.getRating(),
imageUrl: business.getImageUrl(),
reviewCount: business.getReviewCount(),
phone: business.getPhone()
};
};
Common.prototype.parseAndroidCategory = function (categories) {
var data = [];
for (var i = 0; i < categories.size(); i++) {
var category = categories.get(i);
var result = {
alias: category.getAlias(),
name: category.getTitle()
};
data.push(result);
}
return data;
};
Common.prototype.parseLocation = function (location, coordinates) {
return {
address: location.getAddress1(),
city: location.getCity(),
coordinates: {
latitude: coordinates.getLatitude(),
longitude: coordinates.getLongitude()
},
countryCode: location.getCountry(),
postalCode: location.getZipCode(),
stateCode: location.getState()
};
};
return Common;
}(observable_1.Observable));
exports.Common = Common;
//# sourceMappingURL=NSYelpApi.common.js.map