-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtw_user.go
141 lines (126 loc) · 4.44 KB
/
tw_user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package database
import (
"context"
"encoding/json"
"github.com/dghubble/oauth1"
"github.com/ninjahome/web-bridge/util"
"golang.org/x/oauth2"
)
type Web3Binding struct {
TwitterID string `json:"twitter_id" firestore:"twitter_id"`
EthAddr string `json:"eth_addr" firestore:"eth_addr"`
SignUpAt int64 `json:"sign_up_at" firestore:"sign_up_at"`
Signature string `json:"signature" firestore:"signature"`
}
type TWUserInfo struct {
ID string `json:"id" firestore:"id"`
Name string `json:"name" firestore:"name"`
ScreenName string `json:"username" firestore:"username"`
Description string `json:"description" firestore:"description"`
ProfileImageUrlHttps string `json:"profile_image_url" firestore:"profile_image_url"`
Verified bool `json:"verified" firestore:"verified"`
}
func (t *TWUserInfo) String() string {
bts, _ := json.Marshal(t)
return string(bts)
}
func (t *TWUserInfo) RawData() []byte {
bts, _ := json.Marshal(t)
return bts
}
type TwUserAccessToken struct {
OauthToken string `json:"oauth_token" firestore:"oauth_token"`
OauthTokenSecret string `json:"oauth_token_secret" firestore:"oauth_token_secret"`
UserId string `json:"user_id" firestore:"user_id"`
ScreenName string `json:"screen_name" firestore:"screen_name"`
}
type TwUserAccessTokenV2 struct {
UserId string `json:"user_id" firestore:"user_id"`
*oauth2.Token
}
func (ut *TwUserAccessToken) GetToken() *oauth1.Token {
return oauth1.NewToken(ut.OauthToken, ut.OauthTokenSecret)
}
func (ut *TwUserAccessToken) String() string {
bts, _ := json.Marshal(ut)
return string(bts)
}
func (dm *DbManager) TwitterBasicInfo(TID string) (*TWUserInfo, error) {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
twitterDoc := dm.fileCli.Collection(DBTableTWUser).Doc(TID)
doc, err := twitterDoc.Get(opCtx)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", TID).Msg("twitterDoc get failed")
return nil, err
}
tu := &TWUserInfo{}
err = doc.DataTo(tu)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", TID).Msg("twitter Doc to TWUserInfo failed")
return nil, err
}
return tu, nil
}
func (dm *DbManager) UpdateBasicInfo(twData *TWUserInfo) error {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
twitterDoc := dm.fileCli.Collection(DBTableTWUser).Doc(twData.ID)
_, err := twitterDoc.Set(opCtx, twData)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", twData.ID).Msg("twitterDoc get failed")
return err
}
util.LogInst().Debug().Str("twitter-id", twData.ID).Msg("update twitter user data success")
return nil
}
func (dm *DbManager) SaveTwAccessToken(token *TwUserAccessToken) error {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
tokenDoc := dm.fileCli.Collection(DBTableTWUserAccToken).Doc(token.UserId)
_, err := tokenDoc.Set(opCtx, token)
return err
}
func (dm *DbManager) GetTwAccessToken(twitterId string) (*TwUserAccessToken, error) {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
tokenDoc := dm.fileCli.Collection(DBTableTWUserAccToken).Doc(twitterId)
doc, err := tokenDoc.Get(opCtx)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", twitterId).Msg("load twitter access token failed")
return nil, err
}
var token TwUserAccessToken
err = doc.DataTo(&token)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", twitterId).Msg("parse twitter access token failed")
return nil, err
}
return &token, nil
}
func (dm *DbManager) SaveTwAccessTokenV2(token *TwUserAccessTokenV2) error {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
tokenDoc := dm.fileCli.Collection(DBTableTWUserAccTokenV2).Doc(token.UserId)
_, err := tokenDoc.Set(opCtx, token)
return err
}
func (dm *DbManager) GetTwAccessTokenV2(twitterId string) (*TwUserAccessTokenV2, error) {
opCtx, cancel := context.WithTimeout(dm.ctx, DefaultDBTimeOut)
defer cancel()
tokenDoc := dm.fileCli.Collection(DBTableTWUserAccTokenV2).Doc(twitterId)
doc, err := tokenDoc.Get(opCtx)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", twitterId).Msg("load twitter access token failed")
return nil, err
}
var token = &TwUserAccessTokenV2{
Token: &oauth2.Token{},
}
err = doc.DataTo(token)
if err != nil {
util.LogInst().Err(err).Str("twitter-id", twitterId).Msg("parse twitter access token failed")
return nil, err
}
return token, nil
}