reprogl

Форк
0
50 строк · 961.0 Байт
1
package oauth
2

3
import (
4
	"encoding/json"
5
	"strings"
6
)
7

8
type Gender string
9

10
type ResourceOwnerInterface interface {
11
	GetUserData() (*UserData, error)
12
}
13

14
const (
15
	Male    Gender = "male"
16
	Female  Gender = "female"
17
	Unknown Gender = "n/a"
18
)
19

20
type UserData struct {
21
	ID          string `json:"id"`
22
	Username    string `json:"username,omitempty"`
23
	DisplayName string `json:"displayName,omitempty"`
24
	FirstName   string `json:"firstName,omitempty"`
25
	LastName    string `json:"lastName,omitempty"`
26
	Gender      Gender `json:"gender,omitempty"`
27
	Email       string `json:"email,omitempty"`
28
	Avatar      string `json:"avatar,omitempty"`
29
	Provider    string `json:"dataProvider"`
30

31
	RawData string `json:"rawData"`
32
}
33

34
func (a *Gender) UnmarshalJSON(b []byte) error {
35
	var s string
36
	if err := json.Unmarshal(b, &s); err != nil {
37
		return err
38
	}
39

40
	switch strings.ToLower(s) {
41
	case "male":
42
		*a = Male
43
	case "female":
44
		*a = Female
45
	default:
46
		*a = Unknown
47
	}
48

49
	return nil
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.