0
Under review

Загрузка и обновление проекта с помощью QR-ссылки. Update project via QR-code (url link)

madmss 8 years ago in General updated by Ekaterina (head of support) 8 years ago 1

Уверен, не я один сталкивался с тем, что обновление по QR-коду не работает.


Действуя по инструкции тут и скачав два примера проекта, в которых используется этот механизм, появилось мнение, что имеет место ошибка в коде приложения, которое распространяется со "стартовым комплектом" (т.к., судя по всему, в нем используются те-же скрипты, что и в приложении из примера).


В моем случае требовалось обновляться с локального сервера. Ссылка в моем случае выглядела так: http://192.168.1.52:8080/main.irpz


Скрипт из примера парсерит эту ссылку с помощью функции:


function parse_url(url) {

var pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");

var matches = url.match(pattern);

return {
scheme: matches[2],
authority: matches[4],
path: matches[5],
query: matches[7],
fragment: matches[9]
};
}

И выполняет загрузку следующим образом:


function HTTPUpdate(url)

{
var parsed_url = parse_url(url);
var downloader = IR.DownLoadProject(
{
type:parsed_url.scheme,
host:parsed_url.authority,
path:parsed_url.path + '?' + parsed_url.query,
});

}


Если выполнить этот код для url="http://192.168.1.52:8080/main.irpz"

то в лог упадет сообщение об отсутствии необходимых параметров:


[09-06-2016 17:30:31.070] INFO authority===192.168.1.52:8080

[09-06-2016 17:30:31.082] INFO fragment===undefined
[09-06-2016 17:30:31.094] INFO path===/main.irpz
[09-06-2016 17:30:31.104] INFO query===undefined
[09-06-2016 17:30:31.115] INFO scheme===http
[09-06-2016 17:30:31.126] ERROR GetPropertyFromObject . No property: method
[09-06-2016 17:30:31.137] ERROR GetPropertyFromObject . No property: login
[09-06-2016 17:30:31.148] ERROR GetPropertyFromObject . No property: password
[09-06-2016 17:30:31.159] ERROR GetPropertyFromObject . No property: port
[09-06-2016 17:30:31.170] ERROR GetPropertyFromObject . No property: multiproject
[09-06-2016 17:30:31.181] ERROR GetPropertyFromObject . No property: name

Принудительное присвоение остальным полям пустых значений помогает, но лишь отчасти. В свойство "authority" из данного RegExp-а попадает порт, и функция подвисает.


Нормально отрабатывает только такой вызов:

IR.DownLoadProject({type:"http",

host:"192.168.1.52",
path:"/main.irpz",
method:"",
login:"",
password:"",
port:"8080",
multiproject:"",

name:""});


То есть требуется, чтобы в стартовом приложении был поправлен парсеринг url и добавлено присвоение неиспользуемым полям пустых значений. Подозреваю, что пока это не поправят, QR-code обновление (в стартовом приложении) тоже работать не будет.

Under review

С рекомендованными обменниками работает корректно, а в новой версии используется скачивание проектов с нашего сайта, для которой это также неактуально. Рассмотрим варианты решения, спасибо