{"id":20920163,"url":"https://github.com/flowingspdg/got5","last_synced_at":"2026-03-11T17:35:26.803Z","repository":{"id":63392289,"uuid":"564660582","full_name":"FlowingSPDG/Got5","owner":"FlowingSPDG","description":"A Gin framework for get5(MatchZy) webhook API.","archived":false,"fork":false,"pushed_at":"2024-06-30T10:00:51.000Z","size":183,"stargazers_count":7,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-12T01:54:41.883Z","etag":null,"topics":["csgo","fiber","get5","go"],"latest_commit_sha":null,"homepage":"https://github.com/FlowingSPDG/Got5","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlowingSPDG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-11T07:42:44.000Z","updated_at":"2024-06-30T10:00:54.000Z","dependencies_parsed_at":"2024-06-12T15:30:04.077Z","dependency_job_id":"346c2f37-228b-4ceb-ad64-5763a87b26aa","html_url":"https://github.com/FlowingSPDG/Got5","commit_stats":{"total_commits":68,"total_committers":2,"mean_commits":34.0,"dds":"0.23529411764705888","last_synced_commit":"979f385a7b08470b4a13f342778b3c3b5b729ece"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FlowingSPDG/Got5","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2FGot5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2FGot5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2FGot5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2FGot5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlowingSPDG","download_url":"https://codeload.github.com/FlowingSPDG/Got5/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowingSPDG%2FGot5/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265611280,"owners_count":23797851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csgo","fiber","get5","go"],"created_at":"2024-11-18T18:09:03.282Z","updated_at":"2026-03-11T17:35:26.743Z","avatar_url":"https://github.com/FlowingSPDG.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Got5\n[![test](https://github.com/FlowingSPDG/Got5/actions/workflows/dagger.yml/badge.svg)](https://github.com/FlowingSPDG/Got5/actions/workflows/dagger.yml)  \nSTATUS: UNDER DEVELOPMENT  \nGo + get5 = Got5!  \nGot5 is simple and fast, Build-Your-Own-Get5Web framework.  \nBuilt with Go(1.20), Fiber.  \n\nGot5 interfaces supports general get5 event handling such as Kill, Match Load or Demo upload.  \nThis makes you easier to build get5-based system like get5-web.  \n\n## Developer\nShugo Kawamura - 河村 柊吾\n\n### Got5 interfaces\n[controller](https://github.com/FlowingSPDG/Got5/tree/main/controller) package has 3 interfaces that communicates with get5.  \ncontroller does not have database interface, so you may implement database system by yourself.  \n\n#### EventHandler\n[EventHandler](https://github.com/FlowingSPDG/Got5/blob/75996d44058558ca7453af1c4b4f9e73115924d4/controller/got5.go#L10-L52) interface should handle event coming from get5 [Events \u0026 Forwards](https://splewis.github.io/get5/latest/events_and_forwards/) (get5_remote_log_url).  \ne.g. You can post Discord message, or save stats to your database.  \n```go\n// EventHandler EventHandler interface handles read operation by get5 events\ntype EventHandler interface {\n\tClose() error\n\n\t// Auth Checker\n\tCheckEventAuth(ctx context.Context, mid string, reqAuth string) error\n\n\t// GET5 Events\n\tHandleOnGameStateChanged(ctx context.Context, p got5.OnGameStateChangedPayload) error\n\tHandleOnPreLoadMatchConfig(ctx context.Context, p got5.OnPreLoadMatchConfigPayload) error\n\tHandleOnLoadMatchConfigFailed(ctx context.Context, p got5.OnLoadMatchConfigFailedPayload) error\n\tHandleOnSeriesInit(ctx context.Context, p got5.OnSeriesInitPayload) error\n\tHandleOnMapResult(ctx context.Context, p got5.OnMapResultPayload) error\n\tHandleOnSeriesResult(ctx context.Context, p got5.OnSeriesResultPayload) error\n\tHandleOnSidePicked(ctx context.Context, p got5.OnSidePickedPayload) error\n\tHandleOnMapPicked(ctx context.Context, p got5.OnMapPickedPayload) error\n\tHandleOnMapVetoed(ctx context.Context, p got5.OnMapVetoedPayload) error\n\tHandleOnBackupRestore(ctx context.Context, p got5.OnBackupRestorePayload) error\n\tHandleOnDemoFinished(ctx context.Context, p got5.OnDemoFinishedPayload) error\n\tHandleOnDemoUploadEnded(ctx context.Context, p got5.OnDemoUploadEndedPayload) error\n\tHandleOnMatchPaused(ctx context.Context, p got5.OnMatchPausedPayload) error\n\tHandleOnMatchUnpaused(ctx context.Context, p got5.OnMatchUnpausedPayload) error\n\tHandleOnKnifeRoundStarted(ctx context.Context, p got5.OnKnifeRoundStartedPayload) error\n\tHandleOnKnifeRoundWon(ctx context.Context, p got5.OnKnifeRoundWonPayload) error\n\tHandleOnTeamReadyStatusChanged(ctx context.Context, p got5.OnTeamReadyStatusChangedPayload) error\n\tHandleOnGoingLive(ctx context.Context, p got5.OnGoingLivePayload) error\n\tHandleOnRoundStart(ctx context.Context, p got5.OnRoundStartPayload) error\n\tHandleOnRoundEnd(ctx context.Context, p got5.OnRoundEndPayload) error\n\tHandleOnRoundStatsUpdated(ctx context.Context, p got5.OnRoundStatsUpdatedPayload) error\n\tHandleOnPlayerBecameMVP(ctx context.Context, p got5.OnPlayerBecameMVPPayload) error\n\tHandleOnGrenadeThrown(ctx context.Context, p got5.OnGrenadeThrownPayload) error\n\tHandleOnPlayerDeath(ctx context.Context, p got5.OnPlayerDeathPayload) error\n\tHandleOnHEGrenadeDetonated(ctx context.Context, p got5.OnHEGrenadeDetonatedPayload) error\n\tHandleOnMolotovDetonated(ctx context.Context, p got5.OnMolotovDetonatedPayload) error\n\tHandleOnFlashbangDetonated(ctx context.Context, p got5.OnFlashbangDetonatedPayload) error\n\tHandleOnSmokeGrenadeDetonated(ctx context.Context, p got5.OnSmokeGrenadeDetonatedPayload) error\n\tHandleOnDecoyStarted(ctx context.Context, p got5.OnDecoyStartedPayload) error\n\tHandleOnBombPlanted(ctx context.Context, p got5.OnBombPlantedPayload) error\n\tHandleOnBombDefused(ctx context.Context, p got5.OnBombDefusedPayload) error\n\tHandleOnBombExploded(ctx context.Context, p got5.OnBombExplodedPayload) error\n\tHandleOnPlayerConnected(ctx context.Context, p got5.OnPlayerConnectedPayload) error\n\tHandleOnPlayerDisconnected(ctx context.Context, p got5.OnPlayerDisconnectedPayload) error\n\tHandleOnPlayerSay(ctx context.Context, p got5.OnPlayerSayPayload) error\n}\n```\n\n#### MatchLoader\n[MatchLoader](https://github.com/FlowingSPDG/Got5/blob/75996d44058558ca7453af1c4b4f9e73115924d4/controller/got5.go#L54-L57) interface should handle ``get5_loadmatch_url`` request from game server.  \nYou need to respond JSON.  \nhttps://splewis.github.io/get5/latest/match_schema/  \n```go\n// MatchLoader is for Read Operation(get5_loadmatch_url)\ntype MatchLoader interface {\n\t// Auth Checker\n\tCheckMatchAuth(ctx context.Context, mid int, auth string) error\n\n\t// Load respond to get5_loadmatch_url\n\tLoad(ctx context.Context, mid string) (got5.Match, error)\n}\n```\n\n\n#### DemoUploader\n[DemoUploader](https://github.com/FlowingSPDG/Got5/blob/75996d44058558ca7453af1c4b4f9e73115924d4/controller/got5.go#L59-L62) interface should handle demo upload from game server.  \nYou may want to add auth middleware to prevend unauthorized demo uploads.  \n```go\n// DemoUploader is for Demo Upload Operation(get5_dem_upload_url)\ntype DemoUploader interface {\n\tCheckDemoAuth(ctx context.Context, mid int, filename string, mapNumber int, serverID string, auth string) error\n\tUpload(ctx context.Context, mid int, filename string, r io.Reader) error // demoファイルの登録処理\n}\n```\n\n## Authentication  \nTODO...\n\n## Examples\nTODO...","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowingspdg%2Fgot5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowingspdg%2Fgot5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowingspdg%2Fgot5/lists"}