thiago-s
5/27/2016 - 11:03 PM

javascript promise.js

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
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);
});