### 
ProBinder EVENT POLLER
----------------------

Global variables
This module requires user-specific parameters:
- username
- password
###
urlService = 'https://probinder.com/service/'
credentials =
	username: params.username
	password: params.password

#
# The standard callback can be used if callback is not provided, e.g. if
# the function is called from outside
#
standardCallback = ( funcName ) ->
	( err, resp, body ) ->
		if err
			log "ERROR: During function '#{ funcName }'"
		else
			if resp.statusCode is 200
				log "Function '#{ funcName }' ran through without error"
			else
				log "ERROR: During function '#{ funcName }': #{ body.error.message }"

###
Call the ProBinder service with the given parameters.

@param {Object} args the required function arguments object
@param {Object} [args.data] the data to be posted
@param {String} args.service the required service identifier to be appended to the url
@param {String} args.method the required method identifier to be appended to the url
@param {function} [args.callback] the function to receive the request answer
###
callService = ( args ) ->
	if not args.service or not args.method
		log 'ERROR in call function: Missing arguments!'
	else
		if not args.callback
			args.callback = standardCallback 'call'
		url = urlService + args.service + '/' + args.method
		needlereq 'post', url, args.data, credentials, args.callback

###
Calls the user's unread content service.
###
exports.unreadContentInfo = ( pushEvent ) ->
	callService
		service: '36'
		method: 'unreadcontent'
		callback: ( err, resp, body ) ->
			if not err and resp.statusCode is 200
				pushEvent oEntry for oEntry in body
			else
				log 'Error: ' + body.error.message

###
Fetches unread contents
###
exports.unreadContent = ( pushEvent ) ->
	exports.unreadContentInfo ( evt ) ->
		getContent
			contentId: evt.id
			contentServiceId: evt.serviceId
			callback: ( err, resp, body ) ->
				if not err and resp.statusCode is 200
					pushEvent
						id: body.id
						content: body.text
						object: body
				else
					log 'Error: ' + body.error.message


###
Calls the content get service with the content id and the service id provided. 
###
getContent = ( args ) ->
	if not args.callback
		args.callback = standardCallback 'getContent'
	callService
		service: '2'
		method: 'get'
		data: 
			id: args.contentId
			service: args.contentServiceId
		callback: args.callback

