diff options
| author | Xe Iaso <me@christine.website> | 2023-09-30 10:36:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-30 10:36:37 -0400 |
| commit | ac6a3df0d18cc73524c0096d954a57d24cad5669 (patch) | |
| tree | 81474177d730440657f490ae29892d62392251ea /internal/github | |
| parent | cbdea8ba3fca9a663778af71f8df5965aeb6c090 (diff) | |
| download | xesite-ac6a3df0d18cc73524c0096d954a57d24cad5669.tar.xz xesite-ac6a3df0d18cc73524c0096d954a57d24cad5669.zip | |
Xesite V4 (#723)
* scripts/ditherify: fix quoting
Signed-off-by: Xe Iaso <me@xeiaso.net>
* clean up some old files
Signed-off-by: Xe Iaso <me@xeiaso.net>
* import site into lume
Signed-off-by: Xe Iaso <me@xeiaso.net>
* initial go code
Signed-off-by: Xe Iaso <me@xeiaso.net>
* move vods index to top level
Signed-off-by: Xe Iaso <me@xeiaso.net>
* remove the ads
Signed-off-by: Xe Iaso <me@xeiaso.net>
* internal/lume: metrics
Signed-off-by: Xe Iaso <me@xeiaso.net>
* delete old code
Signed-off-by: Xe Iaso <me@xeiaso.net>
* load config into memory
Signed-off-by: Xe Iaso <me@xeiaso.net>
* autogenerate data from dhall config
Signed-off-by: Xe Iaso <me@xeiaso.net>
* various cleanups, import clackset logic
Signed-off-by: Xe Iaso <me@xeiaso.net>
* 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 <me@xeiaso.net>
* move command to xesite folder
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: listen for GitHub webhook push events
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: 5 minute timeout for rebuilding the site
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: add rebuild metrics
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: update default variables
Signed-off-by: Xe Iaso <me@xeiaso.net>
* don't commit binaries oops lol
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lume: make search have a light background
Signed-off-by: Xe Iaso <me@xeiaso.net>
* add a notfound page
Signed-off-by: Xe Iaso <me@xeiaso.net>
* fetch info from patreon API
Signed-off-by: Xe Iaso <me@xeiaso.net>
* create contact page
Signed-off-by: Xe Iaso <me@xeiaso.net>
* Toot embedding
Signed-off-by: Xe Iaso <me@xeiaso.net>
* attempt a docker image
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lume: fix deno lock
Signed-off-by: Xe Iaso <me@xeiaso.net>
* add gokrazy post
Signed-off-by: Xe Iaso <me@xeiaso.net>
* cmd/xesite: go up before trying to connect to the saas proxy
Signed-off-by: Xe Iaso <me@xeiaso.net>
* blog: add Sine post/demo
Signed-off-by: Xe Iaso <me@xeiaso.net>
---------
Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: bri <284789+b-@users.noreply.github.com>
Co-authored-by: Connor Edwards <38229097+cedws@users.noreply.github.com>
Diffstat (limited to 'internal/github')
| -rw-r--r-- | internal/github/github.go | 189 |
1 files changed, 189 insertions, 0 deletions
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 +} |
