meses-feed
Version:
Meses feed SDK in JavaScript
120 lines (109 loc) • 3.59 kB
JavaScript
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