databag/net/server/internal/getAccountToken_endpoint.go

46 lines
1.1 KiB
Go
Raw Normal View History

2022-01-15 22:54:49 +00:00
package databag
import (
"log"
"strings"
"errors"
"net/http"
"encoding/json"
"gorm.io/gorm"
"databag/internal/store"
)
func GetAccountToken(w http.ResponseWriter, r *http.Request) {
// extract token
auth := r.Header.Get("Authorization")
token := strings.TrimSpace(strings.TrimPrefix(auth, "Bearer"))
// lookup token
var accountToken store.AccountToken
err := store.DB.Where("token = ?", token).First(&accountToken).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Println("GetAccountToken - token not found");
w.WriteHeader(http.StatusNotFound)
} else {
log.Println("GetAccountToken - failed to retrieve token");
w.WriteHeader(http.StatusInternalServerError)
}
return
}
// return token type
body, err := json.Marshal(accountToken.TokenType);
if err != nil {
log.Println("GetNodeConfig - failed to marshal response");
w.WriteHeader(http.StatusInternalServerError);
return
}
w.Write(body);
w.Header().Set("Content-Type", "application/json charset=UTF-8")
w.WriteHeader(http.StatusOK)
}