URL rövidítés kódból 2 – Bit.ly

Legutóbb bemutattam, milyen egyszerű a TinyURL-t REST-es API-ja segítségével beépíteni saját alkalmazásunkba. Nem a TinyURL az egyetlen ilyen szolgáltatás, léteznek mások is az interneten. A Bit.ly például statisztikát is ad a rövidített URL-ek használatáról, cserébe természetesen regisztrálnunk kell.

A regisztráció után kaphatunk egy API key-t, a felhasználónevünket és ezt a kulcsot kell beépítenünk a kódunkba, ha az API-n keresztül akarjuk elérni a szolgáltatást. A jelszót nem kell bedrótoznunk.

Az URL rövidítéshez egy REST-es hívást kell küldenünk az alábbi címre, a helyőrzők helyére értelemszerűen behelyettesítve a hosszú URL-t, a belépési nevünket és a kapott API kulcsot:

  const string SERVICEFORMAT = 
"http://api.bit.ly/v3/shorten?format=xml&longUrl={0}&login={1}&apiKey={2}&version=3.0";

A szervertől kapott válasz formátuma a következő:

  HTTP/1.1 200 OK
  Server: nginx/0.7.42
  Date: Sun, 13 Jun 2010 04:03:32 GMT
  Content-Type: application/xml; charset=UTF-8
  Connection: keep-alive
  MIME-Version: 1.0
  Content-Length: 344

  <?xml version="1.0" encoding="UTF-8"?>
  <response>
    <status_code>200</status_code>
    <status_txt>OK</status_txt>
    <data>
        <url>http://bit.ly/crT0M6</url>
        <hash>crT0M6</hash>
        <global_hash>bwJlya</global_hash>
        <long_url>http://www.msdnkk.hu</long_url>
        <new_hash>0</new_hash>
    </data>
  </response>

Ami ebből érdekes számunka, az a status_code és az url mezők, az utóbbit csak a status mezők ellenőrzése után szabad figyelembe venni. Csinálhatunk a válaszhoz egy burkoló osztályt:

  class BitlyResult
  {
    public string StatusCode { get; set; }
    public string StatusText { get; set; }
    public string ShortUrl { get; set; }
    public bool IsValid
    {
      get
      {
        return this.StatusCode.Equals( "200", StringComparison.OrdinalIgnoreCase ) && 
this.StatusText.Equals( "OK", StringComparison.OrdinalIgnoreCase ); } } }

Az egész szolgáltatáshívást pedig az alábbi metódusba csomagolhatjuk be:

  static string Shorten( string longUrl, string login, string apiKey )
  {
    string serviceUrl = String.Format( CultureInfo.InvariantCulture, 
SERVICEFORMAT,
HttpUtility.UrlEncode( longUrl ), login, apiKey ); XDocument response = XDocument.Load( serviceUrl ); BitlyResult result = ( from r in response.Descendants( "response" ) select new BitlyResult { StatusCode = r.Element( "status_code" ).Value, StatusText = r.Element( "status_txt" ).Value, ShortUrl = r.Element( "data" ).Element( "url" ).Value }
).Single(); return result.IsValid ? result.ShortUrl : longUrl; }

Nem annyira Einsteines, mint a TinyURL, de cserébe kapunk sok plusz statisztikai információt a rövidített címek használatáról.

 

Technorati-címkék: ,,


Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2010.06.14. 13:04:34 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • Custom error beállítása nagyon jó dolog

    Gincsai Gábor A minap kaptam egy levelet, hogy egy közösségi oldalon ismerősnek jelöltek. Sajnos csak ma tudtam elolvasni a levelet, holott már pár napja megkaptam, mert a levelet kiszűrte a spamfilter. Ez kicsit kellemetlen, viszont teljesen meg lehet érteni a spamfiltert ugyanis a levél angolul van, kevés szöveget de annál több linket tartalmaz. No igazából ez sok emberrel megesik nem is ezért írom ezt a bejegyzést. Tovább »
  • Tipikus ASP.NET hozzáférési szintek

    Dávid Zoltán Az ASP.NET-es erőforrások (például aspx oldalak) a kezdetek óta védhetőek web.config-ban elhelyezett deklaratív bejegyzésekkel. Az IIS7 megjelenése óta az ilyen jellegű deklaratív védelem minden webes erőforrásnak (például PNG állományoknak) is alapértelmezetten kijár. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások