app.go
changeset 120 579912e9d0ef
parent 84 519be52bfced
child 130 c450bb73f59a
equal deleted inserted replaced
119:22c8c58ad61b 120:579912e9d0ef
     1 package gondole
     1 package gondole
     2 
     2 
     3 import (
     3 import (
     4 	"encoding/json"
       
     5 	"log"
       
     6 	"net/url"
     4 	"net/url"
     7 	"strings"
     5 	"strings"
     8 
     6 
     9 	"github.com/sendgrid/rest"
     7 	"github.com/sendgrid/rest"
    10 )
     8 )
    35 		Name:        name,
    33 		Name:        name,
    36 		APIBase:     apiPath,
    34 		APIBase:     apiPath,
    37 		InstanceURL: instanceURL,
    35 		InstanceURL: instanceURL,
    38 	}
    36 	}
    39 
    37 
    40 	req := g.prepareRequest("apps")
    38 	params := make(apiCallParams)
       
    39 	params["client_name"] = name
       
    40 	params["scopes"] = strings.Join(scopes, " ")
    41 	if redirectURI != "" {
    41 	if redirectURI != "" {
    42 		req.QueryParams["redirect_uris"] = redirectURI
    42 		params["redirect_uris"] = redirectURI
    43 	} else {
    43 	} else {
    44 		req.QueryParams["redirect_uris"] = NoRedirect
    44 		params["redirect_uris"] = NoRedirect
    45 	}
       
    46 	req.QueryParams["client_name"] = name
       
    47 	req.QueryParams["scopes"] = strings.Join(scopes, " ")
       
    48 	req.Method = rest.Post
       
    49 
       
    50 	r, err := rest.API(req)
       
    51 	if err != nil {
       
    52 		log.Fatalf("error can not register app: %v", err)
       
    53 	}
    45 	}
    54 
    46 
    55 	var resp registerApp
    47 	var app registerApp
    56 
    48 	if err := g.apiCall("apps", rest.Post, params, &app); err != nil {
    57 	err = json.Unmarshal([]byte(r.Body), &resp)
    49 		return nil, err
    58 	if err != nil {
       
    59 		log.Fatalf("error can not register app: %v", err)
       
    60 	}
    50 	}
    61 
    51 
    62 	g.ID = resp.ClientID
    52 	g.ID = app.ClientID
    63 	g.Secret = resp.ClientSecret
    53 	g.Secret = app.ClientSecret
    64 
    54 
    65 	return
    55 	return
    66 }
    56 }