czwartek, 13 lutego 2014

Jak przygotować link w Oracle APEX (cz. 3)

Choć można by pisać o linkach pewnie i pół roku to myślę, że nadszedł czas ostatniego posta na ten temat.
Poprzednie wpisy z serii są tutaj:
1.Jak przygotować Link w Oracle APEX cz. 1
2.Jak przygotować Link w Oracle APEX cz. 2

Tym razem napisze jak w prosty sposób wygenerować "krótki link", czyli np. coś takiego: http://tinyurl.com/pnzuoyj


Tzw. krótkie linki pojawiły się wraz z urządzeniami mobilnymi. Okazało się, że małe ekrany źle "znoszą" długie linki, które w ekstremalnych przypadkach zajmowały pół ekranu. Kilka firm wpadło na pomysł aby udostępnić serwis którego zadaniem jest konwertowanie linku do znacznie krótszej formy. Jeden z najbardziej popularnych serwisów tego typu to tinyURL.com. Serwis oprócz ręcznej konwersji (ze strony www) udostępnia proste api to konwersji przez usługi zewnętrzne. API jest o tyle banalne, że jest dostępne przez metodę GET, czyli wystarczy spreparować odpowiedni adres URL podając w parametrze docelowy adres. Żeby nie przeciągać wystarczy spojrzeć na poniższy kod:

-- Kod zadziała tylko uruchomiony w aplikacji APEX !

DECLARE
  V_URL  VARCHAR2(4000);
  V_LINK VARCHAR2(4000);
BEGIN
  /* Jeżeli chcecie wygenerować krótki link poza APEX-em to podstawcie pod V_LINK dowolny adres www*/
V_LINK := APEX_UTIL.URL_ENCODE (apex_util.host_url('SCRIPT') || 'f?p=' || v('APP_ALIAS') || ':HOME:0');
    
V_URL  := APEX_WEB_SERVICE.MAKE_REST_REQUEST( P_URL => 'http://tinyurl.com/api-create.php?url='||V_LINK,
                                                P_HTTP_METHOD => 'GET' );
END;
Jeżeli powyższy przykład będzie uruchamiany na Oracle 11g i wyżej to należy dla schematu APEX_040200 (w nowszej wersji APEX-a nazwa schematu może być inna) ustawić odpowiednią politykę ACL (uruchomić skrypt który jest w dokumentacji).

A teraz po kolei co się dzieje:
V_LINK - zmienna trzymająca adres docelowy. Szczegóły odnośnie generowania linku z APEX można znaleźć w pierwszym poście cyklu o linkach. Dodatkowo użyta jest funkcja APEX_UTIL.URL_ENCODE, której zadaniem jest zakodowanie wszystkich znaków języka HTML tak, żeby nie były interpretowane.
V_URL - zmienna, która otrzyma wartość zwrotną z serwisu tinyURL w wyniku użycia funkcji APEX_WEB_SERVICE.MAKE_REST_REQUEST. Po otrzymaniu wartości (krótki adres) zmienną możemy wykorzystać w dowolny sposób, np. użyć w treści maila lub zwrócić na stronę do któregoś itema.




Brak komentarzy:

Prześlij komentarz