Ejemplo n.º 1
0
func NewMailClient(cfg config.Config) (MailClient, error) {
	switch cfg.OptEmailService() {
	case "none":
		return NewNoOpMailClient()
	case "sendgrid":
		username := cfg.OptSendgridUsername()
		secret := cfg.OptSendgridSecretKey()
		return NewSendGridMailClient(username, secret)
	default:
		return nil, fmt.Errorf("Unsupported mail service: %s", cfg.OptEmailService())
	}
}
Ejemplo n.º 2
0
func AddRoutes(r *mux.Router, cfg config.Config, pigeonSys jobqueue.System) error {
	store := sessions.NewCookieStore([]byte(cfg.OptProductionSecret()))

	outbox := pigeonSys.NewOutbox()

	forwardAsPigeonJob := func(httpEndpoint, httpMethods, jobKey string) {
		canolog.Info("Registering route: ", httpEndpoint, "  to ", jobKey)
		r.HandleFunc(
			httpEndpoint,
			CanopyRestJobForwarder(
				jobKey,
				store,
				cfg.OptAllowOrigin(),
				outbox,
			),
		).Methods(httpMethods)
	}

	// TODO: Need to handle allow-origin correctly!
	// TODO: Can we automate all this?
	r.HandleFunc("/", rootRedirectHandler).Methods("GET")
	forwardAsPigeonJob("/api/activate", "POST", "api/activate")
	forwardAsPigeonJob("/api/create_devices", "POST", "api/create_devices")
	forwardAsPigeonJob("/api/create_user", "POST", "api/create_user")
	forwardAsPigeonJob("/api/device/{id}", "GET", "GET:api/device/id")
	forwardAsPigeonJob("/api/device/{id}", "POST", "POST:api/device/id")
	forwardAsPigeonJob("/api/device/{id}", "DELETE", "DELETE:api/device/id")
	forwardAsPigeonJob("/api/device/{id}/{var}", "GET", "api/device/id/var")
	forwardAsPigeonJob("/api/finish_share_transaction", "POST", "api/finish_share_transaction")
	forwardAsPigeonJob("/api/info", "GET", "api/info")
	forwardAsPigeonJob("/api/login", "POST", "api/login")
	forwardAsPigeonJob("/api/logout", "GET", "api/logout")
	forwardAsPigeonJob("/api/logout", "POST", "api/logout")
	forwardAsPigeonJob("/api/user/self", "GET", "GET:api/user/self")
	forwardAsPigeonJob("/api/user/self", "POST", "POST:api/user/self")
	forwardAsPigeonJob("/api/user/self", "DELETE", "DELETE:api/user/self")
	forwardAsPigeonJob("/api/user/self/devices", "GET", "api/devices")
	forwardAsPigeonJob("/api/reset_password", "POST", "api/reset_password")
	forwardAsPigeonJob("/api/share", "POST", "api/share")

	return nil
}