-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrecords.go
405 lines (353 loc) · 9.76 KB
/
records.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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
package godestone
import (
"time"
"github.com/gocolly/colly/v2"
"github.com/xivapi/godestone/v2/data/baseparam"
"github.com/xivapi/godestone/v2/data/gcrank"
"github.com/xivapi/godestone/v2/data/gender"
"github.com/xivapi/godestone/v2/data/role"
"github.com/xivapi/godestone/v2/provider/models"
)
// IconedNamedEntity represents an instance of an object with an icon and a name.
type IconedNamedEntity struct {
*models.NamedEntity
Icon string
}
// PageInfo represents pagination information in a search.
type PageInfo struct {
CurrentPage int
TotalPages int
}
// CrestLayers represents the layers of a community crest.
type CrestLayers struct {
Bottom string
Middle string
Top string
}
// AllAchievementInfo represents information about a character's achievements in aggregate.
type AllAchievementInfo struct {
Private bool
TotalAchievements uint32
TotalAchievementPoints uint32
}
// AchievementInfo represents information about a character's achievements.
type AchievementInfo struct {
*models.NamedEntity
Date time.Time
}
// Title represents a character title.
type Title struct {
*models.TitleInternal
}
// Character represents the information available about a character on The Lodestone.
type Character struct {
ActiveClassJob *ClassJob
Avatar string
Bio string
ClassJobs []*ClassJob
ClassJobBozjan *ClassJobBozja
ClassJobElemental *ClassJobEureka
DC string
FreeCompanyID string
FreeCompanyName string
GearSet *GearSet
Gender gender.Gender
GrandCompanyInfo *GrandCompanyInfo
GuardianDeity *IconedNamedEntity
ID uint32
Name string
Nameday string
ParseDate time.Time
Portrait string
PvPTeamID string
Race *models.GenderedEntity
Title *Title
Town *IconedNamedEntity
Tribe *models.GenderedEntity
World string
}
// CharacterSearchResult contains data from the character search page about a character.
type CharacterSearchResult struct {
Error error `json:"-"`
Avatar string
ID uint32
Lang string
Name string
Rank gcrank.GCRank
RankIcon string
World string
DC string
}
// ClassJob represents class and job information.
type ClassJob struct {
ClassID uint8
ExpLevel uint32
ExpLevelMax uint32
ExpLevelTogo uint32
IsSpecialized bool
JobID uint8
Level uint8
Name string
UnlockedState ClassJobUnlockedState
}
// ClassJobBozja represents character progression data in the Bozjan Southern Front.
type ClassJobBozja struct {
Level uint8
Mettle uint32
mettleRaw *colly.HTMLElement // TODO: https://github.com/xivapi/godestone/issues/17
Name string
}
// ClassJobEureka represents character progression data in Eureka.
type ClassJobEureka struct {
ExpLevel uint32
ExpLevelMax uint32
ExpLevelTogo uint32
Level uint8
Name string
}
// ClassJobUnlockedState represents the unlock state of a ClassJob
type ClassJobUnlockedState struct {
ID uint8
Name string
}
// CWLS represents basic CWLS information.
type CWLS struct {
Name string
DC string
ID string
ParseDate time.Time
Members []*CWLSMember
}
// CWLSMember represents information about a CWLS member.
type CWLSMember struct {
Avatar string
ID uint32
Name string
LinkshellRank string
LinkshellRankIcon string
Rank gcrank.GCRank
RankIcon string
World string
DC string
}
// CWLSSearchResult represents basic CWLS information returned from a search.
type CWLSSearchResult struct {
Error error `json:"-"`
Name string
ID string
DC string
ActiveMembers uint32
}
// Estate represents a housing area estate.
type Estate struct {
Greeting string
Name string
Plot string
}
// GearItem represents information about a single gear item on a character.
type GearItem struct {
*models.NamedEntity
Creator string
Dye uint32
HQ bool
Materia []uint32
Mirage uint32
}
// GearItemBuild represents a full gearset on a character. All gear items can be nil.
type GearItemBuild struct {
Body *GearItem
Bracelets *GearItem
Earrings *GearItem
Feet *GearItem
Hands *GearItem
Head *GearItem
Legs *GearItem
MainHand *GearItem
Necklace *GearItem
OffHand *GearItem
Ring1 *GearItem
Ring2 *GearItem
SoulCrystal *GearItem
Waist *GearItem
}
// GearSet represents the current gear information of a character.
type GearSet struct {
Attributes map[baseparam.BaseParam]uint32
ClassID uint8
Gear *GearItemBuild
GearKey string
JobID uint8
Level uint8
}
// GrandCompanyInfo represents Grand Company information about a character.
type GrandCompanyInfo struct {
GrandCompany *models.NamedEntity
RankID gcrank.GCRank
}
// FreeCompanyActiveState is the active state of an FC.
type FreeCompanyActiveState string
// Active state for an FC.
const (
FCActiveNotSpecified FreeCompanyActiveState = "Not specified"
FCActiveWeekdaysOnly FreeCompanyActiveState = "Weekdays Only"
FCActiveWeekendsOnly FreeCompanyActiveState = "Weekends Only"
FCActiveAlways FreeCompanyActiveState = "Always"
)
// FreeCompanyRecruitingState is the recruiting state of an FC.
type FreeCompanyRecruitingState string
// Recruiting state for an FC.
const (
FCRecruitmentClosed FreeCompanyRecruitingState = "Closed"
FCRecruitmentOpen FreeCompanyRecruitingState = "Open"
)
// FreeCompanyFocus is an FC's focus.
type FreeCompanyFocus string
// Free Company Focus.
const (
FCFocusRolePlaying FreeCompanyFocus = "Role-playing"
FCFocusLeveling FreeCompanyFocus = "Leveling"
FCFocusCasual FreeCompanyFocus = "Casual"
FCFocusHardcore FreeCompanyFocus = "Hardcore"
FCFocusDungeons FreeCompanyFocus = "Dungeons"
FCFocusGuildhests FreeCompanyFocus = "Guildhests"
FCFocusTrials FreeCompanyFocus = "Trials"
FCFocusRaids FreeCompanyFocus = "Raids"
FCFocusPvP FreeCompanyFocus = "PvP"
)
// FreeCompanyFocusInfo represents a particular FC's intentions for a focus.
type FreeCompanyFocusInfo struct {
Icon string
Kind FreeCompanyFocus
Status bool
}
// FreeCompanyRanking represents a particular FC's periodic rankings.
type FreeCompanyRanking struct {
Monthly uint32
Weekly uint32
}
// FreeCompanyReputation represents an FC's alignment with each Grand Company.
type FreeCompanyReputation struct {
GrandCompany *models.NamedEntity
Progress uint8
Rank *models.NamedEntity
}
// FreeCompanySeekingInfo represents a particular FC's intentions for a recruit roles.
type FreeCompanySeekingInfo struct {
Icon string
Kind role.Role
Status bool
}
// FreeCompanyMember represents information about a Free Company member.
type FreeCompanyMember struct {
Error error `json:"-"`
Avatar string
ID uint32
Name string
Rank gcrank.GCRank
FCRank string
RankIcon string
World string
DC string
}
// FreeCompany represents all of the basic information about an FC.
type FreeCompany struct {
Active FreeCompanyActiveState
ActiveMemberCount uint32
CrestLayers *CrestLayers
DC string
Estate *Estate
Focus []*FreeCompanyFocusInfo
Formed time.Time
GrandCompany *models.NamedEntity
ID string
Name string
ParseDate time.Time
Rank uint8
Ranking *FreeCompanyRanking
Recruitment FreeCompanyRecruitingState
Reputation []*FreeCompanyReputation
Seeking []*FreeCompanySeekingInfo
Slogan string
Tag string
World string
}
// FreeCompanySearchResult represents all of the searchable information about an FC.
type FreeCompanySearchResult struct {
Error error `json:"-"`
Active FreeCompanyActiveState
ActiveMembers uint32
CrestLayers *CrestLayers
DC string
Estate string
Formed time.Time
GrandCompany *models.NamedEntity
ID string
Name string
Recruitment FreeCompanyRecruitingState
World string
}
// Linkshell represents basic linkshell information.
type Linkshell struct {
Name string
ID string
ParseDate time.Time
Members []*LinkshellMember
}
// LinkshellMember represents information about a linkshell member.
type LinkshellMember struct {
Avatar string
ID uint32
Name string
LinkshellRank string
LinkshellRankIcon string
Rank gcrank.GCRank
RankIcon string
World string
DC string
}
// LinkshellSearchResult represents basic linkshell information returned from a search.
type LinkshellSearchResult struct {
Error error `json:"-"`
Name string
ID string
World string
DC string
ActiveMembers uint32
}
// Minion represents a minion.
type Minion struct {
*IconedNamedEntity
}
// Mount represents a mount.
type Mount struct {
*IconedNamedEntity
}
// PVPTeam represents information about a PVP team.
type PVPTeam struct {
Name string
ID string
DC string
ParseDate time.Time
Formed time.Time
CrestLayers *CrestLayers
Members []*PVPTeamMember
}
// PVPTeamMember represents information about a PVP team member.
type PVPTeamMember struct {
Avatar string
ID uint32
Name string
Matches uint32
Rank gcrank.GCRank
RankIcon string
World string
DC string
}
// PVPTeamSearchResult represents basic PVP team information returned from a search.
type PVPTeamSearchResult struct {
Error error `json:"-"`
Name string
ID string
DC string
CrestLayers *CrestLayers
}