Diablo 2 Character Online Manager

// (c) 2012 HarpyWar
// harpywar@gmail.com
//

[ ОПИСАНИЕ ]

API самодостаточен. Взаимодействует только со своей БД, где хранит файлы всех персонажей и вещей
Работает по типу REST, возвращает данные в JSON.
Вызов осуществляется по шаблону http://d2smanager.harpywar.com/api/{METHOD}/{ARGS}

Может использоваться для создания своего приложения для редактирования Diablo 2 персонажей. Например, бесконечный сундук на сайте, куда игроки могут складывать внутриигровые вещи, или онлайн веб магазин, аукцион и т.п.
Для корректного взаимодействия вашего приложения с Diablo 2 сервером рекомендуется использовать API для D2GS сервера https://github.com/HarpyWar/d2smanager-api


[ МЕТОДЫ ]

UploadCharacter/{url} - загрузка файла персонажа (d2s) с удаленного источника
	url - ссылка на файл, должен быть закодирован алгоритмом base64
	(return) - объект Character
	(errors) - 112

GetCharacterFile/{id} - возвращает файл персонажа в формате d2s
	hash - md5 хеш загруженного ранее персонажа
	(return) - массив байтов
	(errors) - 110

GetCharacter/{id} - получает всю информацию о персонаже, включая все его предметы
	hash - md5 хеш персонажа
	(return) - объект Character
	(errors) - 110


GetItem/{id} - получает всю информацию о предмете
	hash - md5 хеш предмета; можно передать несколько хешей через запятую
	(return) - объект Item
	(errors) - 110

AddItemToCharacter/{charId}/{itemId} - добавляет предмет(ы) к персонажу
	charId - md5 хеш загруженного ранее персонажа
	itemId - md5 хеш добавляемого предмета; можно передать несколько хешей через запятую
	(return) - измененный объект Character
	(errors) - 110

RemoveItemFromCharacter/{charId}/{itemId} - удаляет предмет(ы) из персонажа
	charId - md5 хеш загруженного ранее персонажа
	itemId - md5 хеш добавляемого предмета; можно передать несколько хешей через запятую
	(return) - измененный объект Character
	(errors) - 110

GetItemFile/{id} - возвращает файл предмета в формате d2i
	id - md5 хеш предмета
	(return) - массив байтов
	(errors) - 110

UploadItem/{url} - загрузка файла предмета (d2i) с удаленного источника
	url - ссылка на файл, должен быть закодирован алгоритмом base64
	(return) - объект Item
	(errors) - 112


Помимо вышеуказанных ошибок, для всех методов могут быть возвращены ошибки: 1, 100, 111
    1 - unknown error
    100 - internal error
    110 - not found
    111 - invalid parameters
    112 - invalid data



[ ПРИМЕРЫ ]

Загружаем на сервис файл персонажа из http://harpywar.com/test/characters/vbreality.d2s
В ответ полученм json массив, где помимо остальных данных есть md5 хеш в поле Hash. У каждого из предметов тоже есть такое поле с хешем.
	http://d2smanager.harpywar.com/api/uploadcharacter/aHR0cDovL2hhcnB5d2FyLmNvbS90ZXN0L2NoYXJhY3RlcnMvdmJyZWFsaXR5LmQycw==

Удаляем определенный предмет из персонажа (хеш перса 518141ec17dda85dd41ef4a8b3ca36e3 и хеш предмета aa8ded78a865217f2d46e78f71f8da13 взяли из предыдущего запроса). 
В ответ получили то же самое, что и в предыдущем запросе, только без одного предмета, который был удален. И хеш у персонажа уже другой.
	http://d2smanager.harpywar.com/api/removeitemfromcharacter/518141ec17dda85dd41ef4a8b3ca36e3/aa8ded78a865217f2d46e78f71f8da13

Скачиваем измененного персонажа в виде файла, передав параметром новый хеш персонажа, который получили в предыдущем запросе.
	http://d2smanager.harpywar.com/api/getcharacterfile/20e419ee8a4de652b3a7cf62e9eae23b



Таким образом, все данные хранятся на сервере, и взаимодействие с ними происходит через api
Предметы можно скачать отсюда http://harpywar.com/?a=articles&b=2&c=2&d=15 (ссылка внизу), создавать свои через HeroEditor или ATMA, затем загружать на сервис через метод UploadItem




[ ОШИБКИ ]

В случае возниновения ошибки возвращается http status code = 406.
Объект Error имеет 2 поля: Code (код) и Message (описание)
Например:
	{"Code":110,"Message":"Character 5224bf2be36e22f81dc9fcf0fe6002fa was not found"}



d2smanager graph