(function () {
'use strict';
/**
* @ngdoc directives
* @name TwitterService
* @module s4c.directives.twitter.TwitterService
*
* @description
* `TwitterService` Componente para acesso a api do backend e/ou comunicação entre controllers
*
*/
function TwitterService($http, $q, API_ENDPOINT) {
/**
*
*
* @method publicarTweet
*
* @param {integer} texto Texto a ser publicado através da conta
* registrada no sistema.
*
* @returns {Promise} Promise que resolve com o resultado da publicação,
* se foi bem sucedida, retorna o link do post.
*/
function publicarTweet(texto) {
var deferred = $q.defer();
$http.put(API_ENDPOINT + 'tweets', {
texto: texto
})
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
*
*
* @method getTweets
*
* @param {obj} data Informações e filtros para a busca na API do
* twitter através do backend do S4C.
*
* @returns {Promise} Promise que resolve com o resultado da busca.
*/
function getTweets(data) {
var deferred = $q.defer();
var query, latitude, longitude, distancia;
if (typeof data === 'string') {
query = data;
} else {
query = data.query;
latitude = data.latitude;
longitude = data.longitude;
distancia = data.distancia;
}
//$http.put(API_ENDPOINT + 'tweets', data)
$http.post(API_ENDPOINT + 'tweets', {
query: query,
latitude: latitude,
longitude: longitude,
distancia: distancia
})
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
/**
* @method getEmbedHTML
* @param {*} id
*/
function getEmbedHTML(id) {
var deferred = $q.defer();
$http.get('https://api.twitter.com/1.1/statuses/oembed.json?id=' + id)
.then(function (res) {
if (typeof res.data === 'object') {
deferred.resolve(res.data);
} else {
deferred.reject(res);
}
}, function (err) {
deferred.reject(err);
});
return deferred.promise;
}
return {
getTweets: getTweets,
publicarTweet: publicarTweet,
getEmbedHTML: getEmbedHTML
};
}
TwitterService.$inject = [
'$http',
'$q',
'API_ENDPOINT'
];
angular.module('s4c.components.collaboration')
.service('TwitterService', TwitterService);
})();