From ac6a3df0d18cc73524c0096d954a57d24cad5669 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Sat, 30 Sep 2023 10:36:37 -0400 Subject: Xesite V4 (#723) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * scripts/ditherify: fix quoting Signed-off-by: Xe Iaso * clean up some old files Signed-off-by: Xe Iaso * import site into lume Signed-off-by: Xe Iaso * initial go code Signed-off-by: Xe Iaso * move vods index to top level Signed-off-by: Xe Iaso * remove the ads Signed-off-by: Xe Iaso * internal/lume: metrics Signed-off-by: Xe Iaso * delete old code Signed-off-by: Xe Iaso * load config into memory Signed-off-by: Xe Iaso * autogenerate data from dhall config Signed-off-by: Xe Iaso * various cleanups, import clackset logic Signed-off-by: Xe Iaso * Update signalboost.dhall (#722) Added myself, and also fixed someone’s typo * Add Connor Edwards to signal boost (#721) * add cache headers Signed-off-by: Xe Iaso * move command to xesite folder Signed-off-by: Xe Iaso * xesite: listen for GitHub webhook push events Signed-off-by: Xe Iaso * xesite: 5 minute timeout for rebuilding the site Signed-off-by: Xe Iaso * xesite: add rebuild metrics Signed-off-by: Xe Iaso * xesite: update default variables Signed-off-by: Xe Iaso * don't commit binaries oops lol Signed-off-by: Xe Iaso * lume: make search have a light background Signed-off-by: Xe Iaso * add a notfound page Signed-off-by: Xe Iaso * fetch info from patreon API Signed-off-by: Xe Iaso * create contact page Signed-off-by: Xe Iaso * Toot embedding Signed-off-by: Xe Iaso * attempt a docker image Signed-off-by: Xe Iaso * lume: fix deno lock Signed-off-by: Xe Iaso * add gokrazy post Signed-off-by: Xe Iaso * cmd/xesite: go up before trying to connect to the saas proxy Signed-off-by: Xe Iaso * blog: add Sine post/demo Signed-off-by: Xe Iaso --------- Signed-off-by: Xe Iaso Co-authored-by: bri <284789+b-@users.noreply.github.com> Co-authored-by: Connor Edwards <38229097+cedws@users.noreply.github.com> --- internal/github/github.go | 189 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 internal/github/github.go (limited to 'internal/github') diff --git a/internal/github/github.go b/internal/github/github.go new file mode 100644 index 0000000..ae1d8c2 --- /dev/null +++ b/internal/github/github.go @@ -0,0 +1,189 @@ +package github + +import ( + "bytes" + "strconv" + "time" +) + +// User was autogenerated by go generate. To see more details about this +// payload type visit https://developer.github.com/v3/activity/events/types. +type User struct { + AvatarURL string `json:"avatar_url"` + Email string `json:"email"` + EventsURL string `json:"events_url"` + FollowersURL string `json:"followers_url"` + FollowingURL string `json:"following_url"` + GistsURL string `json:"gists_url"` + GravatarID string `json:"gravatar_id"` + HTMLURL string `json:"html_url"` + ID int `json:"id"` + Login string `json:"login"` + Name string `json:"name"` + OrganizationsURL string `json:"organizations_url"` + ReceivedEventsURL string `json:"received_events_url"` + ReposURL string `json:"repos_url"` + SiteAdmin bool `json:"site_admin"` + StarredURL string `json:"starred_url"` + SubscriptionsURL string `json:"subscriptions_url"` + Type string `json:"type"` + URL string `json:"url"` + Username string `json:"username"` +} + +// Commits was autogenerated by go generate. To see more details about this +// payload type visit https://developer.github.com/v3/activity/events/types. +type Commits struct { + Added []string `json:"added"` + Author User `json:"author"` + Committer User `json:"committer"` + Distinct bool `json:"distinct"` + ID string `json:"id"` + Message string `json:"message"` + Modified []string `json:"modified"` + Removed []string `json:"removed"` + Timestamp Time `json:"timestamp"` + URL string `json:"url"` +} + +// HeadCommit was autogenerated by go generate. To see more details about this +// payload type visit https://developer.github.com/v3/activity/events/types. +type HeadCommit struct { + Added []string `json:"added"` + Author User `json:"author"` + Committer User `json:"committer"` + Distinct bool `json:"distinct"` + ID string `json:"id"` + Message string `json:"message"` + Modified []string `json:"modified"` + Removed []string `json:"removed"` + Timestamp Time `json:"timestamp"` + URL string `json:"url"` +} + +// PushEvent was autogenerated by go generate. To see more details about this +// payload type visit https://developer.github.com/v3/activity/events/types. +type PushEvent struct { + After string `json:"after"` + BaseRef string `json:"base_ref"` + Before string `json:"before"` + Commits []Commits `json:"commits"` + Compare string `json:"compare"` + Created bool `json:"created"` + Deleted bool `json:"deleted"` + Forced bool `json:"forced"` + HeadCommit HeadCommit `json:"head_commit"` + Pusher User `json:"pusher"` + Ref string `json:"ref"` + Repository Repository `json:"repository"` + Sender User `json:"sender"` +} + +// Repository was autogenerated by go generate. To see more details about this +// payload type visit https://developer.github.com/v3/activity/events/types. +type Repository struct { + ArchiveURL string `json:"archive_url"` + AssigneesURL string `json:"assignees_url"` + BlobsURL string `json:"blobs_url"` + BranchesURL string `json:"branches_url"` + CloneURL string `json:"clone_url"` + CollaboratorsURL string `json:"collaborators_url"` + CommentsURL string `json:"comments_url"` + CommitsURL string `json:"commits_url"` + CompareURL string `json:"compare_url"` + ContentsURL string `json:"contents_url"` + ContributorsURL string `json:"contributors_url"` + CreatedAt Time `json:"created_at"` + DefaultBranch string `json:"default_branch"` + Description string `json:"description"` + DownloadsURL string `json:"downloads_url"` + EventsURL string `json:"events_url"` + Fork bool `json:"fork"` + Forks int `json:"forks"` + ForksCount int `json:"forks_count"` + ForksURL string `json:"forks_url"` + FullName string `json:"full_name"` + GitCommitsURL string `json:"git_commits_url"` + GitRefsURL string `json:"git_refs_url"` + GitTagsURL string `json:"git_tags_url"` + GitURL string `json:"git_url"` + HTMLURL string `json:"html_url"` + HasDownloads bool `json:"has_downloads"` + HasIssues bool `json:"has_issues"` + HasPages bool `json:"has_pages"` + HasWiki bool `json:"has_wiki"` + Homepage string `json:"homepage"` + HooksURL string `json:"hooks_url"` + ID int `json:"id"` + IssueCommentURL string `json:"issue_comment_url"` + IssueEventsURL string `json:"issue_events_url"` + IssuesURL string `json:"issues_url"` + KeysURL string `json:"keys_url"` + LabelsURL string `json:"labels_url"` + Language string `json:"language"` + LanguagesURL string `json:"languages_url"` + MasterBranch string `json:"master_branch"` + MergesURL string `json:"merges_url"` + MilestonesURL string `json:"milestones_url"` + MirrorURL string `json:"mirror_url"` + Name string `json:"name"` + NotificationsURL string `json:"notifications_url"` + OpenIssues int `json:"open_issues"` + OpenIssuesCount int `json:"open_issues_count"` + Owner User `json:"owner"` + Private bool `json:"private"` + PullsURL string `json:"pulls_url"` + PushedAt Time `json:"pushed_at"` + ReleasesURL string `json:"releases_url"` + SSHURL string `json:"ssh_url"` + Size int `json:"size"` + Stargazers int `json:"stargazers"` + StargazersCount int `json:"stargazers_count"` + StargazersURL string `json:"stargazers_url"` + StatusesURL string `json:"statuses_url"` + SubscribersURL string `json:"subscribers_url"` + SubscriptionURL string `json:"subscription_url"` + SvnURL string `json:"svn_url"` + TagsURL string `json:"tags_url"` + TeamsURL string `json:"teams_url"` + TreesURL string `json:"trees_url"` + URL string `json:"url"` + UpdatedAt Time `json:"updated_at"` + Watchers int `json:"watchers"` + WatchersCount int `json:"watchers_count"` +} + +// Time embeds time.Time. The wrapper allows for unmarshalling time from JSON +// null value or unix timestamp. +type Time struct { + time.Time +} + +var null = []byte("null") + +// MarshalJSON implements the json.Marshaler interface. The time is a quoted +// string in RFC 3339 format or "null" if it's a zero value. +func (t Time) MarshalJSON() ([]byte, error) { + if t.Time.IsZero() { + return null, nil + } + return t.Time.MarshalJSON() +} + +// UnmarshalJSON implements the json.Unmarshaler interface. The time is expected +// to be a quoted string in RFC 3339 format, a unix timestamp or a "null" string. +func (t *Time) UnmarshalJSON(p []byte) (err error) { + if bytes.Compare(p, null) == 0 { + t.Time = time.Time{} + return nil + } + if err = t.Time.UnmarshalJSON(p); err == nil { + return nil + } + n, e := strconv.ParseInt(string(bytes.Trim(p, `"`)), 10, 64) + if e != nil { + return err + } + t.Time = time.Unix(n, 0) + return nil +} -- cgit v1.2.3