-
Notifications
You must be signed in to change notification settings - Fork 5
/
interface.go
204 lines (187 loc) Β· 6.13 KB
/
interface.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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
package binglib
import (
"time"
"github.com/google/uuid"
)
const (
bingBaseUrl = "https://www.bing.com"
sydneyBaseUrl = "wss://sydney.bing.com"
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0"
)
type Chat struct {
cookies string
xff string // X-Forwarded-For Header
bypassServer string
chatHub *ChatHub
BingBaseUrl string
SydneyBaseUrl string
}
type Image struct {
cookies string
xff string // X-Forwarded-For Header
bypassServer string
BingBaseUrl string
}
type Message struct {
Role string `json:"role,omitempty"`
Content any `json:"content"`
}
type ContentPart struct {
Type string `json:"type"`
Text string `json:"text,omitempty"`
ImageUrl struct {
Url string `json:"url,omitempty"`
} `json:"imageUrl,omitempty"`
}
type ChatHub struct {
style string
chatReq ChatReq
}
type ChatReq struct {
ConversationId string `json:"conversationId"`
ClientId string `json:"clientId"`
ConversationSignature string `json:"conversationSignature"`
EncryptedConversationSignature string `json:"encryptedconversationsignature"`
}
type SystemContext struct {
Author string `json:"author"`
Description string `json:"description"`
ContextType string `json:"contextType"`
MessageType string `json:"messageType"`
MessageId string `json:"messageId,omitempty"`
SourceName string `json:"sourceName"`
SourceUrl string `json:"sourceUrl"`
}
type Plugins struct {
Id string `json:"id"`
}
type ResponsePayload struct {
Type int `json:"type"`
Target string `json:"target"`
InvocationId int `json:"invocationId,string"`
Arguments []struct {
Messages []respMessageStruct `json:"messages"`
FirstNewMessageIndex int `json:"firstNewMessageIndex"`
SuggestedResponses any `json:"suggestedResponses"`
ConversationId string `json:"conversationId"`
RequestId string `json:"requestId"`
ConversationExpiryTime time.Time `json:"conversationExpiryTime"`
Telemetry struct {
Metrics any `json:"metrics"`
StartTime time.Time `json:"startTime"`
} `json:"telemetry"`
ShouldInitiateConversation bool `json:"shouldInitiateConversation"`
Result struct {
Value string `json:"value"`
Message string `json:"message"`
ServiceVersion string `json:"serviceVersion"`
} `json:"result"`
} `json:"arguments,omitempty"`
Item struct {
Result struct {
Value string `json:"value"`
Message string `json:"message"`
ServiceVersion string `json:"serviceVersion"`
} `json:"result"`
Messages []respMessageStruct `json:"messages"`
} `json:"item,omitempty"`
}
type passRequestStruct struct {
IG string `json:"IG"`
Cookies string `json:"cookies"`
Iframeid string `json:"iframeid,omitempty"`
ConvId string `json:"convId,omitempty"`
RId string `json:"rid,omitempty"`
T string `json:"T"`
Host string `json:"host,omitempty"`
}
type PassResponseStruct struct {
Result struct {
Cookies string `json:"cookies"`
ScreenShot string `json:"screenshot"`
} `json:"result"`
Error string `json:"error"`
}
type respMessageStruct struct {
Text string `json:"text"`
Author string `json:"author"`
From struct {
Id string `json:"id"`
Name any `json:"name"`
} `json:"from"`
CreatedAt time.Time `json:"createdAt"`
Timestamp time.Time `json:"timestamp"`
Locale string `json:"locale"`
Market string `json:"market"`
Region string `json:"region"`
Location string `json:"location"`
LocationHints []struct {
Country string `json:"country"`
CountryConfidence int `json:"countryConfidence"`
State string `json:"state"`
City string `json:"city"`
CityConfidence int `json:"cityConfidence"`
ZipCode string `json:"zipCode"`
TimeZoneOffset int `json:"timeZoneOffset"`
Dma int `json:"dma"`
SourceType int `json:"sourceType"`
Center struct {
Latitude float64 `json:"latitude"`
Longitude float64 `json:"longitude"`
Height any `json:"height"`
} `json:"center"`
RegionType int `json:"regionType"`
} `json:"locationHints"`
MessageId uuid.UUID `json:"messageId"`
RequestId uuid.UUID `json:"requestId"`
Offense string `json:"offense"`
Feedback struct {
Tag any `json:"tag"`
UpdatedOn any `json:"updatedOn"`
Type string `json:"type"`
} `json:"feedback"`
ContentOrigin string `json:"contentOrigin"`
Privacy any `json:"privacy"`
InputMethod string `json:"inputMethod"`
HiddenText string `json:"hiddenText"`
MessageType string `json:"messageType"`
AdaptiveCards []struct {
Type string `json:"type"`
Version string `json:"version"`
Body []struct {
Type string `json:"type"`
Version string `json:"version"`
Body []struct {
Type string `json:"type"`
Text string `json:"text"`
Wrap bool `json:"wrap"`
}
} `json:"body"`
} `json:"adaptiveCards"`
SourceAttributions []struct {
ProviderDisplayName string `json:"providerDisplayName"`
SeeMoreUrl string `json:"seeMoreUrl"`
SearchQuery string `json:"searchQuery"`
} `json:"sourceAttributions"`
SuggestedResponses []struct {
Text string `json:"text"`
Author string `json:"author"`
CreatedAt time.Time `json:"createdAt"`
Timestamp time.Time `json:"timestamp"`
MessageId string `json:"messageId"`
MessageType string `json:"messageType"`
Offense string `json:"offense"`
Feedback struct {
Tag any `json:"tag"`
UpdatedOn any `json:"updatedOn"`
Type string `json:"type"`
} `json:"feedback"`
ContentOrigin string `json:"contentOrigin"`
Privacy any `json:"privacy"`
} `json:"suggestedResponses"`
SpokenText string `json:"spokenText"`
}
type imageUploadStruct struct {
BlobId string `json:"blobId"`
ProcessedBlobId string `json:"processedBlobId"`
}