lbry-desktop/ui/js/lbryio.js

104 lines
3 KiB
JavaScript
Raw Normal View History

const querystring = require('querystring');
const lbryio = {};
2017-03-31 01:00:33 +02:00
const CONNECTION_STRING = 'https://apidev.lbry.tech/';
const mocks = {
2017-04-02 12:08:25 +02:00
'reward_type.get': ({name}) => {
return {
name: 'link_github',
title: 'Link your GitHub account',
description: 'Link LBRY to your GitHub account',
value: 50,
claimed: false,
};
},
'reward_type.list': () => {
return [
{
name: 'link_github',
title: 'Link your GitHub account',
description: 'Link LBRY to your GitHub account',
value: 50,
claimed: false,
},
];
2017-04-02 12:07:04 +02:00
},
};
2017-04-02 12:08:25 +02:00
lbryio.call = function(resource, action, params={}, method='get') {
return new Promise((resolve, reject) => {
/* temp code for mocks */
if (`${resource}.${action}` in mocks) {
resolve(mocks[`${resource}.${action}`](params));
return;
}
/* end temp */
console.log('about to create xhr object');
const xhr = new XMLHttpRequest;
2017-04-01 08:54:56 +02:00
xhr.addEventListener('error', function (error) {
console.log('received XHR error:', error);
reject(error);
});
console.log('about to add timeout listener');
xhr.addEventListener('timeout', function() {
console.log('XHR timed out');
reject(new Error('XMLHttpRequest connection timed out'));
});
console.log('about to create load listener');
xhr.addEventListener('load', function() {
console.log('loaded');
const response = JSON.parse(xhr.responseText);
if (!response.success) {
if (reject) {
reject(new Error(response.error));
} else {
document.dispatchEvent(new CustomEvent('unhandledError', {
detail: {
connectionString: connectionString,
method: action,
params: params,
message: response.error.message,
... response.error.data ? {data: response.error.data} : {},
}
}));
}
} else {
console.info(`${resource}.${action} response data:`, response);
2017-03-31 01:00:33 +02:00
resolve(response.data);
}
});
console.log('about to call xhr.open');
2017-04-02 11:55:24 +02:00
// For social media auth:
//const accessToken = localStorage.getItem('accessToken');
//const fullParams = {...params, ... accessToken ? {access_token: accessToken} : {}};
// Temp app ID based auth:
const fullParams = {app_id: localStorage.getItem('appId'), ...params};
2017-03-31 01:00:33 +02:00
if (method == 'get') {
2017-04-02 11:55:24 +02:00
console.info('GET ', CONNECTION_STRING + resource + '/' + action, ' | params:', fullParams);
xhr.open('get', CONNECTION_STRING + resource + '/' + action + '?' + querystring.stringify(fullParams), true);
2017-03-31 01:00:33 +02:00
xhr.send();
} else if (method == 'post') {
2017-04-02 11:55:24 +02:00
console.info('POST ', CONNECTION_STRING + resource + '/' + action, '| params: ', fullParams);
2017-03-31 01:00:33 +02:00
xhr.open('post', CONNECTION_STRING + resource + '/' + action, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
2017-04-02 11:55:24 +02:00
xhr.send(querystring.stringify(fullParams));
}
});
};
export default lbryio;