Разное: Сокращай, переходи, властвуй!
10.11.2014


Лирическое отступление

А Вы знаете, с какими трудностями порой приходится сталкиваться в процессе разработки чего-либо? Например, с какой-нибудь непонятной политикой безопасности? С запретом чего-либо? Например, кросс-доменных соединений?

Как Вы, наверное, знаете, у меня есть два сайтика: небольшой файлообменник и сокращатель ссылок. В принципе, при загрузке файла генерируется и так не очень длинная ссылка, но я всё-таки решил "прикрутить" к файлообменнику функцию по её сокращению, так сказать, не отходя от кассы. И казалось бы, чего проще: отправляем запрос на сервер и получаем ответ! Но не тут-то было. Ведь запрещено посылать запросы скриптам на другом домене. Впрочем, сейчас полно способов это обойти, но я решил лишний раз не лезть в готовые скрипты и написал скрипт-посредник, который принимает запрос от клиента, отправляет данные на другой домен и переадресовывает ответ обратно. Но вновь посыпались ошибки. Оказывается, POST-запросы с других доменов на моём хостинге тоже не разрешены! И вновь, чтобы не лезть в готовый код, пришлось написать ещё один скрипт на домене сокращателя ссылок, который получает GET-запрос с адресом и отправляет его соседнему скрипту POST-методом.

Таким образом, из-за политики запретов пришлось написать два лишних скриптовых файла вместо того, чтобы просто отправить запрос. Но зато я могу представить небольшое API. Правда, оно реально очень упрощённое.


Как получить короткую ссылку?

Адрес для запроса: http://kexp.tk/content/shortener_wrapper.php.

Параметры (взаимоисключающие, причём приоритет у url выше!):

  • url - любой URL-адрес. Причём корректность проверяется только по тому, начинается ли он на "http" или "https". Моё дело маленькое - создать ассоциацию моей ссылки с определённым текстом, остальное меня не касаетя.
  • urls - можно передавать несколько URL-адресов, разделяя их символами переноса строки и перевода каретки. То есть одна строчка - один адрес. Удобно для списков, но, например, в браузере такое уже не ввести.

Возвращает строки:

  • (для url в случае упеха) OK <код_ссылки>. Код используется в запросе к главной странице сокращателя ссылок: http://kexp.tk?<код_ссылки>.
  • (для url) ONLY_URL - адрес не начинается на "http" или "https".
  • (для url) TOO_LONG_URL - ссылка слишком длинная.
  • (для urls в случае успеха) OK [код_группы] [код_ссылки1]<br/>[код_ссылки2]<br/>[...] - для списка, кроме самих сокращённых ссылок создаётся ссылка, при переходе на которую генерируется страница с перечислением исходных ссылок.
  • (для urls) ONLY_URLS - какая-то ссылка в списке не начинается на "http" или "https".
  • (для urls) TOO_MANY_URLS - слишком много ссылок в списке.
  • DB_ERROR - возникла какая-то ошибка при работе с базой данных. Попробуйте повторить позднее или свяжитесь со мной.
  • WRAPPER_ARG_ERR или WRONG_PARAM_NAME - неправильно указаны параметры в запросе. Или их вообще нет.


Примеры

Запрос: http://kexp.tk/content/shortener_wrapper.php?url=http://kexp.tk/content/shortener_wrapper.php
Ответ: OK ocfe32
Готовая ссылка: http://kexp.tk?ocfe32

Запрос: http://kexp.tk/content/shortener_wrapper.php?urls=kexp.tk
Ответ: ONLY_URLS
Если бы запрос был корректным, было бы что-то вида: OK fj54eo dm654s<br/>th3l0s<br/>nbdk3n