Feedback

C# - Eine URL mit dem Dienst bit.ly verkürzen

Veröffentlicht von am 1/12/2010
(3 Bewertungen)
Mit Hilfe dieser Funktion kann man eine URL mit Hilfe des Dienstes bit.ly verkürzen. Die API von bit.ly benötigt Zugangsdaten, die man nach dem kostenlosen Registrieren über die URL http://bit.ly/account/your_api_key erhält.

Der Parameter addHistory bestimmt, ob die verkürzte URL in den Verlauf des eigenen bit.ly Accounts übernommen werden soll oder nicht.

Als Ergebnis gibt diese Funktion eine Uri mit der verkürzten URL zurück. Trat ein Fehler beim Verkürzen auf wird automatisch die ursprüngliche URL zurückgegeben um eine umständliche Fehlerbehandlung zu vermeiden.
/// <summary>Verkürzt die angegebene URL mit hilfe von Bit.ly</summary>
/// <param name="longUri">Die zu verkürzende lange URL.</param>
/// <param name="login">Der Login-Name des zu verwendenden bit.ly Accounts (http://bit.ly/account/your_api_key).</param>
/// <param name="apiKey">Der API-Key des zu verwendenden bit.ly Accounts (http://bit.ly/account/your_api_key).</param>
/// <param name="addHistory">Wenn dieser Parameter auf <c>true</c> gesetzt wird, werden die verkürzten URLs im Account des Benutzers gespeichert.</param>
/// <returns>Eine verkürzte Bit.ly Url, oder die OriginalUrl wenn bei der Verkürzung ein Fehler aufgetreten ist.</returns>
private Uri ShortenUri(Uri longUri, string login, string apiKey, bool addHistory) {
  const string bitlyUrl = @"http://api.bit.ly/shorten?longUrl={0}&apiKey={1}&login={2}&version=2.0.1&format=json&history={3}";
  var request = WebRequest.Create(string.Format(bitlyUrl, longUri, apiKey, login, addHistory ? "1" : "0"));
  var response = (HttpWebResponse)request.GetResponse();
  string bitlyResponse;
  using (var reader = new StreamReader(response.GetResponseStream())) {
    bitlyResponse = reader.ReadToEnd();
  }
  response.Close();
  if (!string.IsNullOrEmpty(bitlyResponse)) {
    const RegexOptions options = ((RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline) | RegexOptions.IgnoreCase);
    const string rx = "\"shortUrl\":\\ \"(?<short>.*?)\"";
    Regex reg = new Regex(rx, options);
    string tmp = reg.Match(bitlyResponse).Groups["short"].Value;
    return string.IsNullOrEmpty(tmp) ? longUri : new Uri(tmp);
  }
  return longUri;
}
Abgelegt unter shortener, shorturl, tinyurl, bitly.

2 Kommentare zum Snippet

M1C schrieb am 1/13/2010:
find ich recht nützlich und schön gemacht =)
9 Punkte von mir
Gordon Breuer schrieb am 1/19/2010:
Danke :)
 

Logge dich ein, um hier zu kommentieren!