Это не баян RSS

Archive

Dec
29th
Wed
permalink

Схема первой реализации спредуса

spreadus (часть ядра можно написать на node.js?)

Независимо от того давал пользователь доступ к api спредуса или нет, разработчику всегда доступны кросдоменные запросы: однако при запросах для каждого сайта храниться отдельный набор cookies, таким образом, что если сайт torrentbox.org авторизовался во vkontakte.ru используя email и пароль, которые ввёл сам пользователь для этих сайтов сайт tfgiant.com не сможет получить доступ к данным vkotankte.ru словно tfgiant.com делает запросы в отдельном браузере (или компьютере)

Примерный сценарий взаимодействия

Пользователь с установленным spreadus (ядро + плагин) заходит на произвольный сайт, например http://torrentbox.org. На этой странице заставляет браузер обратится к плагин. Далее js на странице обращается к данному объекту для получения авторизации:
	var api_proxy = document.getElementById('sprapi'); 
	
	var add_torrent = function(link){
		var params = {
			method: 'add_torrent',
			file: link
		};
		params.signature = sign_params(params, api_proxy.token);
		api_proxy.api(params);
	};
	
	if (api_proxy.token){
		add_torrent('http://torrentbox.org/t/244fba45a');
	} else{
		var callback = function(token){
			add_torrent('http://torrentbox.org/t/244fba45a');
		};
		api_proxy.getAuth(callback);
	}

Если пользователь когда-либо уже давал доступ к api этому сайту, то будет доступно свойство token и вызов api. У npapi есть возможность определять на каком url запущен его объект, и следовательно идентифицировать сайт.

Если пользователь ещё не давал доступ сайту, то сайт запросит авторизацию, а ядро откроет в браузере страницу localhost:500304/getauth/?for=http://torrentbox.org, где пользователь может дать доступ данному сайту к api спредуса. Как только это поизойдёт вызовится callback.

После того как пользователь даёт доступ к api средпуса данному сайту, сайт может добавлять закачки (торренты и файлы в сейти gnutella), управлять списком закачек и их свойствами (свой список для каждого сайта)