Skip to content

Instantly share code, notes, and snippets.

@thiagosouza
Last active March 17, 2017 18:00
Show Gist options
  • Save thiagosouza/2e39dad19ff569e2352378714bfded98 to your computer and use it in GitHub Desktop.
Save thiagosouza/2e39dad19ff569e2352378714bfded98 to your computer and use it in GitHub Desktop.
let url = 'localhost';
let port = 3000;
let api_endpoint = `http://${url}:${port}/api/`;
let api_uri = `subtitles`;
function get_params(params){
return Object.keys(params).map(key=>`${key}=${encodeURIComponent(params[key])}`).join('&');
}
//default params
var params = {
lang : document.querySelector('#language').value,
hash_open_subtitles : hash,
//download : true,
filename : file.name,
filesize : file.size
}
let request_url = `${api_endpoint}${api_uri}?` + get_params(params);
fetch(request_url).then(function(response) {
return (response.status >= 200 && response.status < 300)
? Promise.resolve(response.json())
: Promise.reject(new Error(response.statusText))
}).then(function(json){
var file_url = json[params.lang][0].url;
fetch(file_url).then(function(response) {
return (response.status >= 200 && response.status < 300)
? Promise.resolve(response.blob())
: Promise.reject(new Error(response.statusText))
}).then(function(blob){
download(blob, file.name.replace(/\.([^.]{2,6}?)$/i, '.srt'), "application/x-subrip");
});
}).catch(function(error) { //catches server errors like error 500, DNS, forbidden
console.log('Request failed', error);
});
fetch("http://url.com/uri", {
method: 'post',
headers: {
"Content-type": "application/json"
},
body: JSON.stringify({
key: "value",
foo: "bar"
})
})
.then(function(response) {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response.json());
} else {
return Promise.reject(new Error(response.statusText))
}
})
.then(function(json) {
//manipulates the JSON data here
})
.catch(function(error) { //catches server errors like error 500, DNS, forbidden
console.log('Request failed', error);
});
//reference: https://davidwalsh.name/fetch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment