Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 mega.nz, c++ sdk. Как загрузить файл по паблик - ссылке?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2114
MS VS-2019 (CE)
Мега: mega.nz
SDK: Mega SDK
Задача: по публичной ссылке "mega" на файл загрузить его в указанное место, без указания логина/пароля.

Обычно: создаю экземпляр объекта mega::MegaApi, к нему в пару экземпляр своего наследника от mega::MegaListener, связываю, вызываю логин и занимаюсь своими делами. Все делается в методах слушателя в отдельной нити.

С паролем/логином не интересно. Во-первых, небезопасно, во-вторых, большие объемы метаданных (почти сто тысяч файлов), директория долго грузится, долго расшифровывается... А по прямым ссылкам должно быть быстро (так пишут в документации).

Вопрос: как загрузить файл по вот этой (например) http://mega.nz/file/iTwigAiI#wECWvRlPApAAqffltKtRMeGtXw-gCVKgV379AAFzMTY ссылке?
Спасибо.
26 апр 21, 16:45    [22314602]     Ответить | Цитировать Сообщить модератору
 Re: mega.nz, c++ sdk. Как загрузить файл по паблик - ссылке?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2114
Разобрался.
1. Создаем объект mega::MegaApi

  mega::MegaApi* megaApi = new mg::MegaApi(тра-ля-ля);

3. Обращаемся к методу mega::MegaApi.getPublicNode с параметром url публичной ссылки, например:

 	megaApi->getPublicNode(R"(http://mega.nz/file/iTwigAiI#wECWvRlPApAAqffltKtRMeGtXw-gCVKgV379AAFzMTY)");


2. Нужно определить свой класс - слушатель, наследник mega::MegaListener

class c_my_download_by_public_link_listener : public mega::MegaListener{

в котором в перекрытом методе
	virtual void onRequestFinish(mega::MegaApi* api, mega::MegaRequest* request, mega::MegaError* e) {

- особым образом обработать запрос типа TYPE_GET_PUBLIC_NODE: из запроса получить мега-нод, который уже загружаем обычным образом
		switch (request->getType()) {
...
		case mega::MegaRequest::TYPE_GET_PUBLIC_NODE: {
			auto pn = request->getPublicMegaNode(); 
			api->startDownload(pn, куда-грузить);
			break;
		}

2.5 Между шагами 1 и 3 к mega::MegaApi добавляем вышеописанный объект - слушатель.

	c_my_download_by_public_link_listener listener(параметры);
	megaApi->addListener(&listener);
27 апр 21, 00:31    [22314832]     Ответить | Цитировать Сообщить модератору
 Re: mega.nz, c++ sdk. Как загрузить файл по паблик - ссылке?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2114
Мало ли. Вдруг кому пригодится. Сервис mega.nz весьма популярен. :)
27 апр 21, 00:32    [22314833]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить