Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BootDevAPIMap ¶
BootDevAPIMap takes any of the strings below as map keys, and returns the url for that endpoint
Types ¶
type ActivityFeedUser ¶
type Archmage ¶
type Archmage struct {
LeaderboardUser
ArchmageUnlockedAt time.Time `json:"ArchmageUnlockedAt"`
}
Archmage holds users from the leaderboard_archmage endpoint
type Archon ¶
type Archon struct {
LeaderboardUser
Karma int `json:"Karma"`
}
Discord community members. It was a decent way to distinguish it with other `user` types in the code.
type BossBattle ¶
type BossBattle struct {
Event struct {
Boss struct {
UUID string `json:"UUID"`
Name string `json:"Name"`
Description string `json:"Description"`
LoreSlug string `json:"LoreSlug"`
ImageURL string `json:"ImageURL"`
ThumbnailURL string `json:"ThumbnailURL"`
Rewards []struct {
UUID string `json:"UUID"`
Type string `json:"Type"`
UnlockedAt int `json:"UnlockedAt"`
BossRewardDataXP struct {
Amount int `json:"Amount"`
} `json:"BossRewardDataXP"`
BossRewardDataGems any `json:"BossRewardDataGems"`
BossRewardChest any `json:"BossRewardChest"`
} `json:"Rewards"`
HealthPoints int `json:"HealthPoints"`
} `json:"Boss"`
UUID string `json:"UUID"`
CreatedAt time.Time `json:"CreatedAt"`
UpdatedAt time.Time `json:"UpdatedAt"`
StartsAt time.Time `json:"StartsAt"`
ExpiresAt time.Time `json:"ExpiresAt"`
AchievementsSentAt *time.Time `json:"AchievementsSentAt"`
BossUUID string `json:"BossUUID"`
AnnouncementSentAt time.Time `json:"AnnouncementSentAt"`
DefeatedAt time.Time `json:"DefeatedAt"`
} `json:"Event"`
XPBonus float64 `json:"XPBonus"`
XPTotal int `json:"XPTotal"`
XPUser int `json:"XPUser"`
NumActiveUsers int `json:"NumActiveUsers"`
}
Boss Battle information
func BossBattleStats ¶
func BossBattleStats(c cache.Cache, token string) (BossBattle, error)
BossBattleStats retrieves stats from the current / most recent boss battle happening. Since this is rapidly updating in real time, the cache isn't checked before requesting new data.
type Course ¶
type Course struct {
UUID string `json:"UUID"`
ArchivedAt *time.Time `json:"ArchivedAt"`
Slug string `json:"Slug"`
Title string `json:"Title"`
ShortDescription string `json:"ShortDescription"`
Description string `json:"Description"`
ImageURL string `json:"ImageURL"`
ThumbnailURL string `json:"ThumbnailURL"`
Difficulty float64 `json:"Difficulty"`
PrerequisiteCourseUUIDS any `json:"PrerequisiteCourseUUIDS"`
EstimatedCompletionTimeHours int `json:"EstimatedCompletionTimeHours"`
TypeDescription string `json:"TypeDescription"`
LastUpdated string `json:"LastUpdated"`
SlugAliases []string `json:"SlugAliases"`
AuthorUUIDs []string `json:"AuthorUUIDs"`
MaintainerUUIDs []string `json:"MaintainerUUIDs"`
Alternatives struct {
} `json:"Alternatives,omitempty"`
Draft bool `json:"Draft"`
NumRequiredLessons int `json:"NumRequiredLessons"`
NumOptionalLessons int `json:"NumOptionalLessons"`
Chapters []struct {
UUID string `json:"UUID"`
Slug string `json:"Slug"`
Title string `json:"Title"`
Description string `json:"Description"`
RequiredLessons []struct {
UUID string `json:"UUID"`
Slug string `json:"Slug"`
Type string `json:"Type"`
CourseUUID string `json:"CourseUUID"`
CourseTitle string `json:"CourseTitle"`
CourseImageURL string `json:"CourseImageURL"`
ChapterUUID string `json:"ChapterUUID"`
IsFree bool `json:"IsFree"`
LastMod string `json:"LastMod"`
CompletionType string `json:"CompletionType"`
Title string `json:"Title"`
} `json:"RequiredLessons"`
OptionalLessons []any `json:"OptionalLessons"`
NumRequiredLessons int `json:"NumRequiredLessons"`
NumOptionalLessons int `json:"NumOptionalLessons"`
CourseUUID string `json:"CourseUUID"`
} `json:"Chapters"`
}
Full course response from courses endpoint
type CourseProgress ¶
type CourseProgress struct {
LastViewedCourseUUID string `json:"LastViewedCourseUUID"`
Progress map[string]ProgressDetail `json:"Progress"`
}
User's course progress. Courses can be referenced by UUID
func CoursesProgress ¶
func CoursesProgress(c cache.Cache, token string) (CourseProgress, error)
type FrozenFlame ¶
type FrozenFlame struct {
UUID string `json:"UUID"`
UserUUID string `json:"UserUUID"`
CreatedAt time.Time `json:"CreatedAt"`
UsedAt any `json:"UsedAt"`
SoldAt any `json:"SoldAt"`
}
Frozen flame data. Included since it seems it will be used in the future
type GlobalStats ¶
type GlobalStats struct {
LessonCompletions int `json:"LessonCompletions"`
XPEarned int `json:"XPEarned"`
BootsChats int `json:"BootsChats"`
SolutionsPeeked int `json:"SolutionsPeeked"`
DiscordMessagesSent int `json:"DiscordMessagesSent"`
RegisteredUsersAlltime int `json:"RegisteredUsersAlltime"`
}
func GetGeneralStats ¶
func GetGeneralStats(c cache.Cache) (GlobalStats, error)
type LeaderboardUser ¶
type LeaderboardUser struct {
DiscordUserHandle *string `json:"DiscordUserHandle"`
SyncedGoogleID *string `json:"SyncedGoogleID"`
SyncedGithubID *string `json:"SyncedGithubID"`
Currency *string `json:"Currency"`
Xp int `json:"XP"`
Level int `json:"Level"`
XPForLevel int `json:"XPForLevel"`
XPTotalForLevel int `json:"XPTotalForLevel"`
Gems int `json:"Gems"`
Armor int `json:"Armor"`
UUID string `json:"UUID"`
CreatedAt time.Time `json:"CreatedAt"`
UpdatedAt time.Time `json:"UpdatedAt"`
FirstName string `json:"FirstName"`
LastName string `json:"LastName"`
Handle string `json:"Handle"`
Bio string `json:"Bio"`
JobTitle *string `json:"JobTitle"`
Location string `json:"Location"`
City *string `json:"City"`
Country *string `json:"Country"`
GithubHandle string `json:"GithubHandle"`
WebsiteURL *string `json:"WebsiteURL"`
ProfileImageURL string `json:"ProfileImageURL"`
XPEarned int `json:"XPEarned"`
}
LeaderboardUser is a struct to hold users from the leaderboard_stats endpoint string pointers are used for nullable fields
func GetDailyStats ¶
func GetDailyStats(c cache.Cache) ([]LeaderboardUser, error)
DailyStats returns a slice of the top 30 learners from Boot.Dev's leaderboard page. As this won't change often, the refresh time on this can be low.
type PotionList ¶
type PotionList struct {
ActiveXPPotions []XPPotion `json:"ActiveXPPotions"`
NumUnusedXPPotion int `json:"NumUnusedXPPotion"`
}
List of potions user has in effect / unused
type ProgressDetail ¶
type UserData ¶
type UserData struct {
DiscordUserHandle string `json:"DiscordUserHandle"`
SyncedGoogleID any `json:"SyncedGoogleID"`
SyncedGithubID int `json:"SyncedGithubID"`
ManualProSubExpiresAt time.Time `json:"ManualProSubExpiresAt"`
LifetimeProSubCreatedAt any `json:"LifetimeProSubCreatedAt"`
MembershipExpiresAt time.Time `json:"MembershipExpiresAt"`
Email string `json:"Email"`
Currency string `json:"Currency"`
Xp int `json:"XP"`
Level int `json:"Level"`
XPForLevel int `json:"XPForLevel"`
XPTotalForLevel int `json:"XPTotalForLevel"`
Role string `json:"Role"`
Gems int `json:"Gems"`
Armor int `json:"Armor"`
CreatedAt time.Time `json:"CreatedAt"`
UpdatedAt time.Time `json:"UpdatedAt"`
FirstName string `json:"FirstName"`
LastName string `json:"LastName"`
Handle string `json:"Handle"`
Bio string `json:"Bio"`
JobTitle any `json:"JobTitle"`
Location string `json:"Location"`
City any `json:"City"`
Country any `json:"Country"`
GithubHandle string `json:"GithubHandle"`
WebsiteURL string `json:"WebsiteURL"`
ProfileImageURL string `json:"ProfileImageURL"`
IsSubscribed bool `json:"IsSubscribed"`
GithubSynced bool `json:"GithubSynced"`
}
UserData holds data about the user from the users endpoint