glowingbear-mainbox/js/imgur.js
Magnus Hauge Bakke f6bfa4161b Add imgur provider
2015-11-07 12:44:21 +01:00

76 lines
1.6 KiB
JavaScript

(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.factory('imgur', ['$rootScope', function($rootScope) {
var process = function(image) {
// Is it an image?
if (!image || !image.type.match(/image.*/)) return;
// New file reader
var reader = new FileReader();
// When image is read
reader.onload = function (event) {
var image = event.target.result.split(',')[1];
upload(image);
};
// Read image as data url
reader.readAsDataURL(image);
};
// Upload image to imgur from base64
var upload = function( base64img ) {
// Set client ID (Glowing Bear)
var clientId = "164efef8979cd4b";
// Create new form data
var fd = new FormData();
fd.append("image", base64img); // Append the file
fd.append("type", "base64"); // Set image type to base64
// Create new XMLHttpRequest
var xhttp = new XMLHttpRequest();
// Post request to imgur api
xhttp.open("POST", "https://api.imgur.com/3/image", true);
// Set headers
xhttp.setRequestHeader("Authorization", "Client-ID " + clientId);
xhttp.setRequestHeader("Accept", "application/json");
// Handler for response
xhttp.onreadystatechange = function() {
// Check state and response status
if (xhttp.readyState == 4 && xhttp.status == 200) {
// Get response text
var response = JSON.parse(xhttp.responseText);
// Open image in new window
window.open(response.data.link, '_blank');
}
};
// Send request with form data
xhttp.send(fd);
};
return {
process: process
};
}]);
})();