Files
2013-11-07 10:01:01 -06:00

103 lines
2.1 KiB
JavaScript

angular.module('ionic.weather.services', ['ngResource'])
.factory('Geo', function($q) {
return {
getLocation: function() {
var q = $q.defer();
navigator.geolocation.getCurrentPosition(function(position) {
q.resolve(position);
}, function(error) {
q.reject(error);
});
return q.promise;
}
};
})
.factory('Flickr', function($q, $resource, FLICKR_API_KEY) {
var baseUrl = 'http://api.flickr.com/services/rest/'
var flickrSearch = $resource(baseUrl, {
method: 'flickr.groups.pools.getPhotos',
group_id: '1463451@N25',
safe_search: 1,
jsoncallback: 'JSON_CALLBACK',
api_key: FLICKR_API_KEY,
format: 'json'
}, {
get: {
method: 'JSONP'
}
});
return {
search: function(tags, lat, lng) {
var q = $q.defer();
flickrSearch.get({
tags: tags,
lat: lat,
lng: lng
}, function(val) {
q.resolve(val);
}, function(httpResponse) {
q.reject(httpResponse);
});
return q.promise;
}
};
})
.factory('Weather', function($q, $resource, WUNDERGROUND_API_KEY) {
var baseUrl = 'http://api.wunderground.com/api/' + WUNDERGROUND_API_KEY;
var locationResource = $resource(baseUrl + '/geolookup/conditions/q/:coords.json', {
callback: 'JSON_CALLBACK'
}, {
get: {
method: 'JSONP'
}
});
var forecastResource = $resource(baseUrl + '/forecast/q/:coords.json', {
callback: 'JSON_CALLBACK'
}, {
get: {
method: 'JSONP'
}
});
return {
getForecast: function(lat, lng) {
var q = $q.defer();
forecastResource.get({
coords: lat + ',' + lng
}, function(resp) {
q.resolve(resp);
}, function(httpResponse) {
q.reject(httpResponse);
});
return q.promise;
},
getAtLocation: function(lat, lng) {
var q = $q.defer();
locationResource.get({
coords: lat + ',' + lng
}, function(resp) {
q.resolve(resp);
}, function(error) {
q.reject(error);
});
return q.promise;
}
}
})