UNPKG

meses-feed

Version:

Meses feed SDK in JavaScript

120 lines (109 loc) 3.59 kB
import HttpClient from './util/HttpClient' class MesesFeedService { constructor(uri, applicationId) { this._VERSION = '1.0.0' this._USER_AGENT = 'Meses-Client/' + this._VERSION this._FEED_API_PATH = '/v1/feed' this._uri = uri this._applicationId = applicationId } /** * Get a list of feed activities ordered descending by activity timestamps. * * @param {String} feedName * @param {String} startActivityId - offset for retrieving the activities * @param {Number} limit - desired list size * @return {Promise} feedActivities - list of activites in the specified feed (fulfilled) * unseenCount - number of new activities since last seen time * nextActivityId - activityId for retrieving older feed activites */ getFeedActivities(feedName, startActivityId, limit) { const GET_FEED_ACTIVITIES = '/activity' let apiUrl = this._uri + this._FEED_API_PATH + GET_FEED_ACTIVITIES let params = { applicationId: this._applicationId, feedName: feedName, startActivityId: startActivityId, limit: limit } let context = {} return new Promise(function(resolve, reject) { const callback = function(err, result) { if (err) reject(err) else resolve(result) } HttpClient.executeGet(apiUrl, params, context, callback) }) } /** * Get number of unseen feed activities in the specified feed. * * @param {String} feedName * @return {Promise} an integer indicating number of unseen feed activities */ getFeedUnseenCount(feedName) { const GET_FEED_ACTIVITIES = '/activity' let apiUrl = this._uri + this._FEED_API_PATH + GET_FEED_ACTIVITIES let params = { applicationId: this._applicationId, feedName: feedName, startActivityId: null, limit: 0 } let context = {} return new Promise(function(resolve, reject) { const callback = function(err, result) { if (err) reject(err) else resolve(result.unseenCount) } HttpClient.executeGet(apiUrl, params, context, callback) }) } /** * Mark a conversation as seen. Generally used when the user access the feed. * * @param {String} feedName * @return {Promise} fulfilled if marking succeeded */ markAsSeen(feedName) { const MARK_AS_SEEN_PATH = '/seen' let apiUrl = this._uri + this._FEED_API_PATH + MARK_AS_SEEN_PATH let spec = { applicationId: this._applicationId, feedName: feedName } let context = {} return new Promise(function(resolve, reject) { const callback = function(err, result) { if (err) reject(err) else resolve(result) } HttpClient.executePost(apiUrl, spec, context, callback) }) } /** * Mark a specified activity as read activity in a specified feed. * * @param {String} feedName * @param {String} activityId * @return {Promise} fulfilled if marking succeeded */ markAsRead(feedName, activityId) { const MARK_AS_READ_PATH = '/read' let apiUrl = this._uri + this._FEED_API_PATH + MARK_AS_READ_PATH let spec = { applicationId: this._applicationId, feedName: feedName, activityId: activityId } let context = {} return new Promise(function(resolve, reject) { const callback = function(err, result) { if (err) reject(err) else resolve(result) } HttpClient.executePost(apiUrl, spec, context, callback) }) } } export default MesesFeedService