Files
Iris/src/js/services/genius/actions.js

81 lines
2.5 KiB
JavaScript
Raw Normal View History

var coreActions = require('../core/actions')
var uiActions = require('../ui/actions')
var helpers = require('../../helpers')
/**
* Send an ajax request
*
* @param dispatch obj
* @param getState obj
* @param endpoint params = the url params to send
**/
const sendRequest = (dispatch, getState, endpoint) => {
return new Promise( (resolve, reject) => {
var loader_key = helpers.generateGuid();
dispatch(uiActions.startLoading(loader_key, 'genius_'+endpoint));
var config = {
method: 'POST',
cache: false,
timeout: 15000,
headers: {
Authorization: 'Bearer 2AGP9sfzKQcxfKSZuGa_3lqsDIpuOiTGT7-vhJYcKaaDjHIIA2HICsxXCiC30Xxi'
},
data: JSON.stringify({
url: 'https://api.genius.com/'+endpoint
}),
url: '//'+getState().mopidy.host+':'+getState().mopidy.port+'/iris/http/proxy_request'
};
$.ajax(config).then(
response => {
dispatch(uiActions.stopLoading(loader_key));
resolve(response.response);
},
(xhr, status, error) => {
dispatch(uiActions.stopLoading(loader_key));
reject({
config: config,
xhr: xhr,
status: status,
error: error
});
}
)
})
}
export function getTrackInfo(track){
return (dispatch, getState) => {
var query = '';
for (var i = 0; i < track.artists.length; i++){
query += track.artists[i].name+' ';
}
query += track.name;
sendRequest(dispatch, getState, 'search?q='+encodeURIComponent(query))
.then(
response => {
if (response.response.hits && response.response.hits.length > 0){
dispatch({
type: 'TRACK_LOADED',
key: track.uri,
track: {
annotations: response.response.hits[0].result
}
});
}
},
error => {
dispatch(coreActions.handleException(
'Could not get track info',
error
));
}
);
}
}