{"id":15396199,"url":"https://github.com/jamesseanwright/github-autoresponder","last_synced_at":"2025-03-28T00:16:14.832Z","repository":{"id":151706464,"uuid":"108877263","full_name":"jamesseanwright/github-autoresponder","owner":"jamesseanwright","description":"An ASP.NET Core webhook for automatically responding to GitHub issues and PRs","archived":false,"fork":false,"pushed_at":"2017-11-25T10:22:07.000Z","size":1400,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-02T02:13:40.869Z","etag":null,"topics":["asp-net-core","automation","autoreply","csharp","issue-management","issues","mvc","pull-requests","responder","response","webhook"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamesseanwright.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-10-30T16:23:29.000Z","updated_at":"2025-01-23T23:27:17.000Z","dependencies_parsed_at":"2023-07-15T23:31:07.399Z","dependency_job_id":null,"html_url":"https://github.com/jamesseanwright/github-autoresponder","commit_stats":{"total_commits":53,"total_committers":1,"mean_commits":53.0,"dds":0.0,"last_synced_commit":"081b4f30f50cde88c96cb5b2578e5416367b46d6"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesseanwright%2Fgithub-autoresponder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesseanwright%2Fgithub-autoresponder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesseanwright%2Fgithub-autoresponder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesseanwright%2Fgithub-autoresponder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamesseanwright","download_url":"https://codeload.github.com/jamesseanwright/github-autoresponder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245944107,"owners_count":20697960,"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":["asp-net-core","automation","autoreply","csharp","issue-management","issues","mvc","pull-requests","responder","response","webhook"],"created_at":"2024-10-01T15:32:06.260Z","updated_at":"2025-03-28T00:16:14.811Z","avatar_url":"https://github.com/jamesseanwright.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Autoresponder\n\nAn ASP.NET Core webhook for automatically responding to GitHub issues and PRs.\n\n![Demo screen capture](https://raw.githubusercontent.com/jamesseanwright/github-autoresponder/master/DocImages/screencap.gif)\n\n\n## Try Me!\n\n[Open an issue](https://github.com/jamesseanwright/github-autoresponder/issues/new) against this repository to receive an automated response.\n\n\n## Setup\n\n* [Install .NET Core](https://www.microsoft.com/net/learn/get-started)\n* `git clone https://github.com/jamesseanwright/github-autoresponder.git`\n* `cd github-autoresponder`\n* `dotnet restore`\n\nThen one can run:\n\n* `dotnet xunit` - execute the unit tests\n* `dotnet start` - start the server\n\nThe sole exposed endpoint can be found at `/api/webhook`, which:\n\n* responds to `HTTP POST`\n* accepts GitHub [webhook-conforming payloads](https://developer.github.com/webhooks/#example-delivery)\n* is secured by the signature found in the `X-Hub-Signature` header\n\n\n### Environment Variables\n\nThis service requires two environment variables to function:\n\n#### `GHAR_SECRET`\n\nThe [secret token](https://developer.github.com/webhooks/securing/#setting-your-secret-token) specified when registering the webhook in your repository's settings.\n\n#### `GHAR_CREDENTIALS`\n\nA **Base64-encoded** string following a `\u003cresponding_username\u003e:\u003cpersonal_api_token\u003e` format e.g. `\"jamesseanwright:somerandomsha1\"`\n\n* `responding_username` - the username used to respond to issues and PRs\n* `personal_api_token` - the [personal API token](https://github.com/blog/1509-personal-api-tokens) to be used, along with the username, to authenticate requests made to the GitHub API\n  * **Note** that the only required scope is _public\\_repo_\n\n\n### Registering the Webhook Against a Repository\n\n![Registering a webhook](https://raw.githubusercontent.com/jamesseanwright/github-autoresponder/master/DocImages/register-webhook.gif)\n\n1. Go to one of your repositories\n2. Click _Settings_\n3. Click _Webhooks_\n4. In _Payload URL_, enter the absolute URL via which the webhook can be accessed, including the `/api/webhook` path\n5. Select _application/json_ from the _Content type_ dropdown\n6. Enter the webhook secret that you most likely generated in the previous section (see _`GHAR_SECRET`_)\n7. Under _Which events would you like to trigger this webhook?_, choose _Let me select individual events_, and select: _Issues_; and _Pull request_\n8. Click _Add webhook_ to complete the registration\n\n\n### Changing the Response Message\n\nCurrently, the response message is a hard-coded string that lives in the [`ResponseFactory` class](https://github.com/jamesseanwright/github-autoresponder/blob/master/Responder/ResponseFactory.cs). Eventually, this will be separated into a Markdown file to be read at startup.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesseanwright%2Fgithub-autoresponder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesseanwright%2Fgithub-autoresponder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesseanwright%2Fgithub-autoresponder/lists"}