urlshortener.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "os"
  7. "strings"
  8. urlshortener "google.golang.org/api/urlshortener/v1"
  9. )
  10. func init() {
  11. registerDemo("urlshortener", urlshortener.UrlshortenerScope, urlShortenerMain)
  12. }
  13. func urlShortenerMain(client *http.Client, argv []string) {
  14. if len(argv) != 1 {
  15. fmt.Fprintf(os.Stderr, "Usage: urlshortener http://goo.gl/xxxxx (to look up details)\n")
  16. fmt.Fprintf(os.Stderr, " urlshortener http://example.com/long (to shorten)\n")
  17. return
  18. }
  19. svc, err := urlshortener.New(client)
  20. if err != nil {
  21. log.Fatalf("Unable to create UrlShortener service: %v", err)
  22. }
  23. urlstr := argv[0]
  24. // short -> long
  25. if strings.HasPrefix(urlstr, "http://goo.gl/") || strings.HasPrefix(urlstr, "https://goo.gl/") {
  26. url, err := svc.Url.Get(urlstr).Do()
  27. if err != nil {
  28. log.Fatalf("URL Get: %v", err)
  29. }
  30. fmt.Printf("Lookup of %s: %s\n", urlstr, url.LongUrl)
  31. return
  32. }
  33. // long -> short
  34. url, err := svc.Url.Insert(&urlshortener.Url{
  35. Kind: "urlshortener#url", // Not really needed
  36. LongUrl: urlstr,
  37. }).Do()
  38. if err != nil {
  39. log.Fatalf("URL Insert: %v", err)
  40. }
  41. fmt.Printf("Shortened %s => %s\n", urlstr, url.Id)
  42. }