gifts2017

Обработка для обновления публикаций на Инфостарте (Управляемая форма)

Опубликовал Андрей Карпов (karpik666) в раздел Обмен - Интеграция с WEB

Вы уже публиковались на сайте? Тогда это обработка для вас.

В недавнем прошлом сайт Инфостарт нас обрадовал новым и осовремененным редактором публикаций, вместе с ним появилась такая интересная штука, как "Api ссылка для обновления". 

Что же это за зверь такой? Данная вещь позволяет обновлять файл вашей публикации с помощью HTTP запросов программно. К сожалению до сего момента внятного описания, и нормальной инструкции по данной фиче не было, пока наконец нас не осчастливили обработкой-примером, в котором демонстрировались возможности данного api.

Данная обработка является дополненной и измененной версией представленной в примере. Теперь можно собственноручно оценить, насколько удобен функционал по программному обновлению публикаций. 

Как же все-таки использовать данный функционал? Во-первых, необходимо получить api ссылку вашего файла, у каждого файла она своя, если у вас в публикации 5 файлов, то, значит, будет 5 ссылок. Зайдите в редактор вашей публикации, внизу под нужным файлом будет ссылка.

Вставляем ссылку в поле api url, выбираем, необходимо ли вам обновлять также версию файла. Выбираем как обновить публикацию через файл, для этого необходимо будет выбрать файл у вас на компьютере, либо указав ссылку, тогда Инфостарт самостоятельно скачает ее из интернета, поддерживает только прямые ссылки (т.е. не ссылки например яндекс диска). Нажимаем "Обновить", если прошло все успешно, то программа сообщит Success.

Пример

Обновлено 09.08.2016

Добавил возможность обновлять ссылку api без обновления файла публикации. (параметр "nh")

Исправил работу защищенного соединеиня, теперь чтобы публикация была обновлена при нем, поменяйте в своей ссылке http на https.

Скачать файлы

Наименование Файл Версия Размер
Работа с api Инфостарт 4
.epf 11,32Kb
08.08.16
4
.epf 1.0.1 11,32Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Дмитрий Клименко (dk) 09.08.16 09:21
UPD: Ссылка теперь не обновляется при каждом запросе (это был баг), hash остается неизменным. Если необходимо обновить hash ссылки, то нужно передать параметр nh=1, пример:
http://infostart.ru/public/edit/?a=s&f=FILE_ID&h=HASH_CODE&lnk=PATH_TO_IMAGE&nh=1
В ответ придет тот же JSON, только на этот раз с NEW_API_LINK в котором собственно будет новая ссылка.
Также прошу обратить внимание, что параметр nh=1 можно использовать и без отправки самого файла.
пример:
http://infostart.ru/public/edit/?a=s&f=FILE_ID&h=HASH_CODE&nh=1
В этом случае меняется только ссылка и прилетает ответом в формате JSON в поле NEW_API_LINK.

Если есть вопросы или предложения по работе API - ссылок, буду рад их выслушать =)
2. Андрей Карпов (karpik666) 09.08.16 09:42
(1) dk, сейчас тогда публикацию переделаю с новыми параметрами. Вообще в идеале хочется видеть, что отправляешь запрос на публикацию, а тебе в ответ какие файлы там есть, какого они размера и какие на них ссылки, плюс убрать возможность без указания пароля пользователя обновлять файл по api ссылке, а то какая-то дыра в безопасности.
3. Дмитрий Клименко (dk) 09.08.16 09:57
(2) karpik666, Список файлов - интересная идея, реализуем такой функционал в будущем.
Касаемо авторизации по логину/паролю получается наоборот, если вы их будете хранить в настройках своей обработки, то вы фактически дарите полный доступ к своему аккаунту для 1С. Приведу простой пример.
1) Имеем вашу обработку на машине А, в ней вы указываете ссылку на обновление файла АА
2) Имеем вашу обработку на машине Б, в ней вы указываете ссылку на обновление файла ББ
3) Имеем вашу учетку с полным доступом ко всем публикациям.

Пример, вы захотели лишить права обновления машину А, для этого вам достаточно сделать обновление hash-кода в публикации, доступ у машины А мгновенно теряется, у машины Б остается. В случае с логином/паролем вы отбираете доступ у машины А и Б.
Так же по вашей схеме, у машины А и Б есть доступ к вашему аккаунту с возможностью тратить ваши $m и руб, что не есть хорошо.
Если боитесь, что кто-то перехватит ваш hash - пользуйте ssl и обновляйтесь так:
https://infostart.ru/public/edit/?a=s&f=FILE_ID&h=HASH_CODE&lnk=PATH_TO_IMAGE
Ну и если совсем страшно, то можно менять hash при каждом обновлении или раз в n-секунд =)


4. Андрей Карпов (karpik666) 09.08.16 10:04
(3) dk, в данном случае вы предполагаете, что разработку ведет какая-то команда человек, которая имеет только доступ к обновлению одной публикации из многих, тогда такой вариант оправдан. Я же предполагал, что это будет что-то типо программного аналога личного кабинета: т.е. ты заходишь в обработку, указываешь свой логин и пароль, и входишь на сайт, с одной стороны у тебя список твоих публикаций, нажимаешь на него открывается окно в котором можно обновить текст публикации, обновить файлы, либо дополнительную информацию, и все это не заходя на сайт, либо еще один вариант: ты указываешь адрес публикации, которую ты хочешь скачать, а тебе в ответ приходит ее версия и дата последнего обновления, и ты можешь сравнить с тем, что ты уже скачал.
5. Дмитрий Клименко (dk) 09.08.16 10:31
(4) karpik666, Мухи отдельно, котлеты отдельно =)
Вопрос про безопасность:
плюс убрать возможность без указания пароля пользователя обновлять файл по api ссылке, а то какая-то дыра в безопасности.

Ответ на него был выше, плюс добавлю, что связка FILE_ID и HASH аналогична связке LOGIN и PASS, только в первом случае на доступы еще и наложены ограничения в области их применения, что само собой безопаснее, чем LOGIN и PASS
в данном случае вы предполагаете, что разработку ведет какая-то команда человек, которая имеет только доступ к обновлению одной публикации из многих, тогда такой вариант оправдан

Не совсем, тут упор сделан на безопасность, удобство и гибкость.

Я же предполагал, что это будет что-то типо программного аналога личного кабинета: т.е. ты заходишь в обработку, указываешь свой логин и пароль, и входишь на сайт, с одной стороны у тебя список твоих публикаций, нажимаешь на него открывается окно в котором можно обновить текст публикации, обновить файлы, либо дополнительную информацию, и все это не заходя на сайт, либо еще один вариант: ты указываешь адрес публикации, которую ты хочешь скачать, а тебе в ответ приходит ее версия и дата последнего обновления, и ты можешь сравнить с тем, что ты уже скачал.


Это по большей части описание вашей клиентской стороны, написать вы ее можете как вам удобней. Если подскажете, что вам не хватает для этого, это уже другой вопрос. Про список файлов я писал выше, продумаем такой функционал.
6. Андрей Карпов (karpik666) 09.08.16 10:34
(5) dk, ну для клиентской стороны только нужен список доступных команд, которые можно передавать на веб-сервис инфостарт через методы post или get, и какие ответы на них, которые можно будет уже обрабатывать на клиентской стороне.
7. Андрей Карпов (karpik666) 09.08.16 10:35
(5) dk, спасибо за обратную связь=)
8. Дмитрий Клименко (dk) 09.08.16 10:39
(6) karpik666, Пока только то, что вы применили в обработке =(
В дальнейшем, если тема будет интересна, можно сделать полноценный SOAP.
9. Ivan Khorkov (vano-ekt) 10.08.16 10:37
а мою конфу выпилили в марте
Внимание! Публикация отправлена на редактирование.
× Причина: Данный товар не принимается в магазин, так как нарушает пользователькое соглашение: 5.2.4. использовать программное обеспечение и осуществлять действия, направленные на нарушение нормального функционирования Сайта и его сервисов; 5.2.9. осуществлять (пытаться получить) доступ к каким-либо Услугам иным способом, кроме как через интерфейс, предоставленный Администрацией Сайта, за исключением случаев, когда такие действия были прямо разрешены Пользователю в соответствии с отдельным соглашением с Администрацией;

http://image.prntscr.com/image/67e23ad5497a43d2833a274156ede9d9.png
10. Андрей Карпов (karpik666) 10.08.16 10:41
(9) vano-ekt, здравствуйте, а в чем заключалась ваша публикация? По-моему данная обработка как раз соответствует данному пункту правил
5.2.9. осуществлять (пытаться получить) доступ к каким-либо Услугам иным способом, кроме как через интерфейс, предоставленный Администрацией Сайта, за исключением случаев, когда такие действия были прямо разрешены Пользователю в соответствии с отдельным соглашением с Администрацией;
Ведь доступ явно предоставлен администрацией сайта.
11. Андрей Карпов (karpik666) 10.08.16 10:57
(9) vano-ekt, а понял, ну так у вас парсер сайта, а у меня обработка, которая использует api инфостарт, и получает только данные, которые предоставляет сам сайт.