lbry-desktop/ui/js/lbryio.js
Alex Liebowitz 6cc2892399 More progress on Rewards
* Add wrapper for lbry.io API
 * View and basic logic for GitHub reward (not working yet)
2017-04-17 09:46:50 -04:00

92 lines
2.4 KiB
JavaScript

const querystring = require('querystring');
const lbryio = {};
const CONNECTION_STRING = 'https://api.lbry.io/';
const mocks = {
'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,
},
];
}
};
lbryio.call = function(resource, action, params, method='get') {
console.log('top of lbryio.call')
return new Promise((resolve, reject) => {
console.log('top of promise handler')
/* temp code for mocks */
if (`${resource}.${action}` in mocks) {
console.log(`found ${resource}.${action} in mocks`)
resolve(mocks[`${resource}.${action}`](params));
console.log('...resolved.');
return;
} else {
console.log(`did not find ${resource}.${action} in mocks`);
}
/* end temp */
console.log('about to create xhr object');
const xhr = new XMLHttpRequest;
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.error) {
if (reject) {
reject(new Error(response.error));
} else {
document.dispatchEvent(new CustomEvent('unhandledError', {
detail: {
connectionString: connectionString,
method: method,
params: params,
code: response.error.code,
message: response.error.message,
data: response.error.data,
}
}));
}
} else {
resolve(response.result);
}
});
console.log('about to call xhr.open');
xhr.open(method, CONNECTION_STRING + resource + '/' + action, true);
xhr.send(querystring.stringify(params));
});
};
export default lbryio;