app.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 15 Apr 2017 10:26:36 +0200
changeset 120 579912e9d0ef
parent 84 519be52bfced
child 130 c450bb73f59a
permissions -rw-r--r--
Refactor API calls
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
555716349f64 Move App stuff into app.go.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     1
package gondole
555716349f64 Move App stuff into app.go.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     2
555716349f64 Move App stuff into app.go.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     3
import (
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
     4
	"net/url"
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
     5
	"strings"
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
     6
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
     7
	"github.com/sendgrid/rest"
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
     8
)
21
555716349f64 Move App stuff into app.go.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     9
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    10
type registerApp struct {
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    11
	ID           int    `json:"id"`
66
965586c1e3ed Change all ID into string, I guess this was to avoir overflow.
Ollivier Robert <roberto@keltia.net>
parents: 65
diff changeset
    12
	ClientID     string `json:"client_id"`
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    13
	ClientSecret string `json:"client_secret"`
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    14
}
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    15
80
d6e8807818c4 Remove config stuff from here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    16
// NewApp registers a new instance
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    17
func NewApp(name string, scopes []string, redirectURI, instanceURL string) (g *Client, err error) {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    18
	if instanceURL == "" {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    19
		instanceURL = defaultInstanceURL
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    20
	}
80
d6e8807818c4 Remove config stuff from here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    21
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    22
	if !strings.Contains(instanceURL, "://") {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    23
		instanceURL = "https://" + instanceURL
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    24
	}
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    25
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    26
	apiPath := instanceURL + defaultAPIPath
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    27
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    28
	if _, err := url.ParseRequestURI(apiPath); err != nil {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 80
diff changeset
    29
		return nil, err
80
d6e8807818c4 Remove config stuff from here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    30
	}
d6e8807818c4 Remove config stuff from here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    31
d6e8807818c4 Remove config stuff from here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    32
	g = &Client{
84
519be52bfced Some Fixes
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    33
		Name:        name,
519be52bfced Some Fixes
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    34
		APIBase:     apiPath,
519be52bfced Some Fixes
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    35
		InstanceURL: instanceURL,
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    36
	}
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    37
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    38
	params := make(apiCallParams)
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    39
	params["client_name"] = name
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    40
	params["scopes"] = strings.Join(scopes, " ")
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    41
	if redirectURI != "" {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    42
		params["redirect_uris"] = redirectURI
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    43
	} else {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    44
		params["redirect_uris"] = NoRedirect
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    45
	}
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    46
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    47
	var app registerApp
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    48
	if err := g.apiCall("apps", rest.Post, params, &app); err != nil {
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    49
		return nil, err
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    50
	}
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    51
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    52
	g.ID = app.ClientID
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    53
	g.Secret = app.ClientSecret
35
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    54
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    55
	return
27c58d359940 Register the new client if not already done.
Ollivier Robert <roberto@keltia.net>
parents: 27
diff changeset
    56
}