1// Copyright 2017 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package main
6
7import (
8	"fmt"
9	"log"
10	"net/http"
11	"os"
12	"strings"
13
14	urlshortener "google.golang.org/api/urlshortener/v1"
15)
16
17func init() {
18	registerDemo("urlshortener", urlshortener.UrlshortenerScope, urlShortenerMain)
19}
20
21func urlShortenerMain(client *http.Client, argv []string) {
22	if len(argv) != 1 {
23		fmt.Fprintf(os.Stderr, "Usage: urlshortener http://goo.gl/xxxxx     (to look up details)\n")
24		fmt.Fprintf(os.Stderr, "       urlshortener http://example.com/long (to shorten)\n")
25		return
26	}
27
28	svc, err := urlshortener.New(client)
29	if err != nil {
30		log.Fatalf("Unable to create UrlShortener service: %v", err)
31	}
32
33	urlstr := argv[0]
34
35	// short -> long
36	if strings.HasPrefix(urlstr, "http://goo.gl/") || strings.HasPrefix(urlstr, "https://goo.gl/") {
37		url, err := svc.Url.Get(urlstr).Do()
38		if err != nil {
39			log.Fatalf("URL Get: %v", err)
40		}
41		fmt.Printf("Lookup of %s: %s\n", urlstr, url.LongUrl)
42		return
43	}
44
45	// long -> short
46	url, err := svc.Url.Insert(&urlshortener.Url{
47		Kind:    "urlshortener#url", // Not really needed
48		LongUrl: urlstr,
49	}).Do()
50	if err != nil {
51		log.Fatalf("URL Insert: %v", err)
52	}
53	fmt.Printf("Shortened %s => %s\n", urlstr, url.Id)
54}
55