Skip to content
This repository has been archived by the owner on Mar 2, 2020. It is now read-only.

Временное использование API imgur для фотохостинга #5

Open
Vik-BC opened this issue Mar 18, 2017 · 2 comments

Comments

@Vik-BC
Copy link

Vik-BC commented Mar 18, 2017

Я использую скрипт загрузки фото в своем редакторе для голоса (golos.rubtc.info/r) работает он стабильно выполняя простую функцию - загружает фото на фотохостинг imgur и после вставляет фотографию в редактор для последующего постинга. Все происходит в фоне и выглядит как обычная прямая загрузка в пост.

Решил сделать bookmarklet и userscript который позволит пользователям иметь кнопку загрузки фото в редакторе голоса, однако сделать это удалось только применяя стремные иньекции в обход csp голоса.
Потому мне кажется правильнее будет предложить временное (до внедрения ipfs) решение команде.

Для этого нужно немного отредактировать /submit.html добавив саму кнопку :

HTML

<div class="drop"><div id="addimg" onclick="document.querySelector('#up').click()"> Описание кнопки загрузки</div></div> 
<input id="up" style="visibility: collapse; width: 0px;" type="file" onchange="upload(this.files[0])">

И скрипт для выгрузки на imgur с последующей вставкой результата с imgur куда-то в редактор

JS

(function() { 'use strict';
// Селектор textarea редактора markdown или html
var targetToPasteSelector = "";
window.ondragover = function(e) {e.preventDefault();};
window.ondrop = function(e) {e.preventDefault(); 
upload(e.dataTransfer.files[0]); };
window.upload = function(file) {
        if (!file || !file.type.match(/image.*/)) return;
        var fd = new FormData(); 
        fd.append("image", file); 
        var xhr = new XMLHttpRequest(); 
        xhr.open("POST", "https://api.imgur.com/3/image.json"); 
        xhr.onload = function() {
            var imgurl = JSON.parse(xhr.responseText).data.link;
			var ed = document.querySelector(targetToPasteSelector);
			ed.insertAdjacentHTML('afterbegin','<img src="'+imgurl+'"/>'); 
//для markdown убрать img тег
	    };
        xhr.setRequestHeader('Authorization', 'Client-ID 28aaa2e823b03b1');
xhr.send(fd);
    }
})();

Можно так же оформить все в виде расширения для браузера, но это возможно, только добавив разрешающую политику в helmet-csp для api.imgur.com.

Разумеется Client-ID лучше использовать другой.

PS Ну а если есть время, то можно сделать все с использованием
https://ipfs.io/docs/getting-started/
https://github.com/ipfspics/ipfspics-server
https://storj.io/

@serejandmyself
Copy link

Решение есть в 17 ХФ

@On1x
Copy link

On1x commented Aug 2, 2017

@serejandmyself - можно узнать, что за решение? Свой хостинг картинок Голоса? Где можно почитать api по загрузке и получения линка?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants