├── .github └── workflows │ └── test.yml ├── .gitignore ├── README.md ├── config.json ├── index.py ├── requirements.txt ├── templates └── generic │ ├── digest │ ├── digest.html │ ├── issue_comment.created │ ├── issues.closed │ ├── issues.labeled │ ├── issues.opened │ ├── pull_request.closed │ ├── pull_request.labeled │ ├── pull_request.opened │ ├── push │ ├── repository.created │ ├── repository.deleted │ ├── repository.transferred │ └── tr.published ├── test_digest.py ├── test_server.py ├── test_webhook.py └── tests ├── digest-weekly-allrepos.msg ├── digest-weekly-filtered.msg ├── digest-weekly-filtered.msg.html ├── digest-weekly-repofiltered.msg ├── digest-weekly.msg ├── issue-comment-notif.json ├── issue-comment-notif.msg ├── issue-notif-log.msg ├── issue-notif.json ├── issue-notif.msg ├── mls.json ├── pull-labeled.json ├── pull-labeled.msg ├── pull-merged.json ├── pull-merged.msg ├── pull-notif.json ├── pull-notif.msg ├── pull_request-comment-notif.json ├── pull_request-comment-notif.msg ├── push-notif.json ├── push-notif.msg ├── rec-repos.json ├── repo-created.json ├── repo-created.msg ├── repo-deleted.json ├── repo-deleted.msg ├── repo-transferred.json ├── repo-transferred.msg ├── repo1-data.json ├── repo1-events-1.json ├── repo1-events-2.json ├── repo1-issues.json ├── repo2-data.json ├── repo2-events-1.json ├── summary-quarterly.msg ├── summary-quarterly.msg.html ├── templates ├── generic └── mls │ └── dom@localhost │ ├── push │ └── w3c │ └── mediacapture-main │ └── issue_comment.created ├── trpublished-notif.json └── trpublished-notif.msg /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Run test suite 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: {} 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: actions/setup-python@v5 15 | with: 16 | python-version: '3.11' 17 | - name: Install dependencies 18 | run: | 19 | python -m pip install --upgrade pip 20 | pip install -r requirements.txt 21 | - name: test WebHook 22 | run: python test_webhook.py 23 | - name: test Digest 24 | run: python test_digest.py 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | log 2 | *.pyc 3 | mls.json 4 | instance/config.json 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | index.py is a python CGI script that provides a Webhook to be used as a github hook endpoint to send mail to a set of email addresses when specific events (e.g. push, new issues, etc) happen in specific repos. 2 | 3 | It can also be used without a hook to send a digest of activity across a set of defined repositories for a given period. In that mode, it is limited to [300 events](https://developer.github.com/v3/activity/events/#list-repository-events) in the said period for a given repo. 4 | 5 | It can also be used as a [W3C hook](https://w3c.github.io/w3c-api/webhooks) endpoint to send mail when TR documents get published. 6 | 7 | The set of mailing lists, repos / TR documents and events is configured in a JSON file, named `mls.json` that lives in the same directory as the webhook, with the following structure: 8 | ```json 9 | { 10 | "email@example.com": { 11 | "githubaccount/repo": { 12 | "events": ["issues.opened", "issues.closed", "issue_comment.created", "pull_request.opened", "pull_request.labeled"], 13 | "eventFilter": {"label":["important"]}, 14 | "branches": { 15 | "master": ["push"] 16 | } 17 | } 18 | }, 19 | "email2@example.com": { 20 | "http://www.w3.org/TR/wake-lock": { 21 | "events": ["tr.published"] 22 | } 23 | }, 24 | "email3@example.com": { 25 | "digest:tuesday": [ 26 | { 27 | "repos": ["githubaccount/repo", "githubaccount/repo2"] 28 | }, 29 | { 30 | "repoList": "https://example.org/repos.json" 31 | }, 32 | { 33 | "topic": "All of repo4 and some of repo3", 34 | "sources": [ 35 | { 36 | "repos": ["githubaccount/repo3"], 37 | "eventFilter": {"label": ["enhancement"]} 38 | }, 39 | { 40 | "repos": ["githubaccount/repo4"] 41 | } 42 | ] 43 | } 44 | ] 45 | } 46 | } 47 | ``` 48 | 49 | In other words: 50 | * each email address to which notifications are to be sent is a top level object 51 | * in email objects, each repos / TR draft / digest is an object 52 | * in repo objects, there are 3 potential fields: 53 | * `events` is an array of Github events applicable to the repo as a whole; only events in that array will be notified 54 | * `eventFilter` is an optional set of filters that are applied to the events above; at the moment, `label` and `notlabel` filters are defined, which means that only events that are associated with one of the said labels (defined as an array) will be notified (resp. only events that aren't associated with any of the labels) 55 | * `branches` allows to describe events that are applicable at the branch level rather than the whole repo (e.g. "push") 56 | * TR draft objects only take an `events` field, with `"tr.published"` currently the only supported event. 57 | * digests are identified by their key (of the form "digest:monday" (or any other day of the week), or "digest:daily", "digest:monthly", "digest:quarteryly" depending on the periodicity); each item in the said list describes a digest to be sent on that day to that list. A single digest is described by an object consisting of 58 | * an optional "topic" (which will be included in the subject of the digest) 59 | * either: 60 | * a "repos" field with an array of repository full names (e.g. `w3c/webrtc-pc`) and/or a "repoList" field with an URL pointing a JSON area of repository fullnames (which gets combined with the list in `repos` if it is fetched successfully), and optionally an "eventFilter" field (which, as above, has `label` and `notlabel` as possible filters at the moment) that applies to all the said repos 61 | * a "sources" field, which describes an array of dictionaries as described above. This allows to create a single digest that combines filtered events from some repos, and unfiltered (or with different filters) events from other repos 62 | 63 | Only events for which templates have been defined (in the `templates/generic` directory) will be notified. Each mail target can have customized templates by creating an `email@example.com` directory in `templates/mls` and having a file named after the event. Templates use Mustache-based pystache as their engines and are fed with payload data from the event. The first line of the template is used as the subject of the email. 64 | 65 | In addition to configuring targets of notifications, an instance of this webhook needs to define a `config.json` file with the SMTP host, the address from which messages will be sent, and set a GitHub OAUTH token that can be used to retrieve information via the GitHub API. 66 | 67 | See also [how to make use of the W3C instance of this service](https://github.com/w3c/github-notify-ml-config). 68 | 69 | ## Testing 70 | Run the test suite with: 71 | ```sh 72 | python test_webhook.py 73 | ``` 74 | 75 | A typical test consists of: 76 | * a JSON file with the payload of the github event / w3c event to be tested 77 | * a .msg file that contains the email (with headers) expected to be sent by the webhook 78 | * a new method in `test_webhook.py` `SendEmailGithubTests` that binds the event name, with the JSON file, and the email message 79 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "SMTP_HOST":"localhost", 3 | "EMAIL_FROM":"test@localhost", 4 | "DIGEST_SENDER":"W3C Webmaster via GitHub API", 5 | "TEMPLATES_DIR":"templates", 6 | "GH_OAUTH_TOKEN":"" 7 | } 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mock 2 | pystache 3 | ipaddress 4 | requests 5 | requests_cache 6 | responses 7 | python-dateutil 8 | -------------------------------------------------------------------------------- /templates/generic/digest: -------------------------------------------------------------------------------- 1 | {{period}} github digest ({{#topic}}{{{.}}}{{/topic}}{{^topic}}{{#repos}}{{shortname}}{{^last}}, {{/last}}{{/repos}}{{/topic}}) 2 | 3 | {{#errors.count}}Errors while compiling the digest: 4 | {{#errors.list}} - {{error}}{{/errors.list}}{{/errors.count}} 5 | 6 | {{#filtered}}Events {{#filteredlabels}}with label {{#labels}}"{{name}}"{{^last}}, {{/last}}{{/labels}}{{#filteredantilabels}} and {{/filteredantilabels}}{{/filteredlabels}}{{#filteredantilabels}}without label {{#antilabels}}"{{name}}"{{^last}}, {{/last}}{{/antilabels}}{{/filteredantilabels}} 7 | 8 | {{/filtered}} 9 | {{#summary}}Repositories 10 | ----- 11 | {{#repostatus}}* {{name}} 12 | - open issues and pull requests: {{repo.open_issues_count}} 13 | - activity on issues: +{{newissues.count}}/-{{closedissues.count}}/💬{{issuecommentscount}} 14 | - activity on pull requests: +{{newpr.count}}/-{{mergedpr.count}}/💬{{prcommentscount}} 15 | 16 | {{/repostatus}}{{/summary}}{{#activeissues}}Issues 17 | ------ 18 | {{#activeissuerepos}} 19 | * {{name}} (+{{newissues.count}}/-{{closedissues.count}}/💬{{issuecommentscount}}) 20 | {{#newissues.count}} {{.}} issues created: 21 | {{#newissues.list}} 22 | - {{{payload.issue.title}}} (by {{actor.display_login}}) 23 | {{{payload.issue.html_url}}} {{#payload.issue.labels}}[{{name}}] {{/payload.issue.labels}} 24 | {{/newissues.list}} 25 | 26 | {{/newissues.count}} 27 | {{#commentedissues.count}} {{.}} issues received {{issuecommentscount}} new comments: 28 | {{#commentedissues.list}} 29 | - #{{number}} {{{title}}} ({{commentscount}} by {{#commentors}}{{name}}{{^last}}, {{/last}}{{/commentors}}) 30 | {{{url}}} {{#labels}}[{{name}}] {{/labels}} 31 | {{/commentedissues.list}} 32 | 33 | {{/commentedissues.count}} 34 | {{#closedissues.count}} {{.}} issues closed: 35 | {{#closedissues.list}} 36 | - {{{payload.issue.title}}} {{{payload.issue.html_url}}} {{#payload.issue.labels}}[{{name}}] {{/payload.issue.labels}} 37 | {{/closedissues.list}} 38 | 39 | {{/closedissues.count}} 40 | {{/activeissuerepos}}{{/activeissues}} 41 | 42 | {{#activeprs}}Pull requests 43 | ------------- 44 | {{#activeprrepos}} 45 | * {{name}} (+{{newpr.count}}/-{{mergedpr.count}}/💬{{prcommentscount}}) 46 | {{#newpr.count}} {{.}} pull requests submitted: 47 | {{#newpr.list}} 48 | - {{{payload.pull_request.title}}} (by {{actor.display_login}}) 49 | {{{payload.pull_request.html_url}}} {{#payload.pull_request.labels}}[{{name}}] {{/payload.pull_request.labels}} 50 | {{/newpr.list}} 51 | 52 | {{/newpr.count}} 53 | {{#commentedpr.count}} {{.}} pull requests received {{prcommentscount}} new comments: 54 | {{#commentedpr.list}} 55 | - #{{number}} {{{title}}} ({{commentscount}} by {{#commentors}}{{name}}{{^last}}, {{/last}}{{/commentors}}) 56 | {{{url}}} {{#labels}}[{{name}}] {{/labels}} 57 | {{/commentedpr.list}} 58 | 59 | {{/commentedpr.count}} 60 | {{#mergedpr.count}} {{.}} pull requests merged: 61 | {{#mergedpr.list}} 62 | - {{{payload.pull_request.title}}} 63 | {{{payload.pull_request.html_url}}} {{#payload.pull_request.labels}}[{{name}}] {{/payload.pull_request.labels}} 64 | {{/mergedpr.list}} 65 | 66 | {{/mergedpr.count}} 67 | {{/activeprrepos}} 68 | {{/activeprs}} 69 | 70 | Repositories tracked by this digest: 71 | ----------------------------------- 72 | {{#repos}} 73 | * {{{url}}} 74 | {{/repos}} 75 | -------------------------------------------------------------------------------- /templates/generic/digest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{period}} github digest ({{#topic}}{{.}}{{/topic}}{{^topic}}{{#repos}}{{shortname}}{{^last}}, {{/last}}{{/repos}}{{/topic}}) 6 | 34 | 35 | 36 | 37 |

{{date}}

38 | {{#errors.count}}Errors while compiling the digest: 39 | 42 | {{/errors.count}} 43 | 44 | {{#filtered}}

Events {{#filteredlabels}}with label {{#labels}}{{name}}{{^last}}, {{/last}}{{/labels}}{{#filteredantilabels}} and {{/filteredantilabels}}{{/filteredlabels}}{{#filteredantilabels}}without label {{#antilabels}}"{{name}}"{{^last}}, {{/last}}{{/antilabels}}{{/filteredantilabels}}

45 | {{/filtered}} 46 | 47 | {{#summary}}

Repositories

48 | {{#repostatus}}

{{name}}

49 | 54 | {{/repostatus}}{{/summary}}{{#activeissues}}

Issues

55 | 56 | {{#activeissuerepos}} 57 |

{{name}} (+{{newissues.count}}/-{{closedissues.count}}/💬{{issuecommentscount}})

58 | {{#newissues.count}}

{{.}} issues created:

59 | 62 | {{/newissues.count}} 63 | 64 | {{#commentedissues.count}}

{{.}} issues received {{issuecommentscount}} new comments:

65 | 68 | {{/commentedissues.count}} 69 | 70 | {{#closedissues.count}}

{{.}} issues closed:

71 | 74 | {{/closedissues.count}} 75 | 76 | {{/activeissuerepos}}{{/activeissues}} 77 | 78 | {{#activeprs}}

Pull requests

79 | {{#activeprrepos}} 80 |

{{name}} (+{{newpr.count}}/-{{mergedpr.count}}/💬{{prcommentscount}})

81 | {{#newpr.count}}

{{.}} pull requests submitted:

82 | 85 | {{/newpr.count}} 86 | 87 | {{#commentedpr.count}}

{{.}} pull requests received {{prcommentscount}} new comments:

88 | 91 | {{/commentedpr.count}} 92 | 93 | {{#mergedpr.count}}

{{.}} pull requests merged:

94 | 97 | {{/mergedpr.count}} 98 | 99 | {{/activeprrepos}} 100 | {{/activeprs}} 101 | 102 |
103 | Repositories tracked by this digest: 104 | 109 |
110 | {{#signature}} 111 |
{{.}}
112 | {{/signature}} 113 | 114 | 115 | -------------------------------------------------------------------------------- /templates/generic/issue_comment.created: -------------------------------------------------------------------------------- 1 | Re: [{{{repository.name}}}] {{{issue.title}}} (#{{{issue.number}}}) 2 | {{{comment.body}}} 3 | 4 | -- 5 | GitHub Notification of comment by {{{comment.user.login}}} 6 | Please view or discuss this issue at {{{comment.html_url}}} using your GitHub account 7 | -------------------------------------------------------------------------------- /templates/generic/issues.closed: -------------------------------------------------------------------------------- 1 | Closed: [{{{repository.name}}}] {{{issue.title}}} (#{{{issue.number}}}) 2 | {{{sender.login}}} closed this issue. See {{{issue.html_url}}} -------------------------------------------------------------------------------- /templates/generic/issues.labeled: -------------------------------------------------------------------------------- 1 | [{{{repository.name}}}] Issue: {{{issue.title}}} (#{{{issue.number}}}) marked as {{{label.name}}} 2 | {{{sender.login}}} has just labeled an issue for {{{repository.html_url}}} as "{{{label.name}}}": 3 | 4 | == {{{issue.title}}} == 5 | {{{issue.body}}} 6 | 7 | See {{{issue.html_url}}} 8 | -------------------------------------------------------------------------------- /templates/generic/issues.opened: -------------------------------------------------------------------------------- 1 | [{{repository.name}}] {{{issue.title}}} (#{{{issue.number}}}) 2 | {{{issue.user.login}}} has just created a new issue for {{{repository.html_url}}}: 3 | 4 | == {{{issue.title}}} == 5 | {{{issue.body}}} 6 | 7 | Please view or discuss this issue at {{{issue.html_url}}} using your GitHub account 8 | -------------------------------------------------------------------------------- /templates/generic/pull_request.closed: -------------------------------------------------------------------------------- 1 | [{{{repository.name}}}] {{#pull_request.merged}}Merged{{/pull_request.merged}}{{^pull_request.merged}}Closed{{/pull_request.merged}} Pull Request: {{{pull_request.title}}} 2 | {{{sender.login}}} has just {{#pull_request.merged}}merged{{/pull_request.merged}}{{^pull_request.merged}}closed{{/pull_request.merged}} {{{pull_request.user.login}}}'s pull request {{pull_request.number}} for {{{repository.html_url}}}: 3 | 4 | == {{{pull_request.title}}} == 5 | {{{pull_request.body}}} 6 | 7 | See {{{pull_request.html_url}}} 8 | -------------------------------------------------------------------------------- /templates/generic/pull_request.labeled: -------------------------------------------------------------------------------- 1 | [{{{repository.name}}}] Pull Request: {{{pull_request.title}}} 2 | {{{sender.login}}} has just labeled a pull request from {{{pull_request.user.login}}} for {{{repository.html_url}}} as "{{{label.name}}}": 3 | 4 | == {{{pull_request.title}}} == 5 | {{{pull_request.body}}} 6 | 7 | See {{{pull_request.html_url}}} 8 | -------------------------------------------------------------------------------- /templates/generic/pull_request.opened: -------------------------------------------------------------------------------- 1 | [{{{repository.name}}}] Pull Request: {{{pull_request.title}}} 2 | {{{pull_request.user.login}}} has just submitted a new pull request for {{{repository.html_url}}}: 3 | 4 | == {{{pull_request.title}}} == 5 | {{{pull_request.body}}} 6 | 7 | See {{{pull_request.html_url}}} 8 | -------------------------------------------------------------------------------- /templates/generic/push: -------------------------------------------------------------------------------- 1 | [{{repository.name}}] new commits pushed by {{{pusher.name}}} 2 | 3 | The following commits were just pushed by {{{pusher.name}}} to {{{repository.html_url}}}: 4 | 5 | {{#commits}} 6 | * {{{message}}} 7 | by {{{author.name}}} 8 | {{{url}}} 9 | 10 | {{/commits}} -------------------------------------------------------------------------------- /templates/generic/repository.created: -------------------------------------------------------------------------------- 1 | {{repository.full_name}} created by {{sender.login}} 2 | {{{sender.login}}} has just created a new repository: {{{repository.full_name}}} -------------------------------------------------------------------------------- /templates/generic/repository.deleted: -------------------------------------------------------------------------------- 1 | {{repository.full_name}} deleted by {{sender.login}} 2 | {{{sender.login}}} has just deleted the repository {{{repository.full_name}}} -------------------------------------------------------------------------------- /templates/generic/repository.transferred: -------------------------------------------------------------------------------- 1 | {{repository.full_name}} transferred from {{from}} to {{repository.owner.login}} by {{sender.login}} 2 | {{{sender.login}}} has just transferred the repository {{{repository.name}}} from {{from}} to {{repository.owner.login}} 3 | https://github.com/{{repository.full_name}} -------------------------------------------------------------------------------- /templates/generic/tr.published: -------------------------------------------------------------------------------- 1 | "{{{title}}}" published as a {{{status}}} 2 | "{{{title}}}" has just been published as a W3C {{{status}}} dated {{{date}}} at {{{uri}}}. -------------------------------------------------------------------------------- /test_digest.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | from mock import patch, call 3 | import unittest 4 | import responses 5 | import smtplib 6 | import json 7 | import requests 8 | import io 9 | import sys 10 | import datetime 11 | from index import sendDigest 12 | 13 | # depends on mocking responses to request via https://github.com/dropbox/responses 14 | 15 | config = { 16 | "SMTP_HOST": "localhost", 17 | "SMTP_PORT": "8080", 18 | "EMAIL_FROM": "test@localhost", 19 | "TEMPLATES_DIR": "tests/templates", 20 | "DIGEST_SENDER":"W3C Webmaster via GitHub API", 21 | "GH_OAUTH_TOKEN": "foo", 22 | "mls": "tests/mls.json", 23 | "SIGNATURE": "Sent with ♥" 24 | } 25 | 26 | 27 | class SpoofDatetime(datetime.datetime): 28 | @classmethod 29 | def now(cls): 30 | return cls(2016, 11, 16, 14, 30, 0) 31 | 32 | 33 | class SendEmailGithubTests(unittest.TestCase): 34 | def setUp(self): 35 | datetime.datetime = SpoofDatetime 36 | responses.add(responses.GET, "https://api.github.com/repos/foo/bar", status=404) 37 | responses.add( 38 | responses.GET, "https://api.github.com/repos/foo/bar/events", status=404 39 | ) 40 | responses.add( 41 | responses.GET, 42 | "https://api.github.com/repos/w3c/webrtc-pc", 43 | body=self.read_file("tests/repo1-data.json"), 44 | content_type="application/json", 45 | ) 46 | responses.add( 47 | responses.GET, 48 | "https://api.github.com/repos/w3c/webrtc-pc/events", 49 | body=self.read_file("tests/repo1-events-1.json"), 50 | content_type="application/json", 51 | adding_headers={ 52 | "link": ';rel="next"' 53 | }, 54 | ) 55 | responses.add( 56 | responses.GET, 57 | "https://api.github.com/repos/w3c/webrtc-pc/events/2", 58 | body=self.read_file("tests/repo1-events-2.json"), 59 | content_type="application/json", 60 | ) 61 | responses.add( 62 | responses.GET, 63 | "https://api.github.com/repos/w3c/webrtc-pc/issues/events", 64 | body=self.read_file("tests/repo1-issues.json"), 65 | content_type="application/json", 66 | ) 67 | responses.add( 68 | responses.GET, 69 | "https://api.github.com/repos/w3c/webcrypto", 70 | body=self.read_file("tests/repo2-data.json"), 71 | content_type="application/json", 72 | ) 73 | responses.add( 74 | responses.GET, 75 | "https://api.github.com/repos/w3c/webcrypto/events", 76 | body=self.read_file("tests/repo2-events-1.json"), 77 | content_type="application/json", 78 | ) 79 | responses.add( 80 | responses.GET, 81 | "https://w3c.github.io/validate-repos/rec-track-repos.json", 82 | body=self.read_file("tests/rec-repos.json"), 83 | content_type="application/json", 84 | ) 85 | 86 | def parseReferenceMessage(): 87 | return headers, body 88 | 89 | @staticmethod 90 | def read_file(filename): 91 | with io.open(filename) as filehandle: 92 | contents = filehandle.read() 93 | return contents 94 | 95 | @responses.activate 96 | @patch("smtplib.SMTP", autospec=True) 97 | def test_weekly_digest(self, mock_smtp): 98 | self.do_digest( 99 | "Wednesday", 100 | [ 101 | {"dom@localhost": "tests/digest-weekly-allrepos.msg"}, 102 | {"dom@localhost": "tests/digest-weekly.msg"}, 103 | {"dom@localhost": "tests/digest-weekly-filtered.msg", "html": True}, 104 | {"dom@localhost": "tests/digest-weekly-repofiltered.msg"}, 105 | ], 106 | mock_smtp.return_value.__enter__.return_value.sendmail, 107 | ) 108 | self.assertEqual(len(responses.calls), 6) 109 | 110 | @responses.activate 111 | @patch("smtplib.SMTP", autospec=True) 112 | def test_quarterly_summary(self, mock_smtp): 113 | self.do_digest( 114 | "quarterly", [{"dom@localhost": "tests/summary-quarterly.msg"}], mock_smtp.return_value.__enter__.return_value.sendmail 115 | ) 116 | self.assertEqual(len(responses.calls), 2) 117 | 118 | def do_digest(self, period, refs, mock_smtp): 119 | import email 120 | 121 | sendDigest(config, period) 122 | self.assertEqual(mock_smtp.call_count, len(refs)) 123 | counter = 0 124 | import pprint 125 | #pprint.pprint(mock_smtp.mock_calls) 126 | for (name, args, kwargs) in mock_smtp.mock_calls: 127 | #pprint(args) 128 | self.assertEqual(args[0], "test@localhost") 129 | self.assertIn(args[1][0], refs[counter]) 130 | sent_email = email.message_from_string(args[2]) 131 | sent_parts = [] 132 | ref_parts = [] 133 | ref_parts.append(self.read_file(refs[counter][args[1][0]])) 134 | if sent_email.is_multipart(): 135 | sent_parts.append( 136 | { 137 | "headers": sent_email.get_payload(0) 138 | .as_string() 139 | .split("\n\n")[0], 140 | "body": sent_email.get_payload(0) 141 | .get_payload(decode=True) 142 | .decode("utf-8"), 143 | } 144 | ) 145 | sent_parts.append( 146 | { 147 | "headers": sent_email.get_payload(1) 148 | .as_string() 149 | .split("\n\n")[0], 150 | "body": sent_email.get_payload(1) 151 | .get_payload(decode=True) 152 | .decode("utf-8"), 153 | } 154 | ) 155 | if refs[counter].get("html", False): 156 | ref_parts.append( 157 | self.read_file(refs[counter][args[1][0]] + ".html") 158 | ) 159 | else: 160 | sent_parts.append( 161 | { 162 | "headers": args[2].split("\n\n")[0], 163 | "body": sent_email.get_payload(decode=True).decode("utf-8"), 164 | } 165 | ) 166 | self.maxDiff = None 167 | for sent_part, ref_part in zip(sent_parts, ref_parts): 168 | # TODO: use partition 169 | ref_headers = ref_part.split("\n\n")[0] 170 | self.assertMultiLineEqual(sent_part["headers"], ref_headers) 171 | ref_body = "\n".join(ref_part.split("\n\n")[1:]) 172 | self.assertMultiLineEqual(sent_part["body"], ref_body) 173 | counter = counter + 1 174 | 175 | if __name__ == "__main__": 176 | unittest.main() 177 | -------------------------------------------------------------------------------- /test_server.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import os 3 | from http.server import HTTPServer, BaseHTTPRequestHandler 4 | import threading 5 | import responses 6 | from index import serveRequest 7 | import sys 8 | 9 | config = { 10 | "SMTP_HOST": "localhost", 11 | "SMTP_PORT": "8080", 12 | "EMAIL_FROM": "test@localhost", 13 | "TEMPLATES_DIR": "tests/templates", 14 | "GH_OAUTH_TOKEN": "foo", 15 | "mls": "tests/mls.json", 16 | } 17 | 18 | 19 | class PythonCGIHTTPRequestHandler(BaseHTTPRequestHandler): 20 | wbufsize = 0 21 | 22 | def do_GET(self): 23 | os.environ["REQUEST_METHOD"] = "GET" 24 | self.serve() 25 | 26 | def log_message(self, format, *args): 27 | pass 28 | 29 | @responses.activate 30 | def serve(self): 31 | data = self.rfile.read(int(self.headers.get("Content-Length", 0))) 32 | output = serveRequest(config, data) 33 | # crude, but sufficient here 34 | head, body = output.split("\n\n", 1) 35 | headersList = head.split("\n") 36 | headers = {} 37 | for line in headersList: 38 | key, value = line.split(":", 1) 39 | headers[key] = value 40 | status = 200 41 | if "Status" in headers: 42 | status = int(headers["Status"].strip().split(" ")[0]) 43 | del headers["Status"] 44 | self.send_response(status) 45 | for header, value in headers.items(): 46 | self.send_header(header, value) 47 | self.end_headers() 48 | self.wfile.write(body.encode("utf-8")) 49 | 50 | def do_POST(self): 51 | os.environ["REQUEST_METHOD"] = "POST" 52 | if "X-Github-Event" in self.headers: 53 | os.environ["HTTP_X_GITHUB_EVENT"] = self.headers["X-Github-Event"] 54 | else: 55 | os.environ.pop("HTTP_X_GITHUB_EVENT", None) 56 | if "X-W3C-Webhook" in self.headers: 57 | os.environ["HTTP_X_W3C_WEBHOOK"] = self.headers["X-W3C-Webhook"] 58 | else: 59 | os.environ.pop("HTTP_X_W3C_WEBHOOK", None) 60 | os.environ["REMOTE_ADDR"] = self.headers.get("Remote-Addr", "127.0.0.1") 61 | self.rfile.flush() 62 | self.serve() 63 | 64 | 65 | class Server: 66 | def __init__(self): 67 | responses.add( 68 | responses.GET, 69 | "https://api.github.com/meta", 70 | body='{"hooks":["127.0.0.0/8"]}', 71 | content_type="application/json", 72 | ) 73 | responses.add( 74 | responses.GET, 75 | "https://api.github.com/users/dontcallmedom", 76 | body='{"name":"Dominique Hazaël-Massieux"}', 77 | content_type="application/json", 78 | ) 79 | responses.add( 80 | responses.GET, 81 | "https://api.github.com/users/anssiko", 82 | body='{"name":"Anssi Kostiainen"}', 83 | content_type="application/json", 84 | ) 85 | responses.add( 86 | responses.GET, 87 | "https://api.github.com/users/stefhak", 88 | body='{"name":"Stefan Hakansson"}', 89 | content_type="application/json", 90 | ) 91 | responses.add( 92 | responses.GET, 93 | "https://api.github.com/users/tobie", 94 | body='{"name":"Tobie Langel"}', 95 | content_type="application/json", 96 | ) 97 | responses.add( 98 | responses.GET, 99 | "https://api.github.com/users/alvestrand", 100 | body='{"name":"Harald Alvestrand"}', 101 | content_type="application/json", 102 | ) 103 | responses.add( 104 | responses.GET, 105 | "https://api.github.com/repos/w3c/mediacapture-main/pulls/150", 106 | body='{"id":31564006}', 107 | content_type="application/json", 108 | ) 109 | responses.add( 110 | responses.GET, 111 | "https://api.github.com/users/Codertocat", 112 | body='{"name":"Codertocat"}', 113 | content_type="application/json", 114 | ) 115 | 116 | self.stop = threading.Event() 117 | server_address = ("localhost", 8000) 118 | handler = PythonCGIHTTPRequestHandler 119 | self.httpd = HTTPServer(server_address, handler) 120 | 121 | def start(self): 122 | self.mythread = threading.Thread(target=self.serve) 123 | self.mythread.start() 124 | 125 | def serve(self): 126 | self.httpd.handle_request() 127 | return 128 | 129 | def terminate(self): 130 | self.stop.set() 131 | self.httpd.socket.close() 132 | self.mythread.join() 133 | 134 | 135 | if __name__ == "__main__": 136 | server = Server() 137 | server.serve() 138 | -------------------------------------------------------------------------------- /test_webhook.py: -------------------------------------------------------------------------------- 1 | from mock import patch, call 2 | import email 3 | import email.utils 4 | import unittest 5 | import smtplib 6 | import json 7 | import requests 8 | import io 9 | import sys 10 | from test_server import Server 11 | 12 | # depends on mocking responses to request via https://github.com/dropbox/responses 13 | 14 | 15 | class SendEmailGithubTests(unittest.TestCase): 16 | def setUp(self): 17 | self.t = Server() 18 | self.t.start() 19 | 20 | @staticmethod 21 | def read_file(filename): 22 | with io.open(filename) as filehandle: 23 | contents = filehandle.read() 24 | return contents 25 | 26 | def test_ignore_get(self): 27 | rv = requests.get("http://localhost:8000/") 28 | assert " Nothing to see here, move along ..." == rv.text 29 | 30 | def test_ip_check_ok(self): 31 | rv = requests.post( 32 | "http://localhost:8000/", 33 | headers={"X-GitHub-Event": "ping", "Remote-Addr": "127.0.0.1"}, 34 | ) 35 | data = rv.json() 36 | assert data["msg"] == "Hi!" 37 | assert rv.status_code == 200 38 | 39 | def test_ip_check_403(self): 40 | rv = requests.post( 41 | "http://localhost:8000/", 42 | headers={"X-GitHub-Event": "ping", "Remote-Addr": "128.0.0.1"}, 43 | ) 44 | assert rv.status_code == 403 45 | 46 | @patch("index.make_msgid", return_value="") 47 | @patch("smtplib.SMTP", autospec=True) 48 | def test_w3c_tr_published(self, mock_smtp, mock_make_msgid): 49 | data = self.read_file("tests/trpublished-notif.json") 50 | rv = requests.post( 51 | "http://localhost:8000/", 52 | headers={"X-W3C-Webhook": "https://example.org"}, 53 | data=data, 54 | ) 55 | refs = {"dom@localhost": "tests/trpublished-notif.msg"} 56 | self.assert_operation_results(rv, mock_smtp.return_value.__enter__.return_value.sendmail, refs) 57 | 58 | def do_gh_operation(self, operation, jsonf, refs, mock_smtp): 59 | with io.open(jsonf) as filehandle: 60 | data = filehandle.read() 61 | rv = requests.post( 62 | "http://localhost:8000/", headers={"X-GitHub-Event": operation}, data=data 63 | ) 64 | self.assert_operation_results(rv, mock_smtp.return_value.__enter__.return_value.sendmail, refs) 65 | 66 | def assert_operation_results(self, rv, instance, refs): 67 | self.assertEqual(rv.status_code, 200) 68 | self.assertEqual(instance.call_count, len(refs)) 69 | i = 0 70 | for (name, args, kwargs) in instance.mock_calls: 71 | self.assertEqual(args[0], "test@localhost") 72 | self.assertIn(args[1][0], refs) 73 | msg = self.read_file(refs[args[1][0]]) 74 | self.maxDiff = None 75 | import email 76 | 77 | sent_email = email.message_from_string(args[2], policy=email.policy.default) 78 | sent_headers = args[2].split("\n\n")[0] 79 | sent_body = sent_email.get_content() 80 | ref_headers = msg.split("\n\n")[0] 81 | ref_body = "\n".join(msg.split("\n\n")[1:]) 82 | self.assertMultiLineEqual(sent_headers, ref_headers) 83 | self.assertMultiLineEqual(sent_body, ref_body) 84 | 85 | @patch("smtplib.SMTP", autospec=True) 86 | def test_repo_created_notif(self, mock_smtp): 87 | self.do_gh_operation( 88 | "repository", 89 | "tests/repo-created.json", 90 | {"dom@localhost": "tests/repo-created.msg"}, 91 | mock_smtp, 92 | ) 93 | 94 | @patch("smtplib.SMTP", autospec=True) 95 | def test_repo_transferred_notif(self, mock_smtp): 96 | self.do_gh_operation( 97 | "repository", 98 | "tests/repo-transferred.json", 99 | {"dom@localhost": "tests/repo-transferred.msg"}, 100 | mock_smtp, 101 | ) 102 | 103 | @patch("smtplib.SMTP", autospec=True) 104 | def test_repo_deleted_notif(self, mock_smtp): 105 | self.do_gh_operation( 106 | "repository", 107 | "tests/repo-deleted.json", 108 | {"dom@localhost": "tests/repo-deleted.msg"}, 109 | mock_smtp, 110 | ) 111 | 112 | @patch("smtplib.SMTP", autospec=True) 113 | def test_push_notif(self, mock_smtp): 114 | self.do_gh_operation( 115 | "push", 116 | "tests/push-notif.json", 117 | {"dom@localhost": "tests/push-notif.msg"}, 118 | mock_smtp, 119 | ) 120 | 121 | @patch("smtplib.SMTP", autospec=True) 122 | def test_issue_notif(self, mock_smtp): 123 | self.do_gh_operation( 124 | "issues", 125 | "tests/issue-notif.json", 126 | { 127 | "dom@localhost": "tests/issue-notif.msg", 128 | "log@localhost": "tests/issue-notif-log.msg", 129 | }, 130 | mock_smtp, 131 | ) 132 | 133 | @patch("smtplib.SMTP", autospec=True) 134 | def test_issue_comment_notif(self, mock_smtp): 135 | self.do_gh_operation( 136 | "issue_comment", 137 | "tests/issue-comment-notif.json", 138 | {"dom@localhost": "tests/issue-comment-notif.msg"}, 139 | mock_smtp, 140 | ) 141 | 142 | @patch("smtplib.SMTP", autospec=True) 143 | def test_pull_request_comment_notif(self, mock_smtp): 144 | self.do_gh_operation( 145 | "issue_comment", 146 | "tests/pull_request-comment-notif.json", 147 | {"dom@localhost": "tests/pull_request-comment-notif.msg"}, 148 | mock_smtp, 149 | ) 150 | 151 | @patch("smtplib.SMTP", autospec=True) 152 | def test_pull_notif(self, mock_smtp): 153 | self.do_gh_operation( 154 | "pull_request", 155 | "tests/pull-notif.json", 156 | {"dom@localhost": "tests/pull-notif.msg"}, 157 | mock_smtp, 158 | ) 159 | 160 | @patch("smtplib.SMTP", autospec=True) 161 | def test_pull_closed_notif(self, mock_smtp): 162 | self.do_gh_operation( 163 | "pull_request", 164 | "tests/pull-merged.json", 165 | {"dom@localhost": "tests/pull-merged.msg"}, 166 | mock_smtp, 167 | ) 168 | 169 | @patch("smtplib.SMTP", autospec=True) 170 | def test_pull_labeled_notif(self, mock_smtp): 171 | self.do_gh_operation( 172 | "pull_request", 173 | "tests/pull-labeled.json", 174 | {"dom@localhost": "tests/pull-labeled.msg"}, 175 | mock_smtp, 176 | ) 177 | 178 | @patch("smtplib.SMTP", autospec=True) 179 | def test_unavailable_template(self, mock_smtp): 180 | data = self.read_file("tests/push-notif.json") 181 | rv = requests.post( 182 | "http://localhost:8000/", headers={"X-GitHub-Event": "foobar"}, data=data 183 | ) 184 | instance = mock_smtp.return_value 185 | self.assertEqual(rv.status_code, 500) 186 | self.assertEqual(instance.call_count, 0) 187 | 188 | def tearDown(self): 189 | self.t.terminate() 190 | 191 | 192 | if __name__ == "__main__": 193 | unittest.main() 194 | -------------------------------------------------------------------------------- /tests/digest-weekly-allrepos.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | 5 | 6 | 7 | 8 | 9 | 10 | Events with label "editorial" 11 | 12 | 13 | Issues 14 | ------ 15 | * w3c/webrtc-pc (+1/-0/💬0) 16 | 1 issues created: 17 | - Meta: auto-publish changes to the spec (by foolip) 18 | https://github.com/w3c/webrtc-pc/issues/942 [editorial] 19 | 20 | 21 | * w3c/webcrypto (+0/-0/💬1) 22 | 1 issues received 1 new comments: 23 | - #86 Bug 29539 - Invalid algorithm OID for ECDH (1 by joakimb) 24 | https://github.com/w3c/webcrypto/issues/86 [editorial] 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Repositories tracked by this digest: 35 | ----------------------------------- 36 | * https://github.com/w3c/webrtc-pc 37 | * https://github.com/w3c/webcrypto 38 | 39 | 40 | 41 | 42 | -- 43 | Sent with ♥ 44 | -------------------------------------------------------------------------------- /tests/digest-weekly-filtered.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | 5 | 6 | 7 | 8 | 9 | 10 | Events with label "PR exists" and without label "List discussion needed" 11 | 12 | 13 | Issues 14 | ------ 15 | * w3c/webrtc-pc (+0/-1/💬5) 16 | 17 | 1 issues received 5 new comments: 18 | - #888 Section 6.2: Issue 3 - buffered data at transport close (5 by alvestrand, feross, jesup, taylor-b) 19 | https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 20 | 21 | 22 | 1 issues closed: 23 | - Section 6.2: Issue 3 - buffered data at transport close https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | Repositories tracked by this digest: 33 | ----------------------------------- 34 | * https://github.com/w3c/webrtc-pc 35 | 36 | 37 | 38 | 39 | -- 40 | Sent with ♥ 41 | -------------------------------------------------------------------------------- /tests/digest-weekly-filtered.msg.html: -------------------------------------------------------------------------------- 1 | Content-Type: text/html; charset="utf-8" 2 | MIME-Version: 1.0 3 | Content-Transfer-Encoding: quoted-printable 4 | 5 | 6 | 7 | 8 | 9 | Weekly github digest (Issues with proposed edits) 10 | 38 | 39 | 40 | 41 | 42 |

Wednesday November 16, 2016

43 | 44 | 45 |

Events with label PR exists and without label "List discussion needed"

46 | 47 | 48 |

Issues

49 | 50 | 51 |

w3c/webrtc-pc (+0/-1/💬5)

52 | 53 | 54 |

1 issues received 5 new comments:

55 | 58 | 59 | 60 |

1 issues closed:

61 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
74 | Repositories tracked by this digest: 75 | 78 |
79 |
Sent with ♥
80 | 81 | 82 | -------------------------------------------------------------------------------- /tests/digest-weekly-repofiltered.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | 5 | 6 | 7 | 8 | 9 | 10 | Issues 11 | ------ 12 | * w3c/webcrypto (+0/-0/💬1) 13 | 1 issues received 1 new comments: 14 | - #86 Bug 29539 - Invalid algorithm OID for ECDH (1 by joakimb) 15 | https://github.com/w3c/webcrypto/issues/86 [editorial] 16 | 17 | 18 | * w3c/webrtc-pc (+5/-2/💬9) 19 | 5 issues created: 20 | - replaceTrack(null): Allowed? (by aboba) 21 | https://github.com/w3c/webrtc-pc/issues/947 22 | - sender.setParameters(): Changing simulcast parameters? (by aboba) 23 | https://github.com/w3c/webrtc-pc/issues/945 24 | - Effect of sender.replaceTrack(null) (by aboba) 25 | https://github.com/w3c/webrtc-pc/issues/943 26 | - Meta: auto-publish changes to the spec (by foolip) 27 | https://github.com/w3c/webrtc-pc/issues/942 [editorial] 28 | - STUN/TURN Auto Discovery handling (by misi) 29 | https://github.com/w3c/webrtc-pc/issues/941 30 | 31 | 32 | 4 issues received 9 new comments: 33 | - #942 Meta: auto-publish changes to the spec (1 by henbos) 34 | https://github.com/w3c/webrtc-pc/issues/942 35 | - #927 What happens when setDirection() is called (1 by taylor-b) 36 | https://github.com/w3c/webrtc-pc/issues/927 [November interim topic] 37 | - #888 Section 6.2: Issue 3 - buffered data at transport close (5 by alvestrand, feross, jesup, taylor-b) 38 | https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 39 | - #803 Rules for negotiation-needed flag need to be updated for transceivers. (2 by aboba, taylor-b) 40 | https://github.com/w3c/webrtc-pc/issues/803 [November interim topic] 41 | 42 | 43 | 2 issues closed: 44 | - Rules for negotiation-needed flag need to be updated for transceivers. https://github.com/w3c/webrtc-pc/issues/803 [November interim topic] 45 | - Section 6.2: Issue 3 - buffered data at transport close https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 46 | 47 | 48 | 49 | 50 | 51 | 52 | Pull requests 53 | ------------- 54 | * w3c/webrtc-pc (+8/-1/💬10) 55 | 8 pull requests submitted: 56 | - Revert "Respec now uses yarn instead of npm" (by vivienlacourba) 57 | https://github.com/w3c/webrtc-pc/pull/948 58 | - Splitting transceiver direction into "direction" and "currentDirection". (by taylor-b) 59 | https://github.com/w3c/webrtc-pc/pull/946 60 | - Effect of setting sender.track to null (by aboba) 61 | https://github.com/w3c/webrtc-pc/pull/944 62 | - Use of "stopped" in insertDTMF and replaceTrack (by aboba) 63 | https://github.com/w3c/webrtc-pc/pull/940 64 | - Removed "stopped" from removeTrack (by aboba) 65 | https://github.com/w3c/webrtc-pc/pull/939 66 | - What happens when setDirection() is called (by aboba) 67 | https://github.com/w3c/webrtc-pc/pull/938 68 | - What happens when transceiver.stop() is called (by aboba) 69 | https://github.com/w3c/webrtc-pc/pull/937 70 | - Remove Issue 1: Current and Pending SDP (by aboba) 71 | https://github.com/w3c/webrtc-pc/pull/936 72 | 73 | 74 | 7 pull requests received 10 new comments: 75 | - #946 Splitting transceiver direction into "direction" and "currentDirection". (1 by aboba) 76 | https://github.com/w3c/webrtc-pc/pull/946 77 | - #944 Effect of setting sender.track to null (4 by aboba, pthatcherg) 78 | https://github.com/w3c/webrtc-pc/pull/944 79 | - #940 Use of "stopped" in insertDTMF and replaceTrack (1 by aboba) 80 | https://github.com/w3c/webrtc-pc/pull/940 81 | - #939 Removed "stopped" from removeTrack (1 by aboba) 82 | https://github.com/w3c/webrtc-pc/pull/939 83 | - #929 Have RTCSessionDescription's sdp member default to "" (1 by jan-ivar) 84 | https://github.com/w3c/webrtc-pc/pull/929 85 | - #920 Revise text dealing with with the ICE Agent/User Agent interactions. (1 by aboba) 86 | https://github.com/w3c/webrtc-pc/pull/920 [November interim topic] 87 | - #919 Removing incorrect statement related to IP leaking issue. (1 by vivienlacourba) 88 | https://github.com/w3c/webrtc-pc/pull/919 89 | 90 | 91 | 1 pull requests merged: 92 | - Respec now uses yarn instead of npm 93 | https://github.com/w3c/webrtc-pc/pull/935 94 | 95 | 96 | 97 | 98 | Repositories tracked by this digest: 99 | ----------------------------------- 100 | * https://github.com/w3c/webcrypto 101 | * https://github.com/w3c/webrtc-pc 102 | 103 | 104 | 105 | 106 | -- 107 | Sent with ♥ 108 | -------------------------------------------------------------------------------- /tests/digest-weekly.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | 5 | 6 | 7 | Errors while compiling the digest: 8 | - Repo foo/bar/events yields 404 error 9 | 10 | 11 | Issues 12 | ------ 13 | * w3c/webrtc-pc (+5/-2/💬12) 14 | 5 issues created: 15 | - replaceTrack(null): Allowed? (by aboba) 16 | https://github.com/w3c/webrtc-pc/issues/947 17 | - sender.setParameters(): Changing simulcast parameters? (by aboba) 18 | https://github.com/w3c/webrtc-pc/issues/945 19 | - Effect of sender.replaceTrack(null) (by aboba) 20 | https://github.com/w3c/webrtc-pc/issues/943 21 | - Meta: auto-publish changes to the spec (by foolip) 22 | https://github.com/w3c/webrtc-pc/issues/942 [editorial] 23 | - STUN/TURN Auto Discovery handling (by misi) 24 | https://github.com/w3c/webrtc-pc/issues/941 25 | 26 | 27 | 5 issues received 12 new comments: 28 | - #942 Meta: auto-publish changes to the spec (1 by henbos) 29 | https://github.com/w3c/webrtc-pc/issues/942 30 | - #927 What happens when setDirection() is called (1 by taylor-b) 31 | https://github.com/w3c/webrtc-pc/issues/927 [November interim topic] 32 | - #888 Section 6.2: Issue 3 - buffered data at transport close (5 by alvestrand, feross, jesup, taylor-b) 33 | https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 34 | - #803 Rules for negotiation-needed flag need to be updated for transceivers. (2 by aboba, taylor-b) 35 | https://github.com/w3c/webrtc-pc/issues/803 [November interim topic] 36 | - #714 STUN/TURN OAuth token auth parameter passing (3 by juberti, misi) 37 | https://github.com/w3c/webrtc-pc/issues/714 [External feedback] [July interim topic] [List discussion needed] [November interim topic] [PR exists] 38 | 39 | 40 | 2 issues closed: 41 | - Rules for negotiation-needed flag need to be updated for transceivers. https://github.com/w3c/webrtc-pc/issues/803 [November interim topic] 42 | - Section 6.2: Issue 3 - buffered data at transport close https://github.com/w3c/webrtc-pc/issues/888 [PR exists] 43 | 44 | 45 | 46 | 47 | 48 | 49 | Pull requests 50 | ------------- 51 | * w3c/webrtc-pc (+8/-1/💬10) 52 | 8 pull requests submitted: 53 | - Revert "Respec now uses yarn instead of npm" (by vivienlacourba) 54 | https://github.com/w3c/webrtc-pc/pull/948 55 | - Splitting transceiver direction into "direction" and "currentDirection". (by taylor-b) 56 | https://github.com/w3c/webrtc-pc/pull/946 57 | - Effect of setting sender.track to null (by aboba) 58 | https://github.com/w3c/webrtc-pc/pull/944 59 | - Use of "stopped" in insertDTMF and replaceTrack (by aboba) 60 | https://github.com/w3c/webrtc-pc/pull/940 61 | - Removed "stopped" from removeTrack (by aboba) 62 | https://github.com/w3c/webrtc-pc/pull/939 63 | - What happens when setDirection() is called (by aboba) 64 | https://github.com/w3c/webrtc-pc/pull/938 65 | - What happens when transceiver.stop() is called (by aboba) 66 | https://github.com/w3c/webrtc-pc/pull/937 67 | - Remove Issue 1: Current and Pending SDP (by aboba) 68 | https://github.com/w3c/webrtc-pc/pull/936 69 | 70 | 71 | 7 pull requests received 10 new comments: 72 | - #946 Splitting transceiver direction into "direction" and "currentDirection". (1 by aboba) 73 | https://github.com/w3c/webrtc-pc/pull/946 74 | - #944 Effect of setting sender.track to null (4 by aboba, pthatcherg) 75 | https://github.com/w3c/webrtc-pc/pull/944 76 | - #940 Use of "stopped" in insertDTMF and replaceTrack (1 by aboba) 77 | https://github.com/w3c/webrtc-pc/pull/940 78 | - #939 Removed "stopped" from removeTrack (1 by aboba) 79 | https://github.com/w3c/webrtc-pc/pull/939 80 | - #929 Have RTCSessionDescription's sdp member default to "" (1 by jan-ivar) 81 | https://github.com/w3c/webrtc-pc/pull/929 82 | - #920 Revise text dealing with with the ICE Agent/User Agent interactions. (1 by aboba) 83 | https://github.com/w3c/webrtc-pc/pull/920 [November interim topic] 84 | - #919 Removing incorrect statement related to IP leaking issue. (1 by vivienlacourba) 85 | https://github.com/w3c/webrtc-pc/pull/919 86 | 87 | 88 | 1 pull requests merged: 89 | - Respec now uses yarn instead of npm 90 | https://github.com/w3c/webrtc-pc/pull/935 91 | 92 | 93 | 94 | 95 | Repositories tracked by this digest: 96 | ----------------------------------- 97 | * https://github.com/w3c/webrtc-pc 98 | * https://github.com/foo/bar 99 | 100 | 101 | 102 | 103 | -- 104 | Sent with ♥ 105 | -------------------------------------------------------------------------------- /tests/issue-comment-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "created", 3 | "issue": { 4 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1", 5 | "labels_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/labels{/name}", 6 | "comments_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/comments", 7 | "events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/events", 8 | "html_url": "https://github.com/dontcallmedom/github-notify-ml/issues/1", 9 | "id": 45268120, 10 | "number": 1, 11 | "title": "Move default values to config file", 12 | "user": { 13 | "login": "dontcallmedom", 14 | "id": 216410, 15 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 16 | "gravatar_id": "", 17 | "url": "https://api.github.com/users/dontcallmedom", 18 | "html_url": "https://github.com/dontcallmedom", 19 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 20 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 21 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 22 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 23 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 24 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 25 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 26 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 27 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 28 | "type": "User", 29 | "site_admin": false 30 | }, 31 | "labels": [ 32 | { 33 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/labels/enhancement", 34 | "name": "enhancement", 35 | "color": "84b6eb" 36 | } 37 | ], 38 | "state": "open", 39 | "locked": false, 40 | "assignee": null, 41 | "milestone": null, 42 | "comments": 1, 43 | "created_at": "2014-10-08T16:51:59Z", 44 | "updated_at": "2014-10-13T12:47:06Z", 45 | "closed_at": null, 46 | "body": "(which formats to use? .ini, .json, .yaml?)" 47 | }, 48 | "comment": { 49 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/comments/58886897", 50 | "html_url": "https://github.com/dontcallmedom/github-notify-ml/issues/1#issuecomment-58886897", 51 | "issue_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1", 52 | "id": 58886897, 53 | "user": { 54 | "login": "dontcallmedom", 55 | "id": 216410, 56 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 57 | "gravatar_id": "", 58 | "url": "https://api.github.com/users/dontcallmedom", 59 | "html_url": "https://github.com/dontcallmedom", 60 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 61 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 62 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 63 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 64 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 65 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 66 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 67 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 68 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 69 | "type": "User", 70 | "site_admin": false 71 | }, 72 | "created_at": "2014-10-13T12:47:06Z", 73 | "updated_at": "2014-10-13T12:47:06Z", 74 | "body": "python has its own configuration format, let's use that one https://docs.python.org/2/library/configparser.html" 75 | }, 76 | "repository": { 77 | "id": 24946939, 78 | "name": "github-notify-ml", 79 | "full_name": "dontcallmedom/github-notify-ml", 80 | "owner": { 81 | "login": "dontcallmedom", 82 | "id": 216410, 83 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 84 | "gravatar_id": "", 85 | "url": "https://api.github.com/users/dontcallmedom", 86 | "html_url": "https://github.com/dontcallmedom", 87 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 88 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 89 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 90 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 91 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 92 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 93 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 94 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 95 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 96 | "type": "User", 97 | "site_admin": false 98 | }, 99 | "private": false, 100 | "html_url": "https://github.com/dontcallmedom/github-notify-ml", 101 | "description": "", 102 | "fork": false, 103 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml", 104 | "forks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/forks", 105 | "keys_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/keys{/key_id}", 106 | "collaborators_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/collaborators{/collaborator}", 107 | "teams_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/teams", 108 | "hooks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/hooks", 109 | "issue_events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/events{/number}", 110 | "events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/events", 111 | "assignees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/assignees{/user}", 112 | "branches_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/branches{/branch}", 113 | "tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/tags", 114 | "blobs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/blobs{/sha}", 115 | "git_tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/tags{/sha}", 116 | "git_refs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/refs{/sha}", 117 | "trees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/trees{/sha}", 118 | "statuses_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/statuses/{sha}", 119 | "languages_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/languages", 120 | "stargazers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/stargazers", 121 | "contributors_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contributors", 122 | "subscribers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscribers", 123 | "subscription_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscription", 124 | "commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/commits{/sha}", 125 | "git_commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/commits{/sha}", 126 | "comments_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/comments{/number}", 127 | "issue_comment_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/comments/{number}", 128 | "contents_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contents/{+path}", 129 | "compare_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/compare/{base}...{head}", 130 | "merges_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/merges", 131 | "archive_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/{archive_format}{/ref}", 132 | "downloads_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/downloads", 133 | "issues_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues{/number}", 134 | "pulls_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/pulls{/number}", 135 | "milestones_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/milestones{/number}", 136 | "notifications_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/notifications{?since,all,participating}", 137 | "labels_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/labels{/name}", 138 | "releases_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/releases{/id}", 139 | "created_at": "2014-10-08T15:25:37Z", 140 | "updated_at": "2014-10-08T15:26:13Z", 141 | "pushed_at": "2014-10-08T17:13:01Z", 142 | "git_url": "git://github.com/dontcallmedom/github-notify-ml.git", 143 | "ssh_url": "git@github.com:dontcallmedom/github-notify-ml.git", 144 | "clone_url": "https://github.com/dontcallmedom/github-notify-ml.git", 145 | "svn_url": "https://github.com/dontcallmedom/github-notify-ml", 146 | "homepage": null, 147 | "size": 0, 148 | "stargazers_count": 0, 149 | "watchers_count": 0, 150 | "language": "Python", 151 | "has_issues": true, 152 | "has_downloads": true, 153 | "has_wiki": true, 154 | "has_pages": false, 155 | "forks_count": 0, 156 | "mirror_url": null, 157 | "open_issues_count": 1, 158 | "forks": 0, 159 | "open_issues": 1, 160 | "watchers": 0, 161 | "default_branch": "master" 162 | }, 163 | "sender": { 164 | "login": "dontcallmedom", 165 | "id": 216410, 166 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 167 | "gravatar_id": "", 168 | "url": "https://api.github.com/users/dontcallmedom", 169 | "html_url": "https://github.com/dontcallmedom", 170 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 171 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 172 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 173 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 174 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 175 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 176 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 177 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 178 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 179 | "type": "User", 180 | "site_admin": false 181 | } 182 | } -------------------------------------------------------------------------------- /tests/issue-comment-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: =?utf-8?q?Dominique_Haza=C3=ABl-Massieux_via_GitHub?= 5 | To: dom@localhost 6 | Subject: Re: [github-notify-ml] Move default values to config file (#1) 7 | Message-ID: 8 | In-Reply-To: 9 | 10 | python has its own configuration format, let's use that one https://docs.python.org/2/library/configparser.html 11 | 12 | 13 | -- 14 | GitHub Notification of comment by dontcallmedom 15 | Please view or discuss this issue at https://github.com/dontcallmedom/github-notify-ml/issues/1#issuecomment-58886897 using your GitHub account 16 | -------------------------------------------------------------------------------- /tests/issue-notif-log.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: =?utf-8?q?Dominique_Haza=C3=ABl-Massieux_via_GitHub?= 5 | To: log@localhost 6 | Subject: [github-notify-ml] Move default values to config file (#1) 7 | Message-ID: 8 | 9 | dontcallmedom has just created a new issue for https://github.com/dontcallmedom/github-notify-ml: 10 | 11 | 12 | == Move default values to config file == 13 | (which formats to use? .ini, .json, .yaml?) 14 | 15 | 16 | Please view or discuss this issue at https://github.com/dontcallmedom/github-notify-ml/issues/1 using your GitHub account 17 | -------------------------------------------------------------------------------- /tests/issue-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "opened", 3 | "issue": { 4 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1", 5 | "labels_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/labels{/name}", 6 | "comments_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/comments", 7 | "events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/1/events", 8 | "html_url": "https://github.com/dontcallmedom/github-notify-ml/issues/1", 9 | "id": 45268120, 10 | "number": 1, 11 | "title": "Move default values to config file", 12 | "user": { 13 | "login": "dontcallmedom", 14 | "id": 216410, 15 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 16 | "gravatar_id": "", 17 | "url": "https://api.github.com/users/dontcallmedom", 18 | "html_url": "https://github.com/dontcallmedom", 19 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 20 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 21 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 22 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 23 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 24 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 25 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 26 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 27 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 28 | "type": "User", 29 | "site_admin": false 30 | }, 31 | "labels": [ 32 | { 33 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/labels/enhancement", 34 | "name": "enhancement", 35 | "color": "84b6eb" 36 | } 37 | ], 38 | "state": "open", 39 | "locked": false, 40 | "assignee": null, 41 | "milestone": null, 42 | "comments": 0, 43 | "created_at": "2014-10-08T16:51:59Z", 44 | "updated_at": "2014-10-08T16:51:59Z", 45 | "closed_at": null, 46 | "body": "(which formats to use? .ini, .json, .yaml?)" 47 | }, 48 | "repository": { 49 | "id": 24946939, 50 | "name": "github-notify-ml", 51 | "full_name": "dontcallmedom/github-notify-ml", 52 | "owner": { 53 | "login": "dontcallmedom", 54 | "id": 216410, 55 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 56 | "gravatar_id": "", 57 | "url": "https://api.github.com/users/dontcallmedom", 58 | "html_url": "https://github.com/dontcallmedom", 59 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 60 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 61 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 62 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 63 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 64 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 65 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 66 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 67 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 68 | "type": "User", 69 | "site_admin": false 70 | }, 71 | "private": false, 72 | "html_url": "https://github.com/dontcallmedom/github-notify-ml", 73 | "description": "", 74 | "fork": false, 75 | "url": "https://api.github.com/repos/dontcallmedom/github-notify-ml", 76 | "forks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/forks", 77 | "keys_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/keys{/key_id}", 78 | "collaborators_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/collaborators{/collaborator}", 79 | "teams_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/teams", 80 | "hooks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/hooks", 81 | "issue_events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/events{/number}", 82 | "events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/events", 83 | "assignees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/assignees{/user}", 84 | "branches_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/branches{/branch}", 85 | "tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/tags", 86 | "blobs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/blobs{/sha}", 87 | "git_tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/tags{/sha}", 88 | "git_refs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/refs{/sha}", 89 | "trees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/trees{/sha}", 90 | "statuses_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/statuses/{sha}", 91 | "languages_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/languages", 92 | "stargazers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/stargazers", 93 | "contributors_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contributors", 94 | "subscribers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscribers", 95 | "subscription_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscription", 96 | "commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/commits{/sha}", 97 | "git_commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/commits{/sha}", 98 | "comments_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/comments{/number}", 99 | "issue_comment_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/comments/{number}", 100 | "contents_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contents/{+path}", 101 | "compare_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/compare/{base}...{head}", 102 | "merges_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/merges", 103 | "archive_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/{archive_format}{/ref}", 104 | "downloads_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/downloads", 105 | "issues_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues{/number}", 106 | "pulls_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/pulls{/number}", 107 | "milestones_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/milestones{/number}", 108 | "notifications_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/notifications{?since,all,participating}", 109 | "labels_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/labels{/name}", 110 | "releases_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/releases{/id}", 111 | "created_at": "2014-10-08T15:25:37Z", 112 | "updated_at": "2014-10-08T15:26:13Z", 113 | "pushed_at": "2014-10-08T15:57:13Z", 114 | "git_url": "git://github.com/dontcallmedom/github-notify-ml.git", 115 | "ssh_url": "git@github.com:dontcallmedom/github-notify-ml.git", 116 | "clone_url": "https://github.com/dontcallmedom/github-notify-ml.git", 117 | "svn_url": "https://github.com/dontcallmedom/github-notify-ml", 118 | "homepage": null, 119 | "size": 0, 120 | "stargazers_count": 0, 121 | "watchers_count": 0, 122 | "language": "Python", 123 | "has_issues": true, 124 | "has_downloads": true, 125 | "has_wiki": true, 126 | "has_pages": false, 127 | "forks_count": 0, 128 | "mirror_url": null, 129 | "open_issues_count": 1, 130 | "forks": 0, 131 | "open_issues": 1, 132 | "watchers": 0, 133 | "default_branch": "master" 134 | }, 135 | "sender": { 136 | "login": "dontcallmedom", 137 | "id": 216410, 138 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 139 | "gravatar_id": "", 140 | "url": "https://api.github.com/users/dontcallmedom", 141 | "html_url": "https://github.com/dontcallmedom", 142 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 143 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 144 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 145 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 146 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 147 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 148 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 149 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 150 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 151 | "type": "User", 152 | "site_admin": false 153 | } 154 | } -------------------------------------------------------------------------------- /tests/issue-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: =?utf-8?q?Dominique_Haza=C3=ABl-Massieux_via_GitHub?= 5 | To: dom@localhost 6 | Subject: [github-notify-ml] Move default values to config file (#1) 7 | Message-ID: 8 | 9 | dontcallmedom has just created a new issue for https://github.com/dontcallmedom/github-notify-ml: 10 | 11 | 12 | == Move default values to config file == 13 | (which formats to use? .ini, .json, .yaml?) 14 | 15 | 16 | Please view or discuss this issue at https://github.com/dontcallmedom/github-notify-ml/issues/1 using your GitHub account 17 | -------------------------------------------------------------------------------- /tests/mls.json: -------------------------------------------------------------------------------- 1 | { 2 | "dom@localhost": { 3 | "http://www.w3.org/TR/odor": { 4 | "events": ["tr.published"] 5 | }, 6 | "dontcallmedom/github-notify-ml": { 7 | "events": ["issues.opened", "issues.closed", "issue_comment.created", "pull_request.opened", "foobar"], 8 | "branches": { 9 | "master": ["push"] 10 | } 11 | }, 12 | "w3c/web-platform-tests": { 13 | "events": ["pull_request.opened", "pull_request.labeled"], 14 | "eventFilter": {"label":["wg-das","wg-webrtc"]} 15 | }, 16 | "w3c/presentation-api": { 17 | "events": ["pull_request.opened"] 18 | }, 19 | "w3c/mediacapture-main": { 20 | "events": ["issue_comment.created"] 21 | }, 22 | "regexp:Codertocat/.*": { 23 | "events": ["repository.created", "repository.deleted"] 24 | }, 25 | "regexp:w3c/.*": { 26 | "events": ["repository.transferred"] 27 | }, 28 | "w3c/webrtc-pc": { 29 | "events": ["pull_request.closed"] 30 | }, 31 | "digest:wednesday": [ 32 | { 33 | "repoList": "https://w3c.github.io/validate-repos/rec-track-repos.json", 34 | "repos": ["w3c/webrtc-pc"], 35 | "eventFilter": {"label": ["editorial"]}, 36 | "topic": "Editorial issues across all repos" 37 | }, 38 | { 39 | "repos": ["w3c/webrtc-pc", "foo/bar"] 40 | }, 41 | { 42 | "repos": ["w3c/webrtc-pc"], 43 | "eventFilter": {"label": ["PR exists"], "notlabel": ["List discussion needed"]}, 44 | "topic": "Issues with proposed edits" 45 | }, 46 | { 47 | "topic": "Issues with per-repo label rules", 48 | "sources": [ 49 | { 50 | "repos": ["w3c/webcrypto"], 51 | "eventFilter": {"label": ["editorial"]} 52 | }, 53 | { 54 | "repos": ["w3c/webrtc-pc"], 55 | "eventFilter": {"notlabel": ["List discussion needed"]} 56 | } 57 | ] 58 | } 59 | ], 60 | "summary:quarterly": [ 61 | { 62 | "repos": ["w3c/webcrypto"] 63 | } 64 | ] 65 | }, 66 | "log@localhost": { 67 | "regexp:.*": { 68 | "events": ["pull_request.opened", "issues.opened"], 69 | "eventFilter": {"label":"enhancement"} 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /tests/pull-labeled.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "labeled", 3 | "number": 1824, 4 | "pull_request": { 5 | "url": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824", 6 | "id": 35304013, 7 | "html_url": "https://github.com/w3c/web-platform-tests/pull/1824", 8 | "diff_url": "https://github.com/w3c/web-platform-tests/pull/1824.diff", 9 | "patch_url": "https://github.com/w3c/web-platform-tests/pull/1824.patch", 10 | "issue_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/1824", 11 | "number": 1824, 12 | "state": "open", 13 | "locked": false, 14 | "title": "Adding a basic no-media call that uses promises.", 15 | "user": { 16 | "login": "alvestrand", 17 | "id": 480893, 18 | "avatar_url": "https://avatars.githubusercontent.com/u/480893?v=3", 19 | "gravatar_id": "", 20 | "url": "https://api.github.com/users/alvestrand", 21 | "html_url": "https://github.com/alvestrand", 22 | "followers_url": "https://api.github.com/users/alvestrand/followers", 23 | "following_url": "https://api.github.com/users/alvestrand/following{/other_user}", 24 | "gists_url": "https://api.github.com/users/alvestrand/gists{/gist_id}", 25 | "starred_url": "https://api.github.com/users/alvestrand/starred{/owner}{/repo}", 26 | "subscriptions_url": "https://api.github.com/users/alvestrand/subscriptions", 27 | "organizations_url": "https://api.github.com/users/alvestrand/orgs", 28 | "repos_url": "https://api.github.com/users/alvestrand/repos", 29 | "events_url": "https://api.github.com/users/alvestrand/events{/privacy}", 30 | "received_events_url": "https://api.github.com/users/alvestrand/received_events", 31 | "type": "User", 32 | "site_admin": false 33 | }, 34 | "body": "This tests the basic promise machinery in PeerConnection.\r\n\r\nTested and works in Firefox; asking @jan-ivar to take a look because he's probably most passionate about how Promises usage should be styled.\r\n", 35 | "created_at": "2015-05-13T08:27:12Z", 36 | "updated_at": "2015-05-13T08:27:13Z", 37 | "closed_at": null, 38 | "merged_at": null, 39 | "merge_commit_sha": "0d6658b0213785954ffd13e1c737145c8d55ac11", 40 | "assignee": null, 41 | "milestone": null, 42 | "commits_url": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824/commits", 43 | "review_comments_url": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824/comments", 44 | "review_comment_url": "https://api.github.com/repos/w3c/web-platform-tests/pulls/comments{/number}", 45 | "comments_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/1824/comments", 46 | "statuses_url": "https://api.github.com/repos/w3c/web-platform-tests/statuses/168935a4e48e81127e7be29b62ad5a26d1108831", 47 | "head": { 48 | "label": "alvestrand:call-using-promises", 49 | "ref": "call-using-promises", 50 | "sha": "168935a4e48e81127e7be29b62ad5a26d1108831", 51 | "user": { 52 | "login": "alvestrand", 53 | "id": 480893, 54 | "avatar_url": "https://avatars.githubusercontent.com/u/480893?v=3", 55 | "gravatar_id": "", 56 | "url": "https://api.github.com/users/alvestrand", 57 | "html_url": "https://github.com/alvestrand", 58 | "followers_url": "https://api.github.com/users/alvestrand/followers", 59 | "following_url": "https://api.github.com/users/alvestrand/following{/other_user}", 60 | "gists_url": "https://api.github.com/users/alvestrand/gists{/gist_id}", 61 | "starred_url": "https://api.github.com/users/alvestrand/starred{/owner}{/repo}", 62 | "subscriptions_url": "https://api.github.com/users/alvestrand/subscriptions", 63 | "organizations_url": "https://api.github.com/users/alvestrand/orgs", 64 | "repos_url": "https://api.github.com/users/alvestrand/repos", 65 | "events_url": "https://api.github.com/users/alvestrand/events{/privacy}", 66 | "received_events_url": "https://api.github.com/users/alvestrand/received_events", 67 | "type": "User", 68 | "site_admin": false 69 | }, 70 | "repo": { 71 | "id": 34723226, 72 | "name": "web-platform-tests", 73 | "full_name": "alvestrand/web-platform-tests", 74 | "owner": { 75 | "login": "alvestrand", 76 | "id": 480893, 77 | "avatar_url": "https://avatars.githubusercontent.com/u/480893?v=3", 78 | "gravatar_id": "", 79 | "url": "https://api.github.com/users/alvestrand", 80 | "html_url": "https://github.com/alvestrand", 81 | "followers_url": "https://api.github.com/users/alvestrand/followers", 82 | "following_url": "https://api.github.com/users/alvestrand/following{/other_user}", 83 | "gists_url": "https://api.github.com/users/alvestrand/gists{/gist_id}", 84 | "starred_url": "https://api.github.com/users/alvestrand/starred{/owner}{/repo}", 85 | "subscriptions_url": "https://api.github.com/users/alvestrand/subscriptions", 86 | "organizations_url": "https://api.github.com/users/alvestrand/orgs", 87 | "repos_url": "https://api.github.com/users/alvestrand/repos", 88 | "events_url": "https://api.github.com/users/alvestrand/events{/privacy}", 89 | "received_events_url": "https://api.github.com/users/alvestrand/received_events", 90 | "type": "User", 91 | "site_admin": false 92 | }, 93 | "private": false, 94 | "html_url": "https://github.com/alvestrand/web-platform-tests", 95 | "description": "Test Suites for Web Platform specifications", 96 | "fork": true, 97 | "url": "https://api.github.com/repos/alvestrand/web-platform-tests", 98 | "forks_url": "https://api.github.com/repos/alvestrand/web-platform-tests/forks", 99 | "keys_url": "https://api.github.com/repos/alvestrand/web-platform-tests/keys{/key_id}", 100 | "collaborators_url": "https://api.github.com/repos/alvestrand/web-platform-tests/collaborators{/collaborator}", 101 | "teams_url": "https://api.github.com/repos/alvestrand/web-platform-tests/teams", 102 | "hooks_url": "https://api.github.com/repos/alvestrand/web-platform-tests/hooks", 103 | "issue_events_url": "https://api.github.com/repos/alvestrand/web-platform-tests/issues/events{/number}", 104 | "events_url": "https://api.github.com/repos/alvestrand/web-platform-tests/events", 105 | "assignees_url": "https://api.github.com/repos/alvestrand/web-platform-tests/assignees{/user}", 106 | "branches_url": "https://api.github.com/repos/alvestrand/web-platform-tests/branches{/branch}", 107 | "tags_url": "https://api.github.com/repos/alvestrand/web-platform-tests/tags", 108 | "blobs_url": "https://api.github.com/repos/alvestrand/web-platform-tests/git/blobs{/sha}", 109 | "git_tags_url": "https://api.github.com/repos/alvestrand/web-platform-tests/git/tags{/sha}", 110 | "git_refs_url": "https://api.github.com/repos/alvestrand/web-platform-tests/git/refs{/sha}", 111 | "trees_url": "https://api.github.com/repos/alvestrand/web-platform-tests/git/trees{/sha}", 112 | "statuses_url": "https://api.github.com/repos/alvestrand/web-platform-tests/statuses/{sha}", 113 | "languages_url": "https://api.github.com/repos/alvestrand/web-platform-tests/languages", 114 | "stargazers_url": "https://api.github.com/repos/alvestrand/web-platform-tests/stargazers", 115 | "contributors_url": "https://api.github.com/repos/alvestrand/web-platform-tests/contributors", 116 | "subscribers_url": "https://api.github.com/repos/alvestrand/web-platform-tests/subscribers", 117 | "subscription_url": "https://api.github.com/repos/alvestrand/web-platform-tests/subscription", 118 | "commits_url": "https://api.github.com/repos/alvestrand/web-platform-tests/commits{/sha}", 119 | "git_commits_url": "https://api.github.com/repos/alvestrand/web-platform-tests/git/commits{/sha}", 120 | "comments_url": "https://api.github.com/repos/alvestrand/web-platform-tests/comments{/number}", 121 | "issue_comment_url": "https://api.github.com/repos/alvestrand/web-platform-tests/issues/comments{/number}", 122 | "contents_url": "https://api.github.com/repos/alvestrand/web-platform-tests/contents/{+path}", 123 | "compare_url": "https://api.github.com/repos/alvestrand/web-platform-tests/compare/{base}...{head}", 124 | "merges_url": "https://api.github.com/repos/alvestrand/web-platform-tests/merges", 125 | "archive_url": "https://api.github.com/repos/alvestrand/web-platform-tests/{archive_format}{/ref}", 126 | "downloads_url": "https://api.github.com/repos/alvestrand/web-platform-tests/downloads", 127 | "issues_url": "https://api.github.com/repos/alvestrand/web-platform-tests/issues{/number}", 128 | "pulls_url": "https://api.github.com/repos/alvestrand/web-platform-tests/pulls{/number}", 129 | "milestones_url": "https://api.github.com/repos/alvestrand/web-platform-tests/milestones{/number}", 130 | "notifications_url": "https://api.github.com/repos/alvestrand/web-platform-tests/notifications{?since,all,participating}", 131 | "labels_url": "https://api.github.com/repos/alvestrand/web-platform-tests/labels{/name}", 132 | "releases_url": "https://api.github.com/repos/alvestrand/web-platform-tests/releases{/id}", 133 | "created_at": "2015-04-28T10:06:31Z", 134 | "updated_at": "2015-04-28T10:06:46Z", 135 | "pushed_at": "2015-05-13T08:24:26Z", 136 | "git_url": "git://github.com/alvestrand/web-platform-tests.git", 137 | "ssh_url": "git@github.com:alvestrand/web-platform-tests.git", 138 | "clone_url": "https://github.com/alvestrand/web-platform-tests.git", 139 | "svn_url": "https://github.com/alvestrand/web-platform-tests", 140 | "homepage": "http://irc.w3.org/?channels=testing", 141 | "size": 57087, 142 | "stargazers_count": 0, 143 | "watchers_count": 0, 144 | "language": "HTML", 145 | "has_issues": false, 146 | "has_downloads": true, 147 | "has_wiki": false, 148 | "has_pages": false, 149 | "forks_count": 0, 150 | "mirror_url": null, 151 | "open_issues_count": 0, 152 | "forks": 0, 153 | "open_issues": 0, 154 | "watchers": 0, 155 | "default_branch": "master" 156 | } 157 | }, 158 | "base": { 159 | "label": "w3c:master", 160 | "ref": "master", 161 | "sha": "3d48457eec659cf11b0c37ebb3db83759e7415e5", 162 | "user": { 163 | "login": "w3c", 164 | "id": 379216, 165 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 166 | "gravatar_id": "", 167 | "url": "https://api.github.com/users/w3c", 168 | "html_url": "https://github.com/w3c", 169 | "followers_url": "https://api.github.com/users/w3c/followers", 170 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 171 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 172 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 173 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 174 | "organizations_url": "https://api.github.com/users/w3c/orgs", 175 | "repos_url": "https://api.github.com/users/w3c/repos", 176 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 177 | "received_events_url": "https://api.github.com/users/w3c/received_events", 178 | "type": "Organization", 179 | "site_admin": false 180 | }, 181 | "repo": { 182 | "id": 3618133, 183 | "name": "web-platform-tests", 184 | "full_name": "w3c/web-platform-tests", 185 | "owner": { 186 | "login": "w3c", 187 | "id": 379216, 188 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 189 | "gravatar_id": "", 190 | "url": "https://api.github.com/users/w3c", 191 | "html_url": "https://github.com/w3c", 192 | "followers_url": "https://api.github.com/users/w3c/followers", 193 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 194 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 195 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 196 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 197 | "organizations_url": "https://api.github.com/users/w3c/orgs", 198 | "repos_url": "https://api.github.com/users/w3c/repos", 199 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 200 | "received_events_url": "https://api.github.com/users/w3c/received_events", 201 | "type": "Organization", 202 | "site_admin": false 203 | }, 204 | "private": false, 205 | "html_url": "https://github.com/w3c/web-platform-tests", 206 | "description": "Test Suites for Web Platform specifications", 207 | "fork": false, 208 | "url": "https://api.github.com/repos/w3c/web-platform-tests", 209 | "forks_url": "https://api.github.com/repos/w3c/web-platform-tests/forks", 210 | "keys_url": "https://api.github.com/repos/w3c/web-platform-tests/keys{/key_id}", 211 | "collaborators_url": "https://api.github.com/repos/w3c/web-platform-tests/collaborators{/collaborator}", 212 | "teams_url": "https://api.github.com/repos/w3c/web-platform-tests/teams", 213 | "hooks_url": "https://api.github.com/repos/w3c/web-platform-tests/hooks", 214 | "issue_events_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/events{/number}", 215 | "events_url": "https://api.github.com/repos/w3c/web-platform-tests/events", 216 | "assignees_url": "https://api.github.com/repos/w3c/web-platform-tests/assignees{/user}", 217 | "branches_url": "https://api.github.com/repos/w3c/web-platform-tests/branches{/branch}", 218 | "tags_url": "https://api.github.com/repos/w3c/web-platform-tests/tags", 219 | "blobs_url": "https://api.github.com/repos/w3c/web-platform-tests/git/blobs{/sha}", 220 | "git_tags_url": "https://api.github.com/repos/w3c/web-platform-tests/git/tags{/sha}", 221 | "git_refs_url": "https://api.github.com/repos/w3c/web-platform-tests/git/refs{/sha}", 222 | "trees_url": "https://api.github.com/repos/w3c/web-platform-tests/git/trees{/sha}", 223 | "statuses_url": "https://api.github.com/repos/w3c/web-platform-tests/statuses/{sha}", 224 | "languages_url": "https://api.github.com/repos/w3c/web-platform-tests/languages", 225 | "stargazers_url": "https://api.github.com/repos/w3c/web-platform-tests/stargazers", 226 | "contributors_url": "https://api.github.com/repos/w3c/web-platform-tests/contributors", 227 | "subscribers_url": "https://api.github.com/repos/w3c/web-platform-tests/subscribers", 228 | "subscription_url": "https://api.github.com/repos/w3c/web-platform-tests/subscription", 229 | "commits_url": "https://api.github.com/repos/w3c/web-platform-tests/commits{/sha}", 230 | "git_commits_url": "https://api.github.com/repos/w3c/web-platform-tests/git/commits{/sha}", 231 | "comments_url": "https://api.github.com/repos/w3c/web-platform-tests/comments{/number}", 232 | "issue_comment_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/comments{/number}", 233 | "contents_url": "https://api.github.com/repos/w3c/web-platform-tests/contents/{+path}", 234 | "compare_url": "https://api.github.com/repos/w3c/web-platform-tests/compare/{base}...{head}", 235 | "merges_url": "https://api.github.com/repos/w3c/web-platform-tests/merges", 236 | "archive_url": "https://api.github.com/repos/w3c/web-platform-tests/{archive_format}{/ref}", 237 | "downloads_url": "https://api.github.com/repos/w3c/web-platform-tests/downloads", 238 | "issues_url": "https://api.github.com/repos/w3c/web-platform-tests/issues{/number}", 239 | "pulls_url": "https://api.github.com/repos/w3c/web-platform-tests/pulls{/number}", 240 | "milestones_url": "https://api.github.com/repos/w3c/web-platform-tests/milestones{/number}", 241 | "notifications_url": "https://api.github.com/repos/w3c/web-platform-tests/notifications{?since,all,participating}", 242 | "labels_url": "https://api.github.com/repos/w3c/web-platform-tests/labels{/name}", 243 | "releases_url": "https://api.github.com/repos/w3c/web-platform-tests/releases{/id}", 244 | "created_at": "2012-03-04T12:58:11Z", 245 | "updated_at": "2015-05-12T21:01:50Z", 246 | "pushed_at": "2015-05-13T08:27:13Z", 247 | "git_url": "git://github.com/w3c/web-platform-tests.git", 248 | "ssh_url": "git@github.com:w3c/web-platform-tests.git", 249 | "clone_url": "https://github.com/w3c/web-platform-tests.git", 250 | "svn_url": "https://github.com/w3c/web-platform-tests", 251 | "homepage": "http://irc.w3.org/?channels=testing", 252 | "size": 299199, 253 | "stargazers_count": 567, 254 | "watchers_count": 567, 255 | "language": "HTML", 256 | "has_issues": true, 257 | "has_downloads": true, 258 | "has_wiki": false, 259 | "has_pages": false, 260 | "forks_count": 679, 261 | "mirror_url": null, 262 | "open_issues_count": 198, 263 | "forks": 679, 264 | "open_issues": 198, 265 | "watchers": 567, 266 | "default_branch": "master" 267 | } 268 | }, 269 | "_links": { 270 | "self": { 271 | "href": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824" 272 | }, 273 | "html": { 274 | "href": "https://github.com/w3c/web-platform-tests/pull/1824" 275 | }, 276 | "issue": { 277 | "href": "https://api.github.com/repos/w3c/web-platform-tests/issues/1824" 278 | }, 279 | "comments": { 280 | "href": "https://api.github.com/repos/w3c/web-platform-tests/issues/1824/comments" 281 | }, 282 | "review_comments": { 283 | "href": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824/comments" 284 | }, 285 | "review_comment": { 286 | "href": "https://api.github.com/repos/w3c/web-platform-tests/pulls/comments{/number}" 287 | }, 288 | "commits": { 289 | "href": "https://api.github.com/repos/w3c/web-platform-tests/pulls/1824/commits" 290 | }, 291 | "statuses": { 292 | "href": "https://api.github.com/repos/w3c/web-platform-tests/statuses/168935a4e48e81127e7be29b62ad5a26d1108831" 293 | } 294 | }, 295 | "merged": false, 296 | "mergeable": true, 297 | "mergeable_state": "clean", 298 | "merged_by": null, 299 | "comments": 0, 300 | "review_comments": 0, 301 | "commits": 1, 302 | "additions": 148, 303 | "deletions": 0, 304 | "changed_files": 1 305 | }, 306 | "label": { 307 | "url": "https://api.github.com/repos/w3c/web-platform-tests/labels/wg-webrtc", 308 | "name": "wg-webrtc", 309 | "color": "0052cc" 310 | }, 311 | "repository": { 312 | "id": 3618133, 313 | "name": "web-platform-tests", 314 | "full_name": "w3c/web-platform-tests", 315 | "owner": { 316 | "login": "w3c", 317 | "id": 379216, 318 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 319 | "gravatar_id": "", 320 | "url": "https://api.github.com/users/w3c", 321 | "html_url": "https://github.com/w3c", 322 | "followers_url": "https://api.github.com/users/w3c/followers", 323 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 324 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 325 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 326 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 327 | "organizations_url": "https://api.github.com/users/w3c/orgs", 328 | "repos_url": "https://api.github.com/users/w3c/repos", 329 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 330 | "received_events_url": "https://api.github.com/users/w3c/received_events", 331 | "type": "Organization", 332 | "site_admin": false 333 | }, 334 | "private": false, 335 | "html_url": "https://github.com/w3c/web-platform-tests", 336 | "description": "Test Suites for Web Platform specifications", 337 | "fork": false, 338 | "url": "https://api.github.com/repos/w3c/web-platform-tests", 339 | "forks_url": "https://api.github.com/repos/w3c/web-platform-tests/forks", 340 | "keys_url": "https://api.github.com/repos/w3c/web-platform-tests/keys{/key_id}", 341 | "collaborators_url": "https://api.github.com/repos/w3c/web-platform-tests/collaborators{/collaborator}", 342 | "teams_url": "https://api.github.com/repos/w3c/web-platform-tests/teams", 343 | "hooks_url": "https://api.github.com/repos/w3c/web-platform-tests/hooks", 344 | "issue_events_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/events{/number}", 345 | "events_url": "https://api.github.com/repos/w3c/web-platform-tests/events", 346 | "assignees_url": "https://api.github.com/repos/w3c/web-platform-tests/assignees{/user}", 347 | "branches_url": "https://api.github.com/repos/w3c/web-platform-tests/branches{/branch}", 348 | "tags_url": "https://api.github.com/repos/w3c/web-platform-tests/tags", 349 | "blobs_url": "https://api.github.com/repos/w3c/web-platform-tests/git/blobs{/sha}", 350 | "git_tags_url": "https://api.github.com/repos/w3c/web-platform-tests/git/tags{/sha}", 351 | "git_refs_url": "https://api.github.com/repos/w3c/web-platform-tests/git/refs{/sha}", 352 | "trees_url": "https://api.github.com/repos/w3c/web-platform-tests/git/trees{/sha}", 353 | "statuses_url": "https://api.github.com/repos/w3c/web-platform-tests/statuses/{sha}", 354 | "languages_url": "https://api.github.com/repos/w3c/web-platform-tests/languages", 355 | "stargazers_url": "https://api.github.com/repos/w3c/web-platform-tests/stargazers", 356 | "contributors_url": "https://api.github.com/repos/w3c/web-platform-tests/contributors", 357 | "subscribers_url": "https://api.github.com/repos/w3c/web-platform-tests/subscribers", 358 | "subscription_url": "https://api.github.com/repos/w3c/web-platform-tests/subscription", 359 | "commits_url": "https://api.github.com/repos/w3c/web-platform-tests/commits{/sha}", 360 | "git_commits_url": "https://api.github.com/repos/w3c/web-platform-tests/git/commits{/sha}", 361 | "comments_url": "https://api.github.com/repos/w3c/web-platform-tests/comments{/number}", 362 | "issue_comment_url": "https://api.github.com/repos/w3c/web-platform-tests/issues/comments{/number}", 363 | "contents_url": "https://api.github.com/repos/w3c/web-platform-tests/contents/{+path}", 364 | "compare_url": "https://api.github.com/repos/w3c/web-platform-tests/compare/{base}...{head}", 365 | "merges_url": "https://api.github.com/repos/w3c/web-platform-tests/merges", 366 | "archive_url": "https://api.github.com/repos/w3c/web-platform-tests/{archive_format}{/ref}", 367 | "downloads_url": "https://api.github.com/repos/w3c/web-platform-tests/downloads", 368 | "issues_url": "https://api.github.com/repos/w3c/web-platform-tests/issues{/number}", 369 | "pulls_url": "https://api.github.com/repos/w3c/web-platform-tests/pulls{/number}", 370 | "milestones_url": "https://api.github.com/repos/w3c/web-platform-tests/milestones{/number}", 371 | "notifications_url": "https://api.github.com/repos/w3c/web-platform-tests/notifications{?since,all,participating}", 372 | "labels_url": "https://api.github.com/repos/w3c/web-platform-tests/labels{/name}", 373 | "releases_url": "https://api.github.com/repos/w3c/web-platform-tests/releases{/id}", 374 | "created_at": "2012-03-04T12:58:11Z", 375 | "updated_at": "2015-05-12T21:01:50Z", 376 | "pushed_at": "2015-05-13T08:27:13Z", 377 | "git_url": "git://github.com/w3c/web-platform-tests.git", 378 | "ssh_url": "git@github.com:w3c/web-platform-tests.git", 379 | "clone_url": "https://github.com/w3c/web-platform-tests.git", 380 | "svn_url": "https://github.com/w3c/web-platform-tests", 381 | "homepage": "http://irc.w3.org/?channels=testing", 382 | "size": 299199, 383 | "stargazers_count": 567, 384 | "watchers_count": 567, 385 | "language": "HTML", 386 | "has_issues": true, 387 | "has_downloads": true, 388 | "has_wiki": false, 389 | "has_pages": false, 390 | "forks_count": 679, 391 | "mirror_url": null, 392 | "open_issues_count": 198, 393 | "forks": 679, 394 | "open_issues": 198, 395 | "watchers": 567, 396 | "default_branch": "master" 397 | }, 398 | "organization": { 399 | "login": "w3c", 400 | "id": 379216, 401 | "url": "https://api.github.com/orgs/w3c", 402 | "repos_url": "https://api.github.com/orgs/w3c/repos", 403 | "events_url": "https://api.github.com/orgs/w3c/events", 404 | "members_url": "https://api.github.com/orgs/w3c/members{/member}", 405 | "public_members_url": "https://api.github.com/orgs/w3c/public_members{/member}", 406 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 407 | "description": "The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web." 408 | }, 409 | "sender": { 410 | "login": "tobie", 411 | "id": 3392, 412 | "avatar_url": "https://avatars.githubusercontent.com/u/3392?v=3", 413 | "gravatar_id": "", 414 | "url": "https://api.github.com/users/tobie", 415 | "html_url": "https://github.com/tobie", 416 | "followers_url": "https://api.github.com/users/tobie/followers", 417 | "following_url": "https://api.github.com/users/tobie/following{/other_user}", 418 | "gists_url": "https://api.github.com/users/tobie/gists{/gist_id}", 419 | "starred_url": "https://api.github.com/users/tobie/starred{/owner}{/repo}", 420 | "subscriptions_url": "https://api.github.com/users/tobie/subscriptions", 421 | "organizations_url": "https://api.github.com/users/tobie/orgs", 422 | "repos_url": "https://api.github.com/users/tobie/repos", 423 | "events_url": "https://api.github.com/users/tobie/events{/privacy}", 424 | "received_events_url": "https://api.github.com/users/tobie/received_events", 425 | "type": "User", 426 | "site_admin": false 427 | } 428 | } 429 | -------------------------------------------------------------------------------- /tests/pull-labeled.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Tobie Langel via GitHub 5 | To: dom@localhost 6 | Subject: [web-platform-tests] Pull Request: Adding a basic no-media call that uses 7 | promises. 8 | Message-ID: 9 | 10 | tobie has just labeled a pull request from alvestrand for https://github.com/w3c/web-platform-tests as "wg-webrtc": 11 | 12 | 13 | == Adding a basic no-media call that uses promises. == 14 | This tests the basic promise machinery in PeerConnection. 15 | 16 | 17 | Tested and works in Firefox; asking @jan-ivar to take a look because he's probably most passionate about how Promises usage should be styled. 18 | 19 | 20 | 21 | 22 | See https://github.com/w3c/web-platform-tests/pull/1824 23 | -------------------------------------------------------------------------------- /tests/pull-merged.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "closed", 3 | "number": 433, 4 | "pull_request": { 5 | "url": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433", 6 | "id": 53266014, 7 | "html_url": "https://github.com/w3c/webrtc-pc/pull/433", 8 | "diff_url": "https://github.com/w3c/webrtc-pc/pull/433.diff", 9 | "patch_url": "https://github.com/w3c/webrtc-pc/pull/433.patch", 10 | "issue_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/433", 11 | "number": 433, 12 | "state": "closed", 13 | "locked": false, 14 | "title": "Use unsigned long ssrc in stats", 15 | "user": { 16 | "login": "dontcallmedom", 17 | "id": 216410, 18 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=3", 19 | "gravatar_id": "", 20 | "url": "https://api.github.com/users/dontcallmedom", 21 | "html_url": "https://github.com/dontcallmedom", 22 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 23 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 24 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 25 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 26 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 27 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 28 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 29 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 30 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 31 | "type": "User", 32 | "site_admin": false 33 | }, 34 | "body": "close #390", 35 | "created_at": "2015-12-10T14:37:34Z", 36 | "updated_at": "2015-12-10T15:58:35Z", 37 | "closed_at": "2015-12-10T15:58:35Z", 38 | "merged_at": "2015-12-10T15:58:35Z", 39 | "merge_commit_sha": "d50855e6c941b6b27bbebc7cc68e97ca527d5c04", 40 | "assignee": null, 41 | "milestone": null, 42 | "commits_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433/commits", 43 | "review_comments_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433/comments", 44 | "review_comment_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls/comments{/number}", 45 | "comments_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/433/comments", 46 | "statuses_url": "https://api.github.com/repos/w3c/webrtc-pc/statuses/d23986950458b0f14729d8efcb2bca0aa26fe0a1", 47 | "head": { 48 | "label": "dontcallmedom:ssrc-type", 49 | "ref": "ssrc-type", 50 | "sha": "d23986950458b0f14729d8efcb2bca0aa26fe0a1", 51 | "user": { 52 | "login": "dontcallmedom", 53 | "id": 216410, 54 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=3", 55 | "gravatar_id": "", 56 | "url": "https://api.github.com/users/dontcallmedom", 57 | "html_url": "https://github.com/dontcallmedom", 58 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 59 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 60 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 61 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 62 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 63 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 64 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 65 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 66 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 67 | "type": "User", 68 | "site_admin": false 69 | }, 70 | "repo": { 71 | "id": 24838057, 72 | "name": "webrtc-pc", 73 | "full_name": "dontcallmedom/webrtc-pc", 74 | "owner": { 75 | "login": "dontcallmedom", 76 | "id": 216410, 77 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=3", 78 | "gravatar_id": "", 79 | "url": "https://api.github.com/users/dontcallmedom", 80 | "html_url": "https://github.com/dontcallmedom", 81 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 82 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 83 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 84 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 85 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 86 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 87 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 88 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 89 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 90 | "type": "User", 91 | "site_admin": false 92 | }, 93 | "private": false, 94 | "html_url": "https://github.com/dontcallmedom/webrtc-pc", 95 | "description": "WebRTC 1.0 API", 96 | "fork": true, 97 | "url": "https://api.github.com/repos/dontcallmedom/webrtc-pc", 98 | "forks_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/forks", 99 | "keys_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/keys{/key_id}", 100 | "collaborators_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/collaborators{/collaborator}", 101 | "teams_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/teams", 102 | "hooks_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/hooks", 103 | "issue_events_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/issues/events{/number}", 104 | "events_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/events", 105 | "assignees_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/assignees{/user}", 106 | "branches_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/branches{/branch}", 107 | "tags_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/tags", 108 | "blobs_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/git/blobs{/sha}", 109 | "git_tags_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/git/tags{/sha}", 110 | "git_refs_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/git/refs{/sha}", 111 | "trees_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/git/trees{/sha}", 112 | "statuses_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/statuses/{sha}", 113 | "languages_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/languages", 114 | "stargazers_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/stargazers", 115 | "contributors_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/contributors", 116 | "subscribers_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/subscribers", 117 | "subscription_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/subscription", 118 | "commits_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/commits{/sha}", 119 | "git_commits_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/git/commits{/sha}", 120 | "comments_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/comments{/number}", 121 | "issue_comment_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/issues/comments{/number}", 122 | "contents_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/contents/{+path}", 123 | "compare_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/compare/{base}...{head}", 124 | "merges_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/merges", 125 | "archive_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/{archive_format}{/ref}", 126 | "downloads_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/downloads", 127 | "issues_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/issues{/number}", 128 | "pulls_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/pulls{/number}", 129 | "milestones_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/milestones{/number}", 130 | "notifications_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/notifications{?since,all,participating}", 131 | "labels_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/labels{/name}", 132 | "releases_url": "https://api.github.com/repos/dontcallmedom/webrtc-pc/releases{/id}", 133 | "created_at": "2014-10-06T08:02:29Z", 134 | "updated_at": "2014-09-19T06:56:12Z", 135 | "pushed_at": "2015-12-10T14:36:17Z", 136 | "git_url": "git://github.com/dontcallmedom/webrtc-pc.git", 137 | "ssh_url": "git@github.com:dontcallmedom/webrtc-pc.git", 138 | "clone_url": "https://github.com/dontcallmedom/webrtc-pc.git", 139 | "svn_url": "https://github.com/dontcallmedom/webrtc-pc", 140 | "homepage": null, 141 | "size": 15295, 142 | "stargazers_count": 0, 143 | "watchers_count": 0, 144 | "language": null, 145 | "has_issues": false, 146 | "has_downloads": true, 147 | "has_wiki": true, 148 | "has_pages": true, 149 | "forks_count": 0, 150 | "mirror_url": null, 151 | "open_issues_count": 0, 152 | "forks": 0, 153 | "open_issues": 0, 154 | "watchers": 0, 155 | "default_branch": "master" 156 | } 157 | }, 158 | "base": { 159 | "label": "w3c:master", 160 | "ref": "master", 161 | "sha": "b78d5c3ef4a6c042991e2bcd8fdefcf2c8dc39dc", 162 | "user": { 163 | "login": "w3c", 164 | "id": 379216, 165 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 166 | "gravatar_id": "", 167 | "url": "https://api.github.com/users/w3c", 168 | "html_url": "https://github.com/w3c", 169 | "followers_url": "https://api.github.com/users/w3c/followers", 170 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 171 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 172 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 173 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 174 | "organizations_url": "https://api.github.com/users/w3c/orgs", 175 | "repos_url": "https://api.github.com/users/w3c/repos", 176 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 177 | "received_events_url": "https://api.github.com/users/w3c/received_events", 178 | "type": "Organization", 179 | "site_admin": false 180 | }, 181 | "repo": { 182 | "id": 23384500, 183 | "name": "webrtc-pc", 184 | "full_name": "w3c/webrtc-pc", 185 | "owner": { 186 | "login": "w3c", 187 | "id": 379216, 188 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 189 | "gravatar_id": "", 190 | "url": "https://api.github.com/users/w3c", 191 | "html_url": "https://github.com/w3c", 192 | "followers_url": "https://api.github.com/users/w3c/followers", 193 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 194 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 195 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 196 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 197 | "organizations_url": "https://api.github.com/users/w3c/orgs", 198 | "repos_url": "https://api.github.com/users/w3c/repos", 199 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 200 | "received_events_url": "https://api.github.com/users/w3c/received_events", 201 | "type": "Organization", 202 | "site_admin": false 203 | }, 204 | "private": false, 205 | "html_url": "https://github.com/w3c/webrtc-pc", 206 | "description": "WebRTC 1.0 API", 207 | "fork": false, 208 | "url": "https://api.github.com/repos/w3c/webrtc-pc", 209 | "forks_url": "https://api.github.com/repos/w3c/webrtc-pc/forks", 210 | "keys_url": "https://api.github.com/repos/w3c/webrtc-pc/keys{/key_id}", 211 | "collaborators_url": "https://api.github.com/repos/w3c/webrtc-pc/collaborators{/collaborator}", 212 | "teams_url": "https://api.github.com/repos/w3c/webrtc-pc/teams", 213 | "hooks_url": "https://api.github.com/repos/w3c/webrtc-pc/hooks", 214 | "issue_events_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/events{/number}", 215 | "events_url": "https://api.github.com/repos/w3c/webrtc-pc/events", 216 | "assignees_url": "https://api.github.com/repos/w3c/webrtc-pc/assignees{/user}", 217 | "branches_url": "https://api.github.com/repos/w3c/webrtc-pc/branches{/branch}", 218 | "tags_url": "https://api.github.com/repos/w3c/webrtc-pc/tags", 219 | "blobs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/blobs{/sha}", 220 | "git_tags_url": "https://api.github.com/repos/w3c/webrtc-pc/git/tags{/sha}", 221 | "git_refs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/refs{/sha}", 222 | "trees_url": "https://api.github.com/repos/w3c/webrtc-pc/git/trees{/sha}", 223 | "statuses_url": "https://api.github.com/repos/w3c/webrtc-pc/statuses/{sha}", 224 | "languages_url": "https://api.github.com/repos/w3c/webrtc-pc/languages", 225 | "stargazers_url": "https://api.github.com/repos/w3c/webrtc-pc/stargazers", 226 | "contributors_url": "https://api.github.com/repos/w3c/webrtc-pc/contributors", 227 | "subscribers_url": "https://api.github.com/repos/w3c/webrtc-pc/subscribers", 228 | "subscription_url": "https://api.github.com/repos/w3c/webrtc-pc/subscription", 229 | "commits_url": "https://api.github.com/repos/w3c/webrtc-pc/commits{/sha}", 230 | "git_commits_url": "https://api.github.com/repos/w3c/webrtc-pc/git/commits{/sha}", 231 | "comments_url": "https://api.github.com/repos/w3c/webrtc-pc/comments{/number}", 232 | "issue_comment_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/comments{/number}", 233 | "contents_url": "https://api.github.com/repos/w3c/webrtc-pc/contents/{+path}", 234 | "compare_url": "https://api.github.com/repos/w3c/webrtc-pc/compare/{base}...{head}", 235 | "merges_url": "https://api.github.com/repos/w3c/webrtc-pc/merges", 236 | "archive_url": "https://api.github.com/repos/w3c/webrtc-pc/{archive_format}{/ref}", 237 | "downloads_url": "https://api.github.com/repos/w3c/webrtc-pc/downloads", 238 | "issues_url": "https://api.github.com/repos/w3c/webrtc-pc/issues{/number}", 239 | "pulls_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls{/number}", 240 | "milestones_url": "https://api.github.com/repos/w3c/webrtc-pc/milestones{/number}", 241 | "notifications_url": "https://api.github.com/repos/w3c/webrtc-pc/notifications{?since,all,participating}", 242 | "labels_url": "https://api.github.com/repos/w3c/webrtc-pc/labels{/name}", 243 | "releases_url": "https://api.github.com/repos/w3c/webrtc-pc/releases{/id}", 244 | "created_at": "2014-08-27T09:39:00Z", 245 | "updated_at": "2015-12-03T14:33:58Z", 246 | "pushed_at": "2015-12-10T15:58:35Z", 247 | "git_url": "git://github.com/w3c/webrtc-pc.git", 248 | "ssh_url": "git@github.com:w3c/webrtc-pc.git", 249 | "clone_url": "https://github.com/w3c/webrtc-pc.git", 250 | "svn_url": "https://github.com/w3c/webrtc-pc", 251 | "homepage": null, 252 | "size": 17389, 253 | "stargazers_count": 53, 254 | "watchers_count": 53, 255 | "language": "HTML", 256 | "has_issues": true, 257 | "has_downloads": true, 258 | "has_wiki": true, 259 | "has_pages": true, 260 | "forks_count": 31, 261 | "mirror_url": null, 262 | "open_issues_count": 60, 263 | "forks": 31, 264 | "open_issues": 60, 265 | "watchers": 53, 266 | "default_branch": "master" 267 | } 268 | }, 269 | "_links": { 270 | "self": { 271 | "href": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433" 272 | }, 273 | "html": { 274 | "href": "https://github.com/w3c/webrtc-pc/pull/433" 275 | }, 276 | "issue": { 277 | "href": "https://api.github.com/repos/w3c/webrtc-pc/issues/433" 278 | }, 279 | "comments": { 280 | "href": "https://api.github.com/repos/w3c/webrtc-pc/issues/433/comments" 281 | }, 282 | "review_comments": { 283 | "href": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433/comments" 284 | }, 285 | "review_comment": { 286 | "href": "https://api.github.com/repos/w3c/webrtc-pc/pulls/comments{/number}" 287 | }, 288 | "commits": { 289 | "href": "https://api.github.com/repos/w3c/webrtc-pc/pulls/433/commits" 290 | }, 291 | "statuses": { 292 | "href": "https://api.github.com/repos/w3c/webrtc-pc/statuses/d23986950458b0f14729d8efcb2bca0aa26fe0a1" 293 | } 294 | }, 295 | "merged": true, 296 | "mergeable": null, 297 | "mergeable_state": "unknown", 298 | "merged_by": { 299 | "login": "alvestrand", 300 | "id": 480893, 301 | "avatar_url": "https://avatars.githubusercontent.com/u/480893?v=3", 302 | "gravatar_id": "", 303 | "url": "https://api.github.com/users/alvestrand", 304 | "html_url": "https://github.com/alvestrand", 305 | "followers_url": "https://api.github.com/users/alvestrand/followers", 306 | "following_url": "https://api.github.com/users/alvestrand/following{/other_user}", 307 | "gists_url": "https://api.github.com/users/alvestrand/gists{/gist_id}", 308 | "starred_url": "https://api.github.com/users/alvestrand/starred{/owner}{/repo}", 309 | "subscriptions_url": "https://api.github.com/users/alvestrand/subscriptions", 310 | "organizations_url": "https://api.github.com/users/alvestrand/orgs", 311 | "repos_url": "https://api.github.com/users/alvestrand/repos", 312 | "events_url": "https://api.github.com/users/alvestrand/events{/privacy}", 313 | "received_events_url": "https://api.github.com/users/alvestrand/received_events", 314 | "type": "User", 315 | "site_admin": false 316 | }, 317 | "comments": 0, 318 | "review_comments": 0, 319 | "commits": 1, 320 | "additions": 1, 321 | "deletions": 1, 322 | "changed_files": 1 323 | }, 324 | "repository": { 325 | "id": 23384500, 326 | "name": "webrtc-pc", 327 | "full_name": "w3c/webrtc-pc", 328 | "owner": { 329 | "login": "w3c", 330 | "id": 379216, 331 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 332 | "gravatar_id": "", 333 | "url": "https://api.github.com/users/w3c", 334 | "html_url": "https://github.com/w3c", 335 | "followers_url": "https://api.github.com/users/w3c/followers", 336 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 337 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 338 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 339 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 340 | "organizations_url": "https://api.github.com/users/w3c/orgs", 341 | "repos_url": "https://api.github.com/users/w3c/repos", 342 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 343 | "received_events_url": "https://api.github.com/users/w3c/received_events", 344 | "type": "Organization", 345 | "site_admin": false 346 | }, 347 | "private": false, 348 | "html_url": "https://github.com/w3c/webrtc-pc", 349 | "description": "WebRTC 1.0 API", 350 | "fork": false, 351 | "url": "https://api.github.com/repos/w3c/webrtc-pc", 352 | "forks_url": "https://api.github.com/repos/w3c/webrtc-pc/forks", 353 | "keys_url": "https://api.github.com/repos/w3c/webrtc-pc/keys{/key_id}", 354 | "collaborators_url": "https://api.github.com/repos/w3c/webrtc-pc/collaborators{/collaborator}", 355 | "teams_url": "https://api.github.com/repos/w3c/webrtc-pc/teams", 356 | "hooks_url": "https://api.github.com/repos/w3c/webrtc-pc/hooks", 357 | "issue_events_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/events{/number}", 358 | "events_url": "https://api.github.com/repos/w3c/webrtc-pc/events", 359 | "assignees_url": "https://api.github.com/repos/w3c/webrtc-pc/assignees{/user}", 360 | "branches_url": "https://api.github.com/repos/w3c/webrtc-pc/branches{/branch}", 361 | "tags_url": "https://api.github.com/repos/w3c/webrtc-pc/tags", 362 | "blobs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/blobs{/sha}", 363 | "git_tags_url": "https://api.github.com/repos/w3c/webrtc-pc/git/tags{/sha}", 364 | "git_refs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/refs{/sha}", 365 | "trees_url": "https://api.github.com/repos/w3c/webrtc-pc/git/trees{/sha}", 366 | "statuses_url": "https://api.github.com/repos/w3c/webrtc-pc/statuses/{sha}", 367 | "languages_url": "https://api.github.com/repos/w3c/webrtc-pc/languages", 368 | "stargazers_url": "https://api.github.com/repos/w3c/webrtc-pc/stargazers", 369 | "contributors_url": "https://api.github.com/repos/w3c/webrtc-pc/contributors", 370 | "subscribers_url": "https://api.github.com/repos/w3c/webrtc-pc/subscribers", 371 | "subscription_url": "https://api.github.com/repos/w3c/webrtc-pc/subscription", 372 | "commits_url": "https://api.github.com/repos/w3c/webrtc-pc/commits{/sha}", 373 | "git_commits_url": "https://api.github.com/repos/w3c/webrtc-pc/git/commits{/sha}", 374 | "comments_url": "https://api.github.com/repos/w3c/webrtc-pc/comments{/number}", 375 | "issue_comment_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/comments{/number}", 376 | "contents_url": "https://api.github.com/repos/w3c/webrtc-pc/contents/{+path}", 377 | "compare_url": "https://api.github.com/repos/w3c/webrtc-pc/compare/{base}...{head}", 378 | "merges_url": "https://api.github.com/repos/w3c/webrtc-pc/merges", 379 | "archive_url": "https://api.github.com/repos/w3c/webrtc-pc/{archive_format}{/ref}", 380 | "downloads_url": "https://api.github.com/repos/w3c/webrtc-pc/downloads", 381 | "issues_url": "https://api.github.com/repos/w3c/webrtc-pc/issues{/number}", 382 | "pulls_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls{/number}", 383 | "milestones_url": "https://api.github.com/repos/w3c/webrtc-pc/milestones{/number}", 384 | "notifications_url": "https://api.github.com/repos/w3c/webrtc-pc/notifications{?since,all,participating}", 385 | "labels_url": "https://api.github.com/repos/w3c/webrtc-pc/labels{/name}", 386 | "releases_url": "https://api.github.com/repos/w3c/webrtc-pc/releases{/id}", 387 | "created_at": "2014-08-27T09:39:00Z", 388 | "updated_at": "2015-12-03T14:33:58Z", 389 | "pushed_at": "2015-12-10T15:58:35Z", 390 | "git_url": "git://github.com/w3c/webrtc-pc.git", 391 | "ssh_url": "git@github.com:w3c/webrtc-pc.git", 392 | "clone_url": "https://github.com/w3c/webrtc-pc.git", 393 | "svn_url": "https://github.com/w3c/webrtc-pc", 394 | "homepage": null, 395 | "size": 17389, 396 | "stargazers_count": 53, 397 | "watchers_count": 53, 398 | "language": "HTML", 399 | "has_issues": true, 400 | "has_downloads": true, 401 | "has_wiki": true, 402 | "has_pages": true, 403 | "forks_count": 31, 404 | "mirror_url": null, 405 | "open_issues_count": 60, 406 | "forks": 31, 407 | "open_issues": 60, 408 | "watchers": 53, 409 | "default_branch": "master" 410 | }, 411 | "organization": { 412 | "login": "w3c", 413 | "id": 379216, 414 | "url": "https://api.github.com/orgs/w3c", 415 | "repos_url": "https://api.github.com/orgs/w3c/repos", 416 | "events_url": "https://api.github.com/orgs/w3c/events", 417 | "members_url": "https://api.github.com/orgs/w3c/members{/member}", 418 | "public_members_url": "https://api.github.com/orgs/w3c/public_members{/member}", 419 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 420 | "description": "The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web." 421 | }, 422 | "sender": { 423 | "login": "alvestrand", 424 | "id": 480893, 425 | "avatar_url": "https://avatars.githubusercontent.com/u/480893?v=3", 426 | "gravatar_id": "", 427 | "url": "https://api.github.com/users/alvestrand", 428 | "html_url": "https://github.com/alvestrand", 429 | "followers_url": "https://api.github.com/users/alvestrand/followers", 430 | "following_url": "https://api.github.com/users/alvestrand/following{/other_user}", 431 | "gists_url": "https://api.github.com/users/alvestrand/gists{/gist_id}", 432 | "starred_url": "https://api.github.com/users/alvestrand/starred{/owner}{/repo}", 433 | "subscriptions_url": "https://api.github.com/users/alvestrand/subscriptions", 434 | "organizations_url": "https://api.github.com/users/alvestrand/orgs", 435 | "repos_url": "https://api.github.com/users/alvestrand/repos", 436 | "events_url": "https://api.github.com/users/alvestrand/events{/privacy}", 437 | "received_events_url": "https://api.github.com/users/alvestrand/received_events", 438 | "type": "User", 439 | "site_admin": false 440 | } 441 | } 442 | -------------------------------------------------------------------------------- /tests/pull-merged.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Harald Alvestrand via GitHub 5 | To: dom@localhost 6 | Subject: [webrtc-pc] Merged Pull Request: Use unsigned long ssrc in stats 7 | Message-ID: 8 | In-Reply-To: 9 | 10 | alvestrand has just merged dontcallmedom's pull request 433 for https://github.com/w3c/webrtc-pc: 11 | 12 | 13 | == Use unsigned long ssrc in stats == 14 | close #390 15 | 16 | 17 | See https://github.com/w3c/webrtc-pc/pull/433 18 | -------------------------------------------------------------------------------- /tests/pull-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "opened", 3 | "number": 54, 4 | "pull_request": { 5 | "url": "https://api.github.com/repos/w3c/presentation-api/pulls/54", 6 | "id": 29160635, 7 | "html_url": "https://github.com/w3c/presentation-api/pull/54", 8 | "diff_url": "https://github.com/w3c/presentation-api/pull/54.diff", 9 | "patch_url": "https://github.com/w3c/presentation-api/pull/54.patch", 10 | "issue_url": "https://api.github.com/repos/w3c/presentation-api/issues/54", 11 | "number": 54, 12 | "state": "open", 13 | "locked": false, 14 | "title": "Use the custom W3C Document License defined in the Charter", 15 | "user": { 16 | "login": "anssiko", 17 | "id": 765510, 18 | "avatar_url": "https://avatars.githubusercontent.com/u/765510?v=3", 19 | "gravatar_id": "", 20 | "url": "https://api.github.com/users/anssiko", 21 | "html_url": "https://github.com/anssiko", 22 | "followers_url": "https://api.github.com/users/anssiko/followers", 23 | "following_url": "https://api.github.com/users/anssiko/following{/other_user}", 24 | "gists_url": "https://api.github.com/users/anssiko/gists{/gist_id}", 25 | "starred_url": "https://api.github.com/users/anssiko/starred{/owner}{/repo}", 26 | "subscriptions_url": "https://api.github.com/users/anssiko/subscriptions", 27 | "organizations_url": "https://api.github.com/users/anssiko/orgs", 28 | "repos_url": "https://api.github.com/users/anssiko/repos", 29 | "events_url": "https://api.github.com/users/anssiko/events{/privacy}", 30 | "received_events_url": "https://api.github.com/users/anssiko/received_events", 31 | "type": "User", 32 | "site_admin": false 33 | }, 34 | "body": "The group's Charter defines a custom Document License [1] the documents produced by this group should use. To that end, I updated the Editor's Draft as well as the FPWD snapshot in staging accordingly.\r\n\r\n@tidoust Pubrules checker naturally does not understand this custom Document License, so this needs to be checked manually.\r\n\r\n[1] http://www.w3.org/2014/secondscreen/charter.html#doclicense", 35 | "created_at": "2015-02-12T08:32:35Z", 36 | "updated_at": "2015-02-12T08:32:35Z", 37 | "closed_at": null, 38 | "merged_at": null, 39 | "merge_commit_sha": "fedbe24e805aa9d82aac56df032b2dc092d72f9d", 40 | "assignee": null, 41 | "milestone": null, 42 | "commits_url": "https://api.github.com/repos/w3c/presentation-api/pulls/54/commits", 43 | "review_comments_url": "https://api.github.com/repos/w3c/presentation-api/pulls/54/comments", 44 | "review_comment_url": "https://api.github.com/repos/w3c/presentation-api/pulls/comments/{number}", 45 | "comments_url": "https://api.github.com/repos/w3c/presentation-api/issues/54/comments", 46 | "statuses_url": "https://api.github.com/repos/w3c/presentation-api/statuses/27306ba8fdc8547562cbd23a1829aca53497cf5c", 47 | "head": { 48 | "label": "anssiko:pubrules", 49 | "ref": "pubrules", 50 | "sha": "27306ba8fdc8547562cbd23a1829aca53497cf5c", 51 | "user": { 52 | "login": "anssiko", 53 | "id": 765510, 54 | "avatar_url": "https://avatars.githubusercontent.com/u/765510?v=3", 55 | "gravatar_id": "", 56 | "url": "https://api.github.com/users/anssiko", 57 | "html_url": "https://github.com/anssiko", 58 | "followers_url": "https://api.github.com/users/anssiko/followers", 59 | "following_url": "https://api.github.com/users/anssiko/following{/other_user}", 60 | "gists_url": "https://api.github.com/users/anssiko/gists{/gist_id}", 61 | "starred_url": "https://api.github.com/users/anssiko/starred{/owner}{/repo}", 62 | "subscriptions_url": "https://api.github.com/users/anssiko/subscriptions", 63 | "organizations_url": "https://api.github.com/users/anssiko/orgs", 64 | "repos_url": "https://api.github.com/users/anssiko/repos", 65 | "events_url": "https://api.github.com/users/anssiko/events{/privacy}", 66 | "received_events_url": "https://api.github.com/users/anssiko/received_events", 67 | "type": "User", 68 | "site_admin": false 69 | }, 70 | "repo": { 71 | "id": 26814239, 72 | "name": "presentation-api", 73 | "full_name": "anssiko/presentation-api", 74 | "owner": { 75 | "login": "anssiko", 76 | "id": 765510, 77 | "avatar_url": "https://avatars.githubusercontent.com/u/765510?v=3", 78 | "gravatar_id": "", 79 | "url": "https://api.github.com/users/anssiko", 80 | "html_url": "https://github.com/anssiko", 81 | "followers_url": "https://api.github.com/users/anssiko/followers", 82 | "following_url": "https://api.github.com/users/anssiko/following{/other_user}", 83 | "gists_url": "https://api.github.com/users/anssiko/gists{/gist_id}", 84 | "starred_url": "https://api.github.com/users/anssiko/starred{/owner}{/repo}", 85 | "subscriptions_url": "https://api.github.com/users/anssiko/subscriptions", 86 | "organizations_url": "https://api.github.com/users/anssiko/orgs", 87 | "repos_url": "https://api.github.com/users/anssiko/repos", 88 | "events_url": "https://api.github.com/users/anssiko/events{/privacy}", 89 | "received_events_url": "https://api.github.com/users/anssiko/received_events", 90 | "type": "User", 91 | "site_admin": false 92 | }, 93 | "private": false, 94 | "html_url": "https://github.com/anssiko/presentation-api", 95 | "description": "Presentation API specification", 96 | "fork": true, 97 | "url": "https://api.github.com/repos/anssiko/presentation-api", 98 | "forks_url": "https://api.github.com/repos/anssiko/presentation-api/forks", 99 | "keys_url": "https://api.github.com/repos/anssiko/presentation-api/keys{/key_id}", 100 | "collaborators_url": "https://api.github.com/repos/anssiko/presentation-api/collaborators{/collaborator}", 101 | "teams_url": "https://api.github.com/repos/anssiko/presentation-api/teams", 102 | "hooks_url": "https://api.github.com/repos/anssiko/presentation-api/hooks", 103 | "issue_events_url": "https://api.github.com/repos/anssiko/presentation-api/issues/events{/number}", 104 | "events_url": "https://api.github.com/repos/anssiko/presentation-api/events", 105 | "assignees_url": "https://api.github.com/repos/anssiko/presentation-api/assignees{/user}", 106 | "branches_url": "https://api.github.com/repos/anssiko/presentation-api/branches{/branch}", 107 | "tags_url": "https://api.github.com/repos/anssiko/presentation-api/tags", 108 | "blobs_url": "https://api.github.com/repos/anssiko/presentation-api/git/blobs{/sha}", 109 | "git_tags_url": "https://api.github.com/repos/anssiko/presentation-api/git/tags{/sha}", 110 | "git_refs_url": "https://api.github.com/repos/anssiko/presentation-api/git/refs{/sha}", 111 | "trees_url": "https://api.github.com/repos/anssiko/presentation-api/git/trees{/sha}", 112 | "statuses_url": "https://api.github.com/repos/anssiko/presentation-api/statuses/{sha}", 113 | "languages_url": "https://api.github.com/repos/anssiko/presentation-api/languages", 114 | "stargazers_url": "https://api.github.com/repos/anssiko/presentation-api/stargazers", 115 | "contributors_url": "https://api.github.com/repos/anssiko/presentation-api/contributors", 116 | "subscribers_url": "https://api.github.com/repos/anssiko/presentation-api/subscribers", 117 | "subscription_url": "https://api.github.com/repos/anssiko/presentation-api/subscription", 118 | "commits_url": "https://api.github.com/repos/anssiko/presentation-api/commits{/sha}", 119 | "git_commits_url": "https://api.github.com/repos/anssiko/presentation-api/git/commits{/sha}", 120 | "comments_url": "https://api.github.com/repos/anssiko/presentation-api/comments{/number}", 121 | "issue_comment_url": "https://api.github.com/repos/anssiko/presentation-api/issues/comments/{number}", 122 | "contents_url": "https://api.github.com/repos/anssiko/presentation-api/contents/{+path}", 123 | "compare_url": "https://api.github.com/repos/anssiko/presentation-api/compare/{base}...{head}", 124 | "merges_url": "https://api.github.com/repos/anssiko/presentation-api/merges", 125 | "archive_url": "https://api.github.com/repos/anssiko/presentation-api/{archive_format}{/ref}", 126 | "downloads_url": "https://api.github.com/repos/anssiko/presentation-api/downloads", 127 | "issues_url": "https://api.github.com/repos/anssiko/presentation-api/issues{/number}", 128 | "pulls_url": "https://api.github.com/repos/anssiko/presentation-api/pulls{/number}", 129 | "milestones_url": "https://api.github.com/repos/anssiko/presentation-api/milestones{/number}", 130 | "notifications_url": "https://api.github.com/repos/anssiko/presentation-api/notifications{?since,all,participating}", 131 | "labels_url": "https://api.github.com/repos/anssiko/presentation-api/labels{/name}", 132 | "releases_url": "https://api.github.com/repos/anssiko/presentation-api/releases{/id}", 133 | "created_at": "2014-11-18T14:59:46Z", 134 | "updated_at": "2015-02-04T12:35:20Z", 135 | "pushed_at": "2015-02-12T08:24:48Z", 136 | "git_url": "git://github.com/anssiko/presentation-api.git", 137 | "ssh_url": "git@github.com:anssiko/presentation-api.git", 138 | "clone_url": "https://github.com/anssiko/presentation-api.git", 139 | "svn_url": "https://github.com/anssiko/presentation-api", 140 | "homepage": "http://w3c.github.io/presentation-api/", 141 | "size": 316, 142 | "stargazers_count": 0, 143 | "watchers_count": 0, 144 | "language": "Makefile", 145 | "has_issues": false, 146 | "has_downloads": true, 147 | "has_wiki": true, 148 | "has_pages": true, 149 | "forks_count": 0, 150 | "mirror_url": null, 151 | "open_issues_count": 0, 152 | "forks": 0, 153 | "open_issues": 0, 154 | "watchers": 0, 155 | "default_branch": "gh-pages" 156 | } 157 | }, 158 | "base": { 159 | "label": "w3c:gh-pages", 160 | "ref": "gh-pages", 161 | "sha": "3ea2cdbe051e1a3b09ef128665b5f22c17947142", 162 | "user": { 163 | "login": "w3c", 164 | "id": 379216, 165 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 166 | "gravatar_id": "", 167 | "url": "https://api.github.com/users/w3c", 168 | "html_url": "https://github.com/w3c", 169 | "followers_url": "https://api.github.com/users/w3c/followers", 170 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 171 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 172 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 173 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 174 | "organizations_url": "https://api.github.com/users/w3c/orgs", 175 | "repos_url": "https://api.github.com/users/w3c/repos", 176 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 177 | "received_events_url": "https://api.github.com/users/w3c/received_events", 178 | "type": "Organization", 179 | "site_admin": false 180 | }, 181 | "repo": { 182 | "id": 14138377, 183 | "name": "presentation-api", 184 | "full_name": "w3c/presentation-api", 185 | "owner": { 186 | "login": "w3c", 187 | "id": 379216, 188 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 189 | "gravatar_id": "", 190 | "url": "https://api.github.com/users/w3c", 191 | "html_url": "https://github.com/w3c", 192 | "followers_url": "https://api.github.com/users/w3c/followers", 193 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 194 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 195 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 196 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 197 | "organizations_url": "https://api.github.com/users/w3c/orgs", 198 | "repos_url": "https://api.github.com/users/w3c/repos", 199 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 200 | "received_events_url": "https://api.github.com/users/w3c/received_events", 201 | "type": "Organization", 202 | "site_admin": false 203 | }, 204 | "private": false, 205 | "html_url": "https://github.com/w3c/presentation-api", 206 | "description": "Presentation API specification", 207 | "fork": false, 208 | "url": "https://api.github.com/repos/w3c/presentation-api", 209 | "forks_url": "https://api.github.com/repos/w3c/presentation-api/forks", 210 | "keys_url": "https://api.github.com/repos/w3c/presentation-api/keys{/key_id}", 211 | "collaborators_url": "https://api.github.com/repos/w3c/presentation-api/collaborators{/collaborator}", 212 | "teams_url": "https://api.github.com/repos/w3c/presentation-api/teams", 213 | "hooks_url": "https://api.github.com/repos/w3c/presentation-api/hooks", 214 | "issue_events_url": "https://api.github.com/repos/w3c/presentation-api/issues/events{/number}", 215 | "events_url": "https://api.github.com/repos/w3c/presentation-api/events", 216 | "assignees_url": "https://api.github.com/repos/w3c/presentation-api/assignees{/user}", 217 | "branches_url": "https://api.github.com/repos/w3c/presentation-api/branches{/branch}", 218 | "tags_url": "https://api.github.com/repos/w3c/presentation-api/tags", 219 | "blobs_url": "https://api.github.com/repos/w3c/presentation-api/git/blobs{/sha}", 220 | "git_tags_url": "https://api.github.com/repos/w3c/presentation-api/git/tags{/sha}", 221 | "git_refs_url": "https://api.github.com/repos/w3c/presentation-api/git/refs{/sha}", 222 | "trees_url": "https://api.github.com/repos/w3c/presentation-api/git/trees{/sha}", 223 | "statuses_url": "https://api.github.com/repos/w3c/presentation-api/statuses/{sha}", 224 | "languages_url": "https://api.github.com/repos/w3c/presentation-api/languages", 225 | "stargazers_url": "https://api.github.com/repos/w3c/presentation-api/stargazers", 226 | "contributors_url": "https://api.github.com/repos/w3c/presentation-api/contributors", 227 | "subscribers_url": "https://api.github.com/repos/w3c/presentation-api/subscribers", 228 | "subscription_url": "https://api.github.com/repos/w3c/presentation-api/subscription", 229 | "commits_url": "https://api.github.com/repos/w3c/presentation-api/commits{/sha}", 230 | "git_commits_url": "https://api.github.com/repos/w3c/presentation-api/git/commits{/sha}", 231 | "comments_url": "https://api.github.com/repos/w3c/presentation-api/comments{/number}", 232 | "issue_comment_url": "https://api.github.com/repos/w3c/presentation-api/issues/comments/{number}", 233 | "contents_url": "https://api.github.com/repos/w3c/presentation-api/contents/{+path}", 234 | "compare_url": "https://api.github.com/repos/w3c/presentation-api/compare/{base}...{head}", 235 | "merges_url": "https://api.github.com/repos/w3c/presentation-api/merges", 236 | "archive_url": "https://api.github.com/repos/w3c/presentation-api/{archive_format}{/ref}", 237 | "downloads_url": "https://api.github.com/repos/w3c/presentation-api/downloads", 238 | "issues_url": "https://api.github.com/repos/w3c/presentation-api/issues{/number}", 239 | "pulls_url": "https://api.github.com/repos/w3c/presentation-api/pulls{/number}", 240 | "milestones_url": "https://api.github.com/repos/w3c/presentation-api/milestones{/number}", 241 | "notifications_url": "https://api.github.com/repos/w3c/presentation-api/notifications{?since,all,participating}", 242 | "labels_url": "https://api.github.com/repos/w3c/presentation-api/labels{/name}", 243 | "releases_url": "https://api.github.com/repos/w3c/presentation-api/releases{/id}", 244 | "created_at": "2013-11-05T10:22:40Z", 245 | "updated_at": "2015-02-11T16:34:49Z", 246 | "pushed_at": "2015-02-11T16:34:49Z", 247 | "git_url": "git://github.com/w3c/presentation-api.git", 248 | "ssh_url": "git@github.com:w3c/presentation-api.git", 249 | "clone_url": "https://github.com/w3c/presentation-api.git", 250 | "svn_url": "https://github.com/w3c/presentation-api", 251 | "homepage": "http://w3c.github.io/presentation-api/", 252 | "size": 229770, 253 | "stargazers_count": 13, 254 | "watchers_count": 13, 255 | "language": "Makefile", 256 | "has_issues": true, 257 | "has_downloads": true, 258 | "has_wiki": true, 259 | "has_pages": true, 260 | "forks_count": 10, 261 | "mirror_url": null, 262 | "open_issues_count": 22, 263 | "forks": 10, 264 | "open_issues": 22, 265 | "watchers": 13, 266 | "default_branch": "gh-pages" 267 | } 268 | }, 269 | "_links": { 270 | "self": { 271 | "href": "https://api.github.com/repos/w3c/presentation-api/pulls/54" 272 | }, 273 | "html": { 274 | "href": "https://github.com/w3c/presentation-api/pull/54" 275 | }, 276 | "issue": { 277 | "href": "https://api.github.com/repos/w3c/presentation-api/issues/54" 278 | }, 279 | "comments": { 280 | "href": "https://api.github.com/repos/w3c/presentation-api/issues/54/comments" 281 | }, 282 | "review_comments": { 283 | "href": "https://api.github.com/repos/w3c/presentation-api/pulls/54/comments" 284 | }, 285 | "review_comment": { 286 | "href": "https://api.github.com/repos/w3c/presentation-api/pulls/comments/{number}" 287 | }, 288 | "commits": { 289 | "href": "https://api.github.com/repos/w3c/presentation-api/pulls/54/commits" 290 | }, 291 | "statuses": { 292 | "href": "https://api.github.com/repos/w3c/presentation-api/statuses/27306ba8fdc8547562cbd23a1829aca53497cf5c" 293 | } 294 | }, 295 | "merged": false, 296 | "mergeable": true, 297 | "mergeable_state": "clean", 298 | "merged_by": null, 299 | "comments": 0, 300 | "review_comments": 0, 301 | "commits": 2, 302 | "additions": 56, 303 | "deletions": 26, 304 | "changed_files": 3 305 | }, 306 | "repository": { 307 | "id": 14138377, 308 | "name": "presentation-api", 309 | "full_name": "w3c/presentation-api", 310 | "owner": { 311 | "login": "w3c", 312 | "id": 379216, 313 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 314 | "gravatar_id": "", 315 | "url": "https://api.github.com/users/w3c", 316 | "html_url": "https://github.com/w3c", 317 | "followers_url": "https://api.github.com/users/w3c/followers", 318 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 319 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 320 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 321 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 322 | "organizations_url": "https://api.github.com/users/w3c/orgs", 323 | "repos_url": "https://api.github.com/users/w3c/repos", 324 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 325 | "received_events_url": "https://api.github.com/users/w3c/received_events", 326 | "type": "Organization", 327 | "site_admin": false 328 | }, 329 | "private": false, 330 | "html_url": "https://github.com/w3c/presentation-api", 331 | "description": "Presentation API specification", 332 | "fork": false, 333 | "url": "https://api.github.com/repos/w3c/presentation-api", 334 | "forks_url": "https://api.github.com/repos/w3c/presentation-api/forks", 335 | "keys_url": "https://api.github.com/repos/w3c/presentation-api/keys{/key_id}", 336 | "collaborators_url": "https://api.github.com/repos/w3c/presentation-api/collaborators{/collaborator}", 337 | "teams_url": "https://api.github.com/repos/w3c/presentation-api/teams", 338 | "hooks_url": "https://api.github.com/repos/w3c/presentation-api/hooks", 339 | "issue_events_url": "https://api.github.com/repos/w3c/presentation-api/issues/events{/number}", 340 | "events_url": "https://api.github.com/repos/w3c/presentation-api/events", 341 | "assignees_url": "https://api.github.com/repos/w3c/presentation-api/assignees{/user}", 342 | "branches_url": "https://api.github.com/repos/w3c/presentation-api/branches{/branch}", 343 | "tags_url": "https://api.github.com/repos/w3c/presentation-api/tags", 344 | "blobs_url": "https://api.github.com/repos/w3c/presentation-api/git/blobs{/sha}", 345 | "git_tags_url": "https://api.github.com/repos/w3c/presentation-api/git/tags{/sha}", 346 | "git_refs_url": "https://api.github.com/repos/w3c/presentation-api/git/refs{/sha}", 347 | "trees_url": "https://api.github.com/repos/w3c/presentation-api/git/trees{/sha}", 348 | "statuses_url": "https://api.github.com/repos/w3c/presentation-api/statuses/{sha}", 349 | "languages_url": "https://api.github.com/repos/w3c/presentation-api/languages", 350 | "stargazers_url": "https://api.github.com/repos/w3c/presentation-api/stargazers", 351 | "contributors_url": "https://api.github.com/repos/w3c/presentation-api/contributors", 352 | "subscribers_url": "https://api.github.com/repos/w3c/presentation-api/subscribers", 353 | "subscription_url": "https://api.github.com/repos/w3c/presentation-api/subscription", 354 | "commits_url": "https://api.github.com/repos/w3c/presentation-api/commits{/sha}", 355 | "git_commits_url": "https://api.github.com/repos/w3c/presentation-api/git/commits{/sha}", 356 | "comments_url": "https://api.github.com/repos/w3c/presentation-api/comments{/number}", 357 | "issue_comment_url": "https://api.github.com/repos/w3c/presentation-api/issues/comments/{number}", 358 | "contents_url": "https://api.github.com/repos/w3c/presentation-api/contents/{+path}", 359 | "compare_url": "https://api.github.com/repos/w3c/presentation-api/compare/{base}...{head}", 360 | "merges_url": "https://api.github.com/repos/w3c/presentation-api/merges", 361 | "archive_url": "https://api.github.com/repos/w3c/presentation-api/{archive_format}{/ref}", 362 | "downloads_url": "https://api.github.com/repos/w3c/presentation-api/downloads", 363 | "issues_url": "https://api.github.com/repos/w3c/presentation-api/issues{/number}", 364 | "pulls_url": "https://api.github.com/repos/w3c/presentation-api/pulls{/number}", 365 | "milestones_url": "https://api.github.com/repos/w3c/presentation-api/milestones{/number}", 366 | "notifications_url": "https://api.github.com/repos/w3c/presentation-api/notifications{?since,all,participating}", 367 | "labels_url": "https://api.github.com/repos/w3c/presentation-api/labels{/name}", 368 | "releases_url": "https://api.github.com/repos/w3c/presentation-api/releases{/id}", 369 | "created_at": "2013-11-05T10:22:40Z", 370 | "updated_at": "2015-02-11T16:34:49Z", 371 | "pushed_at": "2015-02-11T16:34:49Z", 372 | "git_url": "git://github.com/w3c/presentation-api.git", 373 | "ssh_url": "git@github.com:w3c/presentation-api.git", 374 | "clone_url": "https://github.com/w3c/presentation-api.git", 375 | "svn_url": "https://github.com/w3c/presentation-api", 376 | "homepage": "http://w3c.github.io/presentation-api/", 377 | "size": 229770, 378 | "stargazers_count": 13, 379 | "watchers_count": 13, 380 | "language": "Makefile", 381 | "has_issues": true, 382 | "has_downloads": true, 383 | "has_wiki": true, 384 | "has_pages": true, 385 | "forks_count": 10, 386 | "mirror_url": null, 387 | "open_issues_count": 22, 388 | "forks": 10, 389 | "open_issues": 22, 390 | "watchers": 13, 391 | "default_branch": "gh-pages" 392 | }, 393 | "organization": { 394 | "login": "w3c", 395 | "id": 379216, 396 | "url": "https://api.github.com/orgs/w3c", 397 | "repos_url": "https://api.github.com/orgs/w3c/repos", 398 | "events_url": "https://api.github.com/orgs/w3c/events", 399 | "members_url": "https://api.github.com/orgs/w3c/members{/member}", 400 | "public_members_url": "https://api.github.com/orgs/w3c/public_members{/member}", 401 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 402 | "description": "The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web." 403 | }, 404 | "sender": { 405 | "login": "anssiko", 406 | "id": 765510, 407 | "avatar_url": "https://avatars.githubusercontent.com/u/765510?v=3", 408 | "gravatar_id": "", 409 | "url": "https://api.github.com/users/anssiko", 410 | "html_url": "https://github.com/anssiko", 411 | "followers_url": "https://api.github.com/users/anssiko/followers", 412 | "following_url": "https://api.github.com/users/anssiko/following{/other_user}", 413 | "gists_url": "https://api.github.com/users/anssiko/gists{/gist_id}", 414 | "starred_url": "https://api.github.com/users/anssiko/starred{/owner}{/repo}", 415 | "subscriptions_url": "https://api.github.com/users/anssiko/subscriptions", 416 | "organizations_url": "https://api.github.com/users/anssiko/orgs", 417 | "repos_url": "https://api.github.com/users/anssiko/repos", 418 | "events_url": "https://api.github.com/users/anssiko/events{/privacy}", 419 | "received_events_url": "https://api.github.com/users/anssiko/received_events", 420 | "type": "User", 421 | "site_admin": false 422 | } 423 | } -------------------------------------------------------------------------------- /tests/pull-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Anssi Kostiainen via GitHub 5 | To: dom@localhost 6 | Subject: [presentation-api] Pull Request: Use the custom W3C Document License defined 7 | in the Charter 8 | Message-ID: 9 | 10 | anssiko has just submitted a new pull request for https://github.com/w3c/presentation-api: 11 | 12 | 13 | == Use the custom W3C Document License defined in the Charter == 14 | The group's Charter defines a custom Document License [1] the documents produced by this group should use. To that end, I updated the Editor's Draft as well as the FPWD snapshot in staging accordingly. 15 | 16 | 17 | @tidoust Pubrules checker naturally does not understand this custom Document License, so this needs to be checked manually. 18 | 19 | 20 | [1] http://www.w3.org/2014/secondscreen/charter.html#doclicense 21 | 22 | 23 | See https://github.com/w3c/presentation-api/pull/54 24 | -------------------------------------------------------------------------------- /tests/pull_request-comment-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "created", 3 | "issue": { 4 | "url": "https://api.github.com/repos/w3c/mediacapture-main/issues/150", 5 | "labels_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/150/labels{/name}", 6 | "comments_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/150/comments", 7 | "events_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/150/events", 8 | "html_url": "https://github.com/w3c/mediacapture-main/pull/150", 9 | "id": 63087057, 10 | "number": 150, 11 | "title": "Update text for how constraint dictionaries get extended ", 12 | "user": { 13 | "login": "fluffy", 14 | "id": 217200, 15 | "avatar_url": "https://avatars.githubusercontent.com/u/217200?v=3", 16 | "gravatar_id": "", 17 | "url": "https://api.github.com/users/fluffy", 18 | "html_url": "https://github.com/fluffy", 19 | "followers_url": "https://api.github.com/users/fluffy/followers", 20 | "following_url": "https://api.github.com/users/fluffy/following{/other_user}", 21 | "gists_url": "https://api.github.com/users/fluffy/gists{/gist_id}", 22 | "starred_url": "https://api.github.com/users/fluffy/starred{/owner}{/repo}", 23 | "subscriptions_url": "https://api.github.com/users/fluffy/subscriptions", 24 | "organizations_url": "https://api.github.com/users/fluffy/orgs", 25 | "repos_url": "https://api.github.com/users/fluffy/repos", 26 | "events_url": "https://api.github.com/users/fluffy/events{/privacy}", 27 | "received_events_url": "https://api.github.com/users/fluffy/received_events", 28 | "type": "User", 29 | "site_admin": false 30 | }, 31 | "labels": [ 32 | 33 | ], 34 | "state": "open", 35 | "locked": false, 36 | "assignee": null, 37 | "milestone": null, 38 | "comments": 1, 39 | "created_at": "2015-03-19T20:42:07Z", 40 | "updated_at": "2015-03-20T06:34:29Z", 41 | "closed_at": null, 42 | "pull_request": { 43 | "url": "https://api.github.com/repos/w3c/mediacapture-main/pulls/150", 44 | "html_url": "https://github.com/w3c/mediacapture-main/pull/150", 45 | "diff_url": "https://github.com/w3c/mediacapture-main/pull/150.diff", 46 | "patch_url": "https://github.com/w3c/mediacapture-main/pull/150.patch" 47 | }, 48 | "body": "" 49 | }, 50 | "comment": { 51 | "url": "https://api.github.com/repos/w3c/mediacapture-main/issues/comments/83934826", 52 | "html_url": "https://github.com/w3c/mediacapture-main/pull/150#issuecomment-83934826", 53 | "issue_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/150", 54 | "id": 83934826, 55 | "user": { 56 | "login": "stefhak", 57 | "id": 1180334, 58 | "avatar_url": "https://avatars.githubusercontent.com/u/1180334?v=3", 59 | "gravatar_id": "", 60 | "url": "https://api.github.com/users/stefhak", 61 | "html_url": "https://github.com/stefhak", 62 | "followers_url": "https://api.github.com/users/stefhak/followers", 63 | "following_url": "https://api.github.com/users/stefhak/following{/other_user}", 64 | "gists_url": "https://api.github.com/users/stefhak/gists{/gist_id}", 65 | "starred_url": "https://api.github.com/users/stefhak/starred{/owner}{/repo}", 66 | "subscriptions_url": "https://api.github.com/users/stefhak/subscriptions", 67 | "organizations_url": "https://api.github.com/users/stefhak/orgs", 68 | "repos_url": "https://api.github.com/users/stefhak/repos", 69 | "events_url": "https://api.github.com/users/stefhak/events{/privacy}", 70 | "received_events_url": "https://api.github.com/users/stefhak/received_events", 71 | "type": "User", 72 | "site_admin": false 73 | }, 74 | "created_at": "2015-03-20T06:34:28Z", 75 | "updated_at": "2015-03-20T06:34:28Z", 76 | "body": "I made a couple of minor comments, but overall this LGTM." 77 | }, 78 | "repository": { 79 | "id": 23146519, 80 | "name": "mediacapture-main", 81 | "full_name": "w3c/mediacapture-main", 82 | "owner": { 83 | "login": "w3c", 84 | "id": 379216, 85 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 86 | "gravatar_id": "", 87 | "url": "https://api.github.com/users/w3c", 88 | "html_url": "https://github.com/w3c", 89 | "followers_url": "https://api.github.com/users/w3c/followers", 90 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 91 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 92 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 93 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 94 | "organizations_url": "https://api.github.com/users/w3c/orgs", 95 | "repos_url": "https://api.github.com/users/w3c/repos", 96 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 97 | "received_events_url": "https://api.github.com/users/w3c/received_events", 98 | "type": "Organization", 99 | "site_admin": false 100 | }, 101 | "private": false, 102 | "html_url": "https://github.com/w3c/mediacapture-main", 103 | "description": "Media Capture and Streams specification (aka getUserMedia)", 104 | "fork": false, 105 | "url": "https://api.github.com/repos/w3c/mediacapture-main", 106 | "forks_url": "https://api.github.com/repos/w3c/mediacapture-main/forks", 107 | "keys_url": "https://api.github.com/repos/w3c/mediacapture-main/keys{/key_id}", 108 | "collaborators_url": "https://api.github.com/repos/w3c/mediacapture-main/collaborators{/collaborator}", 109 | "teams_url": "https://api.github.com/repos/w3c/mediacapture-main/teams", 110 | "hooks_url": "https://api.github.com/repos/w3c/mediacapture-main/hooks", 111 | "issue_events_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/events{/number}", 112 | "events_url": "https://api.github.com/repos/w3c/mediacapture-main/events", 113 | "assignees_url": "https://api.github.com/repos/w3c/mediacapture-main/assignees{/user}", 114 | "branches_url": "https://api.github.com/repos/w3c/mediacapture-main/branches{/branch}", 115 | "tags_url": "https://api.github.com/repos/w3c/mediacapture-main/tags", 116 | "blobs_url": "https://api.github.com/repos/w3c/mediacapture-main/git/blobs{/sha}", 117 | "git_tags_url": "https://api.github.com/repos/w3c/mediacapture-main/git/tags{/sha}", 118 | "git_refs_url": "https://api.github.com/repos/w3c/mediacapture-main/git/refs{/sha}", 119 | "trees_url": "https://api.github.com/repos/w3c/mediacapture-main/git/trees{/sha}", 120 | "statuses_url": "https://api.github.com/repos/w3c/mediacapture-main/statuses/{sha}", 121 | "languages_url": "https://api.github.com/repos/w3c/mediacapture-main/languages", 122 | "stargazers_url": "https://api.github.com/repos/w3c/mediacapture-main/stargazers", 123 | "contributors_url": "https://api.github.com/repos/w3c/mediacapture-main/contributors", 124 | "subscribers_url": "https://api.github.com/repos/w3c/mediacapture-main/subscribers", 125 | "subscription_url": "https://api.github.com/repos/w3c/mediacapture-main/subscription", 126 | "commits_url": "https://api.github.com/repos/w3c/mediacapture-main/commits{/sha}", 127 | "git_commits_url": "https://api.github.com/repos/w3c/mediacapture-main/git/commits{/sha}", 128 | "comments_url": "https://api.github.com/repos/w3c/mediacapture-main/comments{/number}", 129 | "issue_comment_url": "https://api.github.com/repos/w3c/mediacapture-main/issues/comments{/number}", 130 | "contents_url": "https://api.github.com/repos/w3c/mediacapture-main/contents/{+path}", 131 | "compare_url": "https://api.github.com/repos/w3c/mediacapture-main/compare/{base}...{head}", 132 | "merges_url": "https://api.github.com/repos/w3c/mediacapture-main/merges", 133 | "archive_url": "https://api.github.com/repos/w3c/mediacapture-main/{archive_format}{/ref}", 134 | "downloads_url": "https://api.github.com/repos/w3c/mediacapture-main/downloads", 135 | "issues_url": "https://api.github.com/repos/w3c/mediacapture-main/issues{/number}", 136 | "pulls_url": "https://api.github.com/repos/w3c/mediacapture-main/pulls{/number}", 137 | "milestones_url": "https://api.github.com/repos/w3c/mediacapture-main/milestones{/number}", 138 | "notifications_url": "https://api.github.com/repos/w3c/mediacapture-main/notifications{?since,all,participating}", 139 | "labels_url": "https://api.github.com/repos/w3c/mediacapture-main/labels{/name}", 140 | "releases_url": "https://api.github.com/repos/w3c/mediacapture-main/releases{/id}", 141 | "created_at": "2014-08-20T11:37:16Z", 142 | "updated_at": "2015-03-19T14:41:47Z", 143 | "pushed_at": "2015-03-19T20:42:07Z", 144 | "git_url": "git://github.com/w3c/mediacapture-main.git", 145 | "ssh_url": "git@github.com:w3c/mediacapture-main.git", 146 | "clone_url": "https://github.com/w3c/mediacapture-main.git", 147 | "svn_url": "https://github.com/w3c/mediacapture-main", 148 | "homepage": null, 149 | "size": 16034, 150 | "stargazers_count": 8, 151 | "watchers_count": 8, 152 | "language": "HTML", 153 | "has_issues": true, 154 | "has_downloads": true, 155 | "has_wiki": true, 156 | "has_pages": true, 157 | "forks_count": 9, 158 | "mirror_url": null, 159 | "open_issues_count": 4, 160 | "forks": 9, 161 | "open_issues": 4, 162 | "watchers": 8, 163 | "default_branch": "master" 164 | }, 165 | "organization": { 166 | "login": "w3c", 167 | "id": 379216, 168 | "url": "https://api.github.com/orgs/w3c", 169 | "repos_url": "https://api.github.com/orgs/w3c/repos", 170 | "events_url": "https://api.github.com/orgs/w3c/events", 171 | "members_url": "https://api.github.com/orgs/w3c/members{/member}", 172 | "public_members_url": "https://api.github.com/orgs/w3c/public_members{/member}", 173 | "avatar_url": "https://avatars.githubusercontent.com/u/379216?v=3", 174 | "description": "The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web." 175 | }, 176 | "sender": { 177 | "login": "stefhak", 178 | "id": 1180334, 179 | "avatar_url": "https://avatars.githubusercontent.com/u/1180334?v=3", 180 | "gravatar_id": "", 181 | "url": "https://api.github.com/users/stefhak", 182 | "html_url": "https://github.com/stefhak", 183 | "followers_url": "https://api.github.com/users/stefhak/followers", 184 | "following_url": "https://api.github.com/users/stefhak/following{/other_user}", 185 | "gists_url": "https://api.github.com/users/stefhak/gists{/gist_id}", 186 | "starred_url": "https://api.github.com/users/stefhak/starred{/owner}{/repo}", 187 | "subscriptions_url": "https://api.github.com/users/stefhak/subscriptions", 188 | "organizations_url": "https://api.github.com/users/stefhak/orgs", 189 | "repos_url": "https://api.github.com/users/stefhak/repos", 190 | "events_url": "https://api.github.com/users/stefhak/events{/privacy}", 191 | "received_events_url": "https://api.github.com/users/stefhak/received_events", 192 | "type": "User", 193 | "site_admin": false 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /tests/pull_request-comment-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Stefan Hakansson via GitHub 5 | To: dom@localhost 6 | Subject: Re: [mediacapture-main] Update text for how constraint dictionaries get 7 | extended 8 | Message-ID: 9 | In-Reply-To: 10 | 11 | I made a couple of minor comments, but overall this LGTM. 12 | 13 | 14 | -- 15 | GitHub Notif of comment by stefhak 16 | See https://github.com/w3c/mediacapture-main/pull/150#issuecomment-83934826 17 | Special template! -------------------------------------------------------------------------------- /tests/push-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "ref": "refs/heads/master", 3 | "before": "e4961a375d2ba3a7ecb777f55571bf6e42ff6e2b", 4 | "after": "d3cb75fab91fd7dec6cd8fff69063405d31c505b", 5 | "created": false, 6 | "deleted": false, 7 | "forced": false, 8 | "base_ref": null, 9 | "compare": "https://github.com/dontcallmedom/github-notify-ml/compare/e4961a375d2b...d3cb75fab91f", 10 | "commits": [ 11 | { 12 | "id": "d3cb75fab91fd7dec6cd8fff69063405d31c505b", 13 | "distinct": true, 14 | "message": "basic template for pushes", 15 | "timestamp": "2014-10-08T17:56:10+02:00", 16 | "url": "https://github.com/dontcallmedom/github-notify-ml/commit/d3cb75fab91fd7dec6cd8fff69063405d31c505b", 17 | "author": { 18 | "name": "Dominique Hazael-Massieux", 19 | "email": "dom@w3.org", 20 | "username": "dontcallmedom" 21 | }, 22 | "committer": { 23 | "name": "Dominique Hazael-Massieux", 24 | "email": "dom@w3.org", 25 | "username": "dontcallmedom" 26 | }, 27 | "added": [ 28 | "templates/generic/push" 29 | ], 30 | "removed": [ 31 | 32 | ], 33 | "modified": [ 34 | 35 | ] 36 | } 37 | ], 38 | "head_commit": { 39 | "id": "d3cb75fab91fd7dec6cd8fff69063405d31c505b", 40 | "distinct": true, 41 | "message": "basic template for pushes", 42 | "timestamp": "2014-10-08T17:56:10+02:00", 43 | "url": "https://github.com/dontcallmedom/github-notify-ml/commit/d3cb75fab91fd7dec6cd8fff69063405d31c505b", 44 | "author": { 45 | "name": "Dominique Hazael-Massieux", 46 | "email": "dom@w3.org", 47 | "username": "dontcallmedom" 48 | }, 49 | "committer": { 50 | "name": "Dominique Hazael-Massieux", 51 | "email": "dom@w3.org", 52 | "username": "dontcallmedom" 53 | }, 54 | "added": [ 55 | "templates/generic/push" 56 | ], 57 | "removed": [ 58 | 59 | ], 60 | "modified": [ 61 | 62 | ] 63 | }, 64 | "repository": { 65 | "id": 24946939, 66 | "name": "github-notify-ml", 67 | "full_name": "dontcallmedom/github-notify-ml", 68 | "owner": { 69 | "name": "dontcallmedom", 70 | "email": "dom@w3.org" 71 | }, 72 | "private": false, 73 | "html_url": "https://github.com/dontcallmedom/github-notify-ml", 74 | "description": "", 75 | "fork": false, 76 | "url": "https://github.com/dontcallmedom/github-notify-ml", 77 | "forks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/forks", 78 | "keys_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/keys{/key_id}", 79 | "collaborators_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/collaborators{/collaborator}", 80 | "teams_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/teams", 81 | "hooks_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/hooks", 82 | "issue_events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/events{/number}", 83 | "events_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/events", 84 | "assignees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/assignees{/user}", 85 | "branches_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/branches{/branch}", 86 | "tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/tags", 87 | "blobs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/blobs{/sha}", 88 | "git_tags_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/tags{/sha}", 89 | "git_refs_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/refs{/sha}", 90 | "trees_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/trees{/sha}", 91 | "statuses_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/statuses/{sha}", 92 | "languages_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/languages", 93 | "stargazers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/stargazers", 94 | "contributors_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contributors", 95 | "subscribers_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscribers", 96 | "subscription_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/subscription", 97 | "commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/commits{/sha}", 98 | "git_commits_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/git/commits{/sha}", 99 | "comments_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/comments{/number}", 100 | "issue_comment_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues/comments/{number}", 101 | "contents_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/contents/{+path}", 102 | "compare_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/compare/{base}...{head}", 103 | "merges_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/merges", 104 | "archive_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/{archive_format}{/ref}", 105 | "downloads_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/downloads", 106 | "issues_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/issues{/number}", 107 | "pulls_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/pulls{/number}", 108 | "milestones_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/milestones{/number}", 109 | "notifications_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/notifications{?since,all,participating}", 110 | "labels_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/labels{/name}", 111 | "releases_url": "https://api.github.com/repos/dontcallmedom/github-notify-ml/releases{/id}", 112 | "created_at": 1412781937, 113 | "updated_at": "2014-10-08T15:26:13Z", 114 | "pushed_at": 1412783833, 115 | "git_url": "git://github.com/dontcallmedom/github-notify-ml.git", 116 | "ssh_url": "git@github.com:dontcallmedom/github-notify-ml.git", 117 | "clone_url": "https://github.com/dontcallmedom/github-notify-ml.git", 118 | "svn_url": "https://github.com/dontcallmedom/github-notify-ml", 119 | "homepage": null, 120 | "size": 0, 121 | "stargazers_count": 0, 122 | "watchers_count": 0, 123 | "language": "Python", 124 | "has_issues": true, 125 | "has_downloads": true, 126 | "has_wiki": true, 127 | "has_pages": false, 128 | "forks_count": 0, 129 | "mirror_url": null, 130 | "open_issues_count": 0, 131 | "forks": 0, 132 | "open_issues": 0, 133 | "watchers": 0, 134 | "default_branch": "master", 135 | "stargazers": 0, 136 | "master_branch": "master" 137 | }, 138 | "pusher": { 139 | "name": "dontcallmedom", 140 | "email": "dom@w3.org" 141 | }, 142 | "sender": { 143 | "login": "dontcallmedom", 144 | "id": 216410, 145 | "avatar_url": "https://avatars.githubusercontent.com/u/216410?v=2", 146 | "gravatar_id": "", 147 | "url": "https://api.github.com/users/dontcallmedom", 148 | "html_url": "https://github.com/dontcallmedom", 149 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 150 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 151 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 152 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 153 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 154 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 155 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 156 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 157 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 158 | "type": "User", 159 | "site_admin": false 160 | } 161 | } -------------------------------------------------------------------------------- /tests/push-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: =?utf-8?q?Dominique_Haza=C3=ABl-Massieux_via_GitHub?= 5 | To: dom@localhost 6 | Subject: [github-notify-ml] new commits pushed by dontcallmedom 7 | Message-ID: 8 | 9 | 10 | Per ml template! 11 | 12 | The following commits were just pushed by dontcallmedom to https://github.com/dontcallmedom/github-notify-ml: 13 | 14 | 15 | * basic template for pushes 16 | by Dominique Hazael-Massieux 17 | https://github.com/dontcallmedom/github-notify-ml/commit/d3cb75fab91fd7dec6cd8fff69063405d31c505b 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/rec-repos.json: -------------------------------------------------------------------------------- 1 | ["w3c/webcrypto"] 2 | -------------------------------------------------------------------------------- /tests/repo-created.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "created", 3 | "repository": { 4 | "id": 135493233, 5 | "node_id": "MDEwOlJlcG9zaXRvcnkxMzU0OTMyMzM=", 6 | "name": "Hello-World", 7 | "full_name": "Codertocat/Hello-World", 8 | "owner": { 9 | "login": "Codertocat", 10 | "id": 21031067, 11 | "node_id": "MDQ6VXNlcjIxMDMxMDY3", 12 | "avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4", 13 | "gravatar_id": "", 14 | "url": "https://api.github.com/users/Codertocat", 15 | "html_url": "https://github.com/Codertocat", 16 | "followers_url": "https://api.github.com/users/Codertocat/followers", 17 | "following_url": "https://api.github.com/users/Codertocat/following{/other_user}", 18 | "gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}", 19 | "starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}", 20 | "subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions", 21 | "organizations_url": "https://api.github.com/users/Codertocat/orgs", 22 | "repos_url": "https://api.github.com/users/Codertocat/repos", 23 | "events_url": "https://api.github.com/users/Codertocat/events{/privacy}", 24 | "received_events_url": "https://api.github.com/users/Codertocat/received_events", 25 | "type": "User", 26 | "site_admin": false 27 | }, 28 | "private": false, 29 | "html_url": "https://github.com/Codertocat/Hello-World", 30 | "description": null, 31 | "fork": false, 32 | "url": "https://api.github.com/repos/Codertocat/Hello-World", 33 | "forks_url": "https://api.github.com/repos/Codertocat/Hello-World/forks", 34 | "keys_url": "https://api.github.com/repos/Codertocat/Hello-World/keys{/key_id}", 35 | "collaborators_url": "https://api.github.com/repos/Codertocat/Hello-World/collaborators{/collaborator}", 36 | "teams_url": "https://api.github.com/repos/Codertocat/Hello-World/teams", 37 | "hooks_url": "https://api.github.com/repos/Codertocat/Hello-World/hooks", 38 | "issue_events_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/events{/number}", 39 | "events_url": "https://api.github.com/repos/Codertocat/Hello-World/events", 40 | "assignees_url": "https://api.github.com/repos/Codertocat/Hello-World/assignees{/user}", 41 | "branches_url": "https://api.github.com/repos/Codertocat/Hello-World/branches{/branch}", 42 | "tags_url": "https://api.github.com/repos/Codertocat/Hello-World/tags", 43 | "blobs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/blobs{/sha}", 44 | "git_tags_url": "https://api.github.com/repos/Codertocat/Hello-World/git/tags{/sha}", 45 | "git_refs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/refs{/sha}", 46 | "trees_url": "https://api.github.com/repos/Codertocat/Hello-World/git/trees{/sha}", 47 | "statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/{sha}", 48 | "languages_url": "https://api.github.com/repos/Codertocat/Hello-World/languages", 49 | "stargazers_url": "https://api.github.com/repos/Codertocat/Hello-World/stargazers", 50 | "contributors_url": "https://api.github.com/repos/Codertocat/Hello-World/contributors", 51 | "subscribers_url": "https://api.github.com/repos/Codertocat/Hello-World/subscribers", 52 | "subscription_url": "https://api.github.com/repos/Codertocat/Hello-World/subscription", 53 | "commits_url": "https://api.github.com/repos/Codertocat/Hello-World/commits{/sha}", 54 | "git_commits_url": "https://api.github.com/repos/Codertocat/Hello-World/git/commits{/sha}", 55 | "comments_url": "https://api.github.com/repos/Codertocat/Hello-World/comments{/number}", 56 | "issue_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/comments{/number}", 57 | "contents_url": "https://api.github.com/repos/Codertocat/Hello-World/contents/{+path}", 58 | "compare_url": "https://api.github.com/repos/Codertocat/Hello-World/compare/{base}...{head}", 59 | "merges_url": "https://api.github.com/repos/Codertocat/Hello-World/merges", 60 | "archive_url": "https://api.github.com/repos/Codertocat/Hello-World/{archive_format}{/ref}", 61 | "downloads_url": "https://api.github.com/repos/Codertocat/Hello-World/downloads", 62 | "issues_url": "https://api.github.com/repos/Codertocat/Hello-World/issues{/number}", 63 | "pulls_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls{/number}", 64 | "milestones_url": "https://api.github.com/repos/Codertocat/Hello-World/milestones{/number}", 65 | "notifications_url": "https://api.github.com/repos/Codertocat/Hello-World/notifications{?since,all,participating}", 66 | "labels_url": "https://api.github.com/repos/Codertocat/Hello-World/labels{/name}", 67 | "releases_url": "https://api.github.com/repos/Codertocat/Hello-World/releases{/id}", 68 | "deployments_url": "https://api.github.com/repos/Codertocat/Hello-World/deployments", 69 | "created_at": "2018-05-30T20:18:04Z", 70 | "updated_at": "2018-05-30T20:18:49Z", 71 | "pushed_at": "2018-05-30T20:18:48Z", 72 | "git_url": "git://github.com/Codertocat/Hello-World.git", 73 | "ssh_url": "git@github.com:Codertocat/Hello-World.git", 74 | "clone_url": "https://github.com/Codertocat/Hello-World.git", 75 | "svn_url": "https://github.com/Codertocat/Hello-World", 76 | "homepage": null, 77 | "size": 0, 78 | "stargazers_count": 0, 79 | "watchers_count": 0, 80 | "language": null, 81 | "has_issues": true, 82 | "has_projects": true, 83 | "has_downloads": true, 84 | "has_wiki": true, 85 | "has_pages": true, 86 | "forks_count": 0, 87 | "mirror_url": null, 88 | "archived": false, 89 | "open_issues_count": 2, 90 | "license": null, 91 | "forks": 0, 92 | "open_issues": 2, 93 | "watchers": 0, 94 | "default_branch": "master" 95 | }, 96 | "sender": { 97 | "login": "Codertocat", 98 | "id": 21031067, 99 | "node_id": "MDQ6VXNlcjIxMDMxMDY3", 100 | "avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4", 101 | "gravatar_id": "", 102 | "url": "https://api.github.com/users/Codertocat", 103 | "html_url": "https://github.com/Codertocat", 104 | "followers_url": "https://api.github.com/users/Codertocat/followers", 105 | "following_url": "https://api.github.com/users/Codertocat/following{/other_user}", 106 | "gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}", 107 | "starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}", 108 | "subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions", 109 | "organizations_url": "https://api.github.com/users/Codertocat/orgs", 110 | "repos_url": "https://api.github.com/users/Codertocat/repos", 111 | "events_url": "https://api.github.com/users/Codertocat/events{/privacy}", 112 | "received_events_url": "https://api.github.com/users/Codertocat/received_events", 113 | "type": "User", 114 | "site_admin": false 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /tests/repo-created.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Codertocat via GitHub 5 | To: dom@localhost 6 | Subject: Codertocat/Hello-World created by Codertocat 7 | Message-ID: 8 | 9 | Codertocat has just created a new repository: Codertocat/Hello-World -------------------------------------------------------------------------------- /tests/repo-deleted.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "deleted", 3 | "repository": { 4 | "id": 135493233, 5 | "node_id": "MDEwOlJlcG9zaXRvcnkxMzU0OTMyMzM=", 6 | "name": "Hello-World", 7 | "full_name": "Codertocat/Hello-World", 8 | "owner": { 9 | "login": "Codertocat", 10 | "id": 21031067, 11 | "node_id": "MDQ6VXNlcjIxMDMxMDY3", 12 | "avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4", 13 | "gravatar_id": "", 14 | "url": "https://api.github.com/users/Codertocat", 15 | "html_url": "https://github.com/Codertocat", 16 | "followers_url": "https://api.github.com/users/Codertocat/followers", 17 | "following_url": "https://api.github.com/users/Codertocat/following{/other_user}", 18 | "gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}", 19 | "starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}", 20 | "subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions", 21 | "organizations_url": "https://api.github.com/users/Codertocat/orgs", 22 | "repos_url": "https://api.github.com/users/Codertocat/repos", 23 | "events_url": "https://api.github.com/users/Codertocat/events{/privacy}", 24 | "received_events_url": "https://api.github.com/users/Codertocat/received_events", 25 | "type": "User", 26 | "site_admin": false 27 | }, 28 | "private": false, 29 | "html_url": "https://github.com/Codertocat/Hello-World", 30 | "description": null, 31 | "fork": false, 32 | "url": "https://api.github.com/repos/Codertocat/Hello-World", 33 | "forks_url": "https://api.github.com/repos/Codertocat/Hello-World/forks", 34 | "keys_url": "https://api.github.com/repos/Codertocat/Hello-World/keys{/key_id}", 35 | "collaborators_url": "https://api.github.com/repos/Codertocat/Hello-World/collaborators{/collaborator}", 36 | "teams_url": "https://api.github.com/repos/Codertocat/Hello-World/teams", 37 | "hooks_url": "https://api.github.com/repos/Codertocat/Hello-World/hooks", 38 | "issue_events_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/events{/number}", 39 | "events_url": "https://api.github.com/repos/Codertocat/Hello-World/events", 40 | "assignees_url": "https://api.github.com/repos/Codertocat/Hello-World/assignees{/user}", 41 | "branches_url": "https://api.github.com/repos/Codertocat/Hello-World/branches{/branch}", 42 | "tags_url": "https://api.github.com/repos/Codertocat/Hello-World/tags", 43 | "blobs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/blobs{/sha}", 44 | "git_tags_url": "https://api.github.com/repos/Codertocat/Hello-World/git/tags{/sha}", 45 | "git_refs_url": "https://api.github.com/repos/Codertocat/Hello-World/git/refs{/sha}", 46 | "trees_url": "https://api.github.com/repos/Codertocat/Hello-World/git/trees{/sha}", 47 | "statuses_url": "https://api.github.com/repos/Codertocat/Hello-World/statuses/{sha}", 48 | "languages_url": "https://api.github.com/repos/Codertocat/Hello-World/languages", 49 | "stargazers_url": "https://api.github.com/repos/Codertocat/Hello-World/stargazers", 50 | "contributors_url": "https://api.github.com/repos/Codertocat/Hello-World/contributors", 51 | "subscribers_url": "https://api.github.com/repos/Codertocat/Hello-World/subscribers", 52 | "subscription_url": "https://api.github.com/repos/Codertocat/Hello-World/subscription", 53 | "commits_url": "https://api.github.com/repos/Codertocat/Hello-World/commits{/sha}", 54 | "git_commits_url": "https://api.github.com/repos/Codertocat/Hello-World/git/commits{/sha}", 55 | "comments_url": "https://api.github.com/repos/Codertocat/Hello-World/comments{/number}", 56 | "issue_comment_url": "https://api.github.com/repos/Codertocat/Hello-World/issues/comments{/number}", 57 | "contents_url": "https://api.github.com/repos/Codertocat/Hello-World/contents/{+path}", 58 | "compare_url": "https://api.github.com/repos/Codertocat/Hello-World/compare/{base}...{head}", 59 | "merges_url": "https://api.github.com/repos/Codertocat/Hello-World/merges", 60 | "archive_url": "https://api.github.com/repos/Codertocat/Hello-World/{archive_format}{/ref}", 61 | "downloads_url": "https://api.github.com/repos/Codertocat/Hello-World/downloads", 62 | "issues_url": "https://api.github.com/repos/Codertocat/Hello-World/issues{/number}", 63 | "pulls_url": "https://api.github.com/repos/Codertocat/Hello-World/pulls{/number}", 64 | "milestones_url": "https://api.github.com/repos/Codertocat/Hello-World/milestones{/number}", 65 | "notifications_url": "https://api.github.com/repos/Codertocat/Hello-World/notifications{?since,all,participating}", 66 | "labels_url": "https://api.github.com/repos/Codertocat/Hello-World/labels{/name}", 67 | "releases_url": "https://api.github.com/repos/Codertocat/Hello-World/releases{/id}", 68 | "deployments_url": "https://api.github.com/repos/Codertocat/Hello-World/deployments", 69 | "created_at": "2018-05-30T20:18:04Z", 70 | "updated_at": "2018-05-30T20:18:49Z", 71 | "pushed_at": "2018-05-30T20:18:48Z", 72 | "git_url": "git://github.com/Codertocat/Hello-World.git", 73 | "ssh_url": "git@github.com:Codertocat/Hello-World.git", 74 | "clone_url": "https://github.com/Codertocat/Hello-World.git", 75 | "svn_url": "https://github.com/Codertocat/Hello-World", 76 | "homepage": null, 77 | "size": 0, 78 | "stargazers_count": 0, 79 | "watchers_count": 0, 80 | "language": null, 81 | "has_issues": true, 82 | "has_projects": true, 83 | "has_downloads": true, 84 | "has_wiki": true, 85 | "has_pages": true, 86 | "forks_count": 0, 87 | "mirror_url": null, 88 | "archived": false, 89 | "open_issues_count": 2, 90 | "license": null, 91 | "forks": 0, 92 | "open_issues": 2, 93 | "watchers": 0, 94 | "default_branch": "master" 95 | }, 96 | "sender": { 97 | "login": "Codertocat", 98 | "id": 21031067, 99 | "node_id": "MDQ6VXNlcjIxMDMxMDY3", 100 | "avatar_url": "https://avatars1.githubusercontent.com/u/21031067?v=4", 101 | "gravatar_id": "", 102 | "url": "https://api.github.com/users/Codertocat", 103 | "html_url": "https://github.com/Codertocat", 104 | "followers_url": "https://api.github.com/users/Codertocat/followers", 105 | "following_url": "https://api.github.com/users/Codertocat/following{/other_user}", 106 | "gists_url": "https://api.github.com/users/Codertocat/gists{/gist_id}", 107 | "starred_url": "https://api.github.com/users/Codertocat/starred{/owner}{/repo}", 108 | "subscriptions_url": "https://api.github.com/users/Codertocat/subscriptions", 109 | "organizations_url": "https://api.github.com/users/Codertocat/orgs", 110 | "repos_url": "https://api.github.com/users/Codertocat/repos", 111 | "events_url": "https://api.github.com/users/Codertocat/events{/privacy}", 112 | "received_events_url": "https://api.github.com/users/Codertocat/received_events", 113 | "type": "User", 114 | "site_admin": false 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /tests/repo-deleted.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: Codertocat via GitHub 5 | To: dom@localhost 6 | Subject: Codertocat/Hello-World deleted by Codertocat 7 | Message-ID: 8 | 9 | Codertocat has just deleted the repository Codertocat/Hello-World -------------------------------------------------------------------------------- /tests/repo-transferred.json: -------------------------------------------------------------------------------- 1 | { 2 | "action": "transferred", 3 | "changes": { 4 | "owner": { 5 | "from": { 6 | "user": { 7 | "login": "dontcallmedom", 8 | "id": 216410, 9 | "node_id": "MDQ6VXNlcjIxNjQxMA==", 10 | "avatar_url": "https://avatars0.githubusercontent.com/u/216410?v=4", 11 | "gravatar_id": "", 12 | "url": "https://api.github.com/users/dontcallmedom", 13 | "html_url": "https://github.com/dontcallmedom", 14 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 15 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 16 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 17 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 18 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 19 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 20 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 21 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 22 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 23 | "type": "User", 24 | "site_admin": false 25 | } 26 | } 27 | } 28 | }, 29 | "repository": { 30 | "id": 267321549, 31 | "node_id": "MDEwOlJlcG9zaXRvcnkyNjczMjE1NDk=", 32 | "name": "test-repo-transfer", 33 | "full_name": "w3c/test-repo-transfer", 34 | "private": false, 35 | "owner": { 36 | "login": "w3c", 37 | "id": 379216, 38 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3OTIxNg==", 39 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 40 | "gravatar_id": "", 41 | "url": "https://api.github.com/users/w3c", 42 | "html_url": "https://github.com/w3c", 43 | "followers_url": "https://api.github.com/users/w3c/followers", 44 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 45 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 46 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 47 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 48 | "organizations_url": "https://api.github.com/users/w3c/orgs", 49 | "repos_url": "https://api.github.com/users/w3c/repos", 50 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 51 | "received_events_url": "https://api.github.com/users/w3c/received_events", 52 | "type": "Organization", 53 | "site_admin": false 54 | }, 55 | "html_url": "https://github.com/w3c/test-repo-transfer", 56 | "description": "IGNOREME", 57 | "fork": false, 58 | "url": "https://api.github.com/repos/w3c/test-repo-transfer", 59 | "forks_url": "https://api.github.com/repos/w3c/test-repo-transfer/forks", 60 | "keys_url": "https://api.github.com/repos/w3c/test-repo-transfer/keys{/key_id}", 61 | "collaborators_url": "https://api.github.com/repos/w3c/test-repo-transfer/collaborators{/collaborator}", 62 | "teams_url": "https://api.github.com/repos/w3c/test-repo-transfer/teams", 63 | "hooks_url": "https://api.github.com/repos/w3c/test-repo-transfer/hooks", 64 | "issue_events_url": "https://api.github.com/repos/w3c/test-repo-transfer/issues/events{/number}", 65 | "events_url": "https://api.github.com/repos/w3c/test-repo-transfer/events", 66 | "assignees_url": "https://api.github.com/repos/w3c/test-repo-transfer/assignees{/user}", 67 | "branches_url": "https://api.github.com/repos/w3c/test-repo-transfer/branches{/branch}", 68 | "tags_url": "https://api.github.com/repos/w3c/test-repo-transfer/tags", 69 | "blobs_url": "https://api.github.com/repos/w3c/test-repo-transfer/git/blobs{/sha}", 70 | "git_tags_url": "https://api.github.com/repos/w3c/test-repo-transfer/git/tags{/sha}", 71 | "git_refs_url": "https://api.github.com/repos/w3c/test-repo-transfer/git/refs{/sha}", 72 | "trees_url": "https://api.github.com/repos/w3c/test-repo-transfer/git/trees{/sha}", 73 | "statuses_url": "https://api.github.com/repos/w3c/test-repo-transfer/statuses/{sha}", 74 | "languages_url": "https://api.github.com/repos/w3c/test-repo-transfer/languages", 75 | "stargazers_url": "https://api.github.com/repos/w3c/test-repo-transfer/stargazers", 76 | "contributors_url": "https://api.github.com/repos/w3c/test-repo-transfer/contributors", 77 | "subscribers_url": "https://api.github.com/repos/w3c/test-repo-transfer/subscribers", 78 | "subscription_url": "https://api.github.com/repos/w3c/test-repo-transfer/subscription", 79 | "commits_url": "https://api.github.com/repos/w3c/test-repo-transfer/commits{/sha}", 80 | "git_commits_url": "https://api.github.com/repos/w3c/test-repo-transfer/git/commits{/sha}", 81 | "comments_url": "https://api.github.com/repos/w3c/test-repo-transfer/comments{/number}", 82 | "issue_comment_url": "https://api.github.com/repos/w3c/test-repo-transfer/issues/comments{/number}", 83 | "contents_url": "https://api.github.com/repos/w3c/test-repo-transfer/contents/{+path}", 84 | "compare_url": "https://api.github.com/repos/w3c/test-repo-transfer/compare/{base}...{head}", 85 | "merges_url": "https://api.github.com/repos/w3c/test-repo-transfer/merges", 86 | "archive_url": "https://api.github.com/repos/w3c/test-repo-transfer/{archive_format}{/ref}", 87 | "downloads_url": "https://api.github.com/repos/w3c/test-repo-transfer/downloads", 88 | "issues_url": "https://api.github.com/repos/w3c/test-repo-transfer/issues{/number}", 89 | "pulls_url": "https://api.github.com/repos/w3c/test-repo-transfer/pulls{/number}", 90 | "milestones_url": "https://api.github.com/repos/w3c/test-repo-transfer/milestones{/number}", 91 | "notifications_url": "https://api.github.com/repos/w3c/test-repo-transfer/notifications{?since,all,participating}", 92 | "labels_url": "https://api.github.com/repos/w3c/test-repo-transfer/labels{/name}", 93 | "releases_url": "https://api.github.com/repos/w3c/test-repo-transfer/releases{/id}", 94 | "deployments_url": "https://api.github.com/repos/w3c/test-repo-transfer/deployments", 95 | "created_at": "2020-05-27T13:05:23Z", 96 | "updated_at": "2020-05-27T13:05:52Z", 97 | "pushed_at": "2020-05-27T13:05:25Z", 98 | "git_url": "git://github.com/w3c/test-repo-transfer.git", 99 | "ssh_url": "git@github.com:w3c/test-repo-transfer.git", 100 | "clone_url": "https://github.com/w3c/test-repo-transfer.git", 101 | "svn_url": "https://github.com/w3c/test-repo-transfer", 102 | "homepage": null, 103 | "size": 0, 104 | "stargazers_count": 0, 105 | "watchers_count": 0, 106 | "language": null, 107 | "has_issues": true, 108 | "has_projects": true, 109 | "has_downloads": true, 110 | "has_wiki": true, 111 | "has_pages": false, 112 | "forks_count": 0, 113 | "mirror_url": null, 114 | "archived": false, 115 | "disabled": false, 116 | "open_issues_count": 0, 117 | "license": null, 118 | "forks": 0, 119 | "open_issues": 0, 120 | "watchers": 0, 121 | "default_branch": "master" 122 | }, 123 | "organization": { 124 | "login": "w3c", 125 | "id": 379216, 126 | "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3OTIxNg==", 127 | "url": "https://api.github.com/orgs/w3c", 128 | "repos_url": "https://api.github.com/orgs/w3c/repos", 129 | "events_url": "https://api.github.com/orgs/w3c/events", 130 | "hooks_url": "https://api.github.com/orgs/w3c/hooks", 131 | "issues_url": "https://api.github.com/orgs/w3c/issues", 132 | "members_url": "https://api.github.com/orgs/w3c/members{/member}", 133 | "public_members_url": "https://api.github.com/orgs/w3c/public_members{/member}", 134 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 135 | "description": "The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web." 136 | }, 137 | "sender": { 138 | "login": "dontcallmedom", 139 | "id": 216410, 140 | "node_id": "MDQ6VXNlcjIxNjQxMA==", 141 | "avatar_url": "https://avatars0.githubusercontent.com/u/216410?v=4", 142 | "gravatar_id": "", 143 | "url": "https://api.github.com/users/dontcallmedom", 144 | "html_url": "https://github.com/dontcallmedom", 145 | "followers_url": "https://api.github.com/users/dontcallmedom/followers", 146 | "following_url": "https://api.github.com/users/dontcallmedom/following{/other_user}", 147 | "gists_url": "https://api.github.com/users/dontcallmedom/gists{/gist_id}", 148 | "starred_url": "https://api.github.com/users/dontcallmedom/starred{/owner}{/repo}", 149 | "subscriptions_url": "https://api.github.com/users/dontcallmedom/subscriptions", 150 | "organizations_url": "https://api.github.com/users/dontcallmedom/orgs", 151 | "repos_url": "https://api.github.com/users/dontcallmedom/repos", 152 | "events_url": "https://api.github.com/users/dontcallmedom/events{/privacy}", 153 | "received_events_url": "https://api.github.com/users/dontcallmedom/received_events", 154 | "type": "User", 155 | "site_admin": false 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /tests/repo-transferred.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: =?utf-8?q?Dominique_Haza=C3=ABl-Massieux_via_GitHub?= 5 | To: dom@localhost 6 | Subject: w3c/test-repo-transfer transferred from dontcallmedom to w3c by dontcallmedom 7 | Message-ID: 8 | 9 | dontcallmedom has just transferred the repository test-repo-transfer from dontcallmedom to w3c 10 | https://github.com/w3c/test-repo-transfer -------------------------------------------------------------------------------- /tests/repo1-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 23384500, 3 | "name": "webrtc-pc", 4 | "full_name": "w3c/webrtc-pc", 5 | "owner": { 6 | "login": "w3c", 7 | "id": 379216, 8 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 9 | "gravatar_id": "", 10 | "url": "https://api.github.com/users/w3c", 11 | "html_url": "https://github.com/w3c", 12 | "followers_url": "https://api.github.com/users/w3c/followers", 13 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 14 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 15 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 16 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 17 | "organizations_url": "https://api.github.com/users/w3c/orgs", 18 | "repos_url": "https://api.github.com/users/w3c/repos", 19 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 20 | "received_events_url": "https://api.github.com/users/w3c/received_events", 21 | "type": "Organization", 22 | "site_admin": false 23 | }, 24 | "private": false, 25 | "html_url": "https://github.com/w3c/webrtc-pc", 26 | "description": "WebRTC 1.0 API", 27 | "fork": false, 28 | "url": "https://api.github.com/repos/w3c/webrtc-pc", 29 | "forks_url": "https://api.github.com/repos/w3c/webrtc-pc/forks", 30 | "keys_url": "https://api.github.com/repos/w3c/webrtc-pc/keys{/key_id}", 31 | "collaborators_url": "https://api.github.com/repos/w3c/webrtc-pc/collaborators{/collaborator}", 32 | "teams_url": "https://api.github.com/repos/w3c/webrtc-pc/teams", 33 | "hooks_url": "https://api.github.com/repos/w3c/webrtc-pc/hooks", 34 | "issue_events_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/events{/number}", 35 | "events_url": "https://api.github.com/repos/w3c/webrtc-pc/events", 36 | "assignees_url": "https://api.github.com/repos/w3c/webrtc-pc/assignees{/user}", 37 | "branches_url": "https://api.github.com/repos/w3c/webrtc-pc/branches{/branch}", 38 | "tags_url": "https://api.github.com/repos/w3c/webrtc-pc/tags", 39 | "blobs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/blobs{/sha}", 40 | "git_tags_url": "https://api.github.com/repos/w3c/webrtc-pc/git/tags{/sha}", 41 | "git_refs_url": "https://api.github.com/repos/w3c/webrtc-pc/git/refs{/sha}", 42 | "trees_url": "https://api.github.com/repos/w3c/webrtc-pc/git/trees{/sha}", 43 | "statuses_url": "https://api.github.com/repos/w3c/webrtc-pc/statuses/{sha}", 44 | "languages_url": "https://api.github.com/repos/w3c/webrtc-pc/languages", 45 | "stargazers_url": "https://api.github.com/repos/w3c/webrtc-pc/stargazers", 46 | "contributors_url": "https://api.github.com/repos/w3c/webrtc-pc/contributors", 47 | "subscribers_url": "https://api.github.com/repos/w3c/webrtc-pc/subscribers", 48 | "subscription_url": "https://api.github.com/repos/w3c/webrtc-pc/subscription", 49 | "commits_url": "https://api.github.com/repos/w3c/webrtc-pc/commits{/sha}", 50 | "git_commits_url": "https://api.github.com/repos/w3c/webrtc-pc/git/commits{/sha}", 51 | "comments_url": "https://api.github.com/repos/w3c/webrtc-pc/comments{/number}", 52 | "issue_comment_url": "https://api.github.com/repos/w3c/webrtc-pc/issues/comments{/number}", 53 | "contents_url": "https://api.github.com/repos/w3c/webrtc-pc/contents/{+path}", 54 | "compare_url": "https://api.github.com/repos/w3c/webrtc-pc/compare/{base}...{head}", 55 | "merges_url": "https://api.github.com/repos/w3c/webrtc-pc/merges", 56 | "archive_url": "https://api.github.com/repos/w3c/webrtc-pc/{archive_format}{/ref}", 57 | "downloads_url": "https://api.github.com/repos/w3c/webrtc-pc/downloads", 58 | "issues_url": "https://api.github.com/repos/w3c/webrtc-pc/issues{/number}", 59 | "pulls_url": "https://api.github.com/repos/w3c/webrtc-pc/pulls{/number}", 60 | "milestones_url": "https://api.github.com/repos/w3c/webrtc-pc/milestones{/number}", 61 | "notifications_url": "https://api.github.com/repos/w3c/webrtc-pc/notifications{?since,all,participating}", 62 | "labels_url": "https://api.github.com/repos/w3c/webrtc-pc/labels{/name}", 63 | "releases_url": "https://api.github.com/repos/w3c/webrtc-pc/releases{/id}", 64 | "deployments_url": "https://api.github.com/repos/w3c/webrtc-pc/deployments", 65 | "created_at": "2014-08-27T09:39:00Z", 66 | "updated_at": "2017-12-07T08:53:13Z", 67 | "pushed_at": "2017-12-14T15:46:26Z", 68 | "git_url": "git://github.com/w3c/webrtc-pc.git", 69 | "ssh_url": "git@github.com:w3c/webrtc-pc.git", 70 | "clone_url": "https://github.com/w3c/webrtc-pc.git", 71 | "svn_url": "https://github.com/w3c/webrtc-pc", 72 | "homepage": "https://w3c.github.io/webrtc-pc/", 73 | "size": 23258, 74 | "stargazers_count": 144, 75 | "watchers_count": 144, 76 | "language": "HTML", 77 | "has_issues": true, 78 | "has_projects": true, 79 | "has_downloads": true, 80 | "has_wiki": true, 81 | "has_pages": true, 82 | "forks_count": 69, 83 | "mirror_url": null, 84 | "archived": false, 85 | "open_issues_count": 100, 86 | "license": { 87 | "key": "other", 88 | "name": "Other", 89 | "spdx_id": null, 90 | "url": null 91 | }, 92 | "forks": 69, 93 | "open_issues": 100, 94 | "watchers": 144, 95 | "default_branch": "master", 96 | "organization": { 97 | "login": "w3c", 98 | "id": 379216, 99 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 100 | "gravatar_id": "", 101 | "url": "https://api.github.com/users/w3c", 102 | "html_url": "https://github.com/w3c", 103 | "followers_url": "https://api.github.com/users/w3c/followers", 104 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 105 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 106 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 107 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 108 | "organizations_url": "https://api.github.com/users/w3c/orgs", 109 | "repos_url": "https://api.github.com/users/w3c/repos", 110 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 111 | "received_events_url": "https://api.github.com/users/w3c/received_events", 112 | "type": "Organization", 113 | "site_admin": false 114 | }, 115 | "network_count": 69, 116 | "subscribers_count": 58 117 | } 118 | -------------------------------------------------------------------------------- /tests/repo2-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 46081609, 3 | "name": "webcrypto", 4 | "full_name": "w3c/webcrypto", 5 | "owner": { 6 | "login": "w3c", 7 | "id": 379216, 8 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 9 | "gravatar_id": "", 10 | "url": "https://api.github.com/users/w3c", 11 | "html_url": "https://github.com/w3c", 12 | "followers_url": "https://api.github.com/users/w3c/followers", 13 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 14 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 15 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 16 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 17 | "organizations_url": "https://api.github.com/users/w3c/orgs", 18 | "repos_url": "https://api.github.com/users/w3c/repos", 19 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 20 | "received_events_url": "https://api.github.com/users/w3c/received_events", 21 | "type": "Organization", 22 | "site_admin": false 23 | }, 24 | "private": false, 25 | "html_url": "https://github.com/w3c/webcrypto", 26 | "description": "The W3C Web Cryptography API ", 27 | "fork": false, 28 | "url": "https://api.github.com/repos/w3c/webcrypto", 29 | "forks_url": "https://api.github.com/repos/w3c/webcrypto/forks", 30 | "keys_url": "https://api.github.com/repos/w3c/webcrypto/keys{/key_id}", 31 | "collaborators_url": "https://api.github.com/repos/w3c/webcrypto/collaborators{/collaborator}", 32 | "teams_url": "https://api.github.com/repos/w3c/webcrypto/teams", 33 | "hooks_url": "https://api.github.com/repos/w3c/webcrypto/hooks", 34 | "issue_events_url": "https://api.github.com/repos/w3c/webcrypto/issues/events{/number}", 35 | "events_url": "https://api.github.com/repos/w3c/webcrypto/events", 36 | "assignees_url": "https://api.github.com/repos/w3c/webcrypto/assignees{/user}", 37 | "branches_url": "https://api.github.com/repos/w3c/webcrypto/branches{/branch}", 38 | "tags_url": "https://api.github.com/repos/w3c/webcrypto/tags", 39 | "blobs_url": "https://api.github.com/repos/w3c/webcrypto/git/blobs{/sha}", 40 | "git_tags_url": "https://api.github.com/repos/w3c/webcrypto/git/tags{/sha}", 41 | "git_refs_url": "https://api.github.com/repos/w3c/webcrypto/git/refs{/sha}", 42 | "trees_url": "https://api.github.com/repos/w3c/webcrypto/git/trees{/sha}", 43 | "statuses_url": "https://api.github.com/repos/w3c/webcrypto/statuses/{sha}", 44 | "languages_url": "https://api.github.com/repos/w3c/webcrypto/languages", 45 | "stargazers_url": "https://api.github.com/repos/w3c/webcrypto/stargazers", 46 | "contributors_url": "https://api.github.com/repos/w3c/webcrypto/contributors", 47 | "subscribers_url": "https://api.github.com/repos/w3c/webcrypto/subscribers", 48 | "subscription_url": "https://api.github.com/repos/w3c/webcrypto/subscription", 49 | "commits_url": "https://api.github.com/repos/w3c/webcrypto/commits{/sha}", 50 | "git_commits_url": "https://api.github.com/repos/w3c/webcrypto/git/commits{/sha}", 51 | "comments_url": "https://api.github.com/repos/w3c/webcrypto/comments{/number}", 52 | "issue_comment_url": "https://api.github.com/repos/w3c/webcrypto/issues/comments{/number}", 53 | "contents_url": "https://api.github.com/repos/w3c/webcrypto/contents/{+path}", 54 | "compare_url": "https://api.github.com/repos/w3c/webcrypto/compare/{base}...{head}", 55 | "merges_url": "https://api.github.com/repos/w3c/webcrypto/merges", 56 | "archive_url": "https://api.github.com/repos/w3c/webcrypto/{archive_format}{/ref}", 57 | "downloads_url": "https://api.github.com/repos/w3c/webcrypto/downloads", 58 | "issues_url": "https://api.github.com/repos/w3c/webcrypto/issues{/number}", 59 | "pulls_url": "https://api.github.com/repos/w3c/webcrypto/pulls{/number}", 60 | "milestones_url": "https://api.github.com/repos/w3c/webcrypto/milestones{/number}", 61 | "notifications_url": "https://api.github.com/repos/w3c/webcrypto/notifications{?since,all,participating}", 62 | "labels_url": "https://api.github.com/repos/w3c/webcrypto/labels{/name}", 63 | "releases_url": "https://api.github.com/repos/w3c/webcrypto/releases{/id}", 64 | "deployments_url": "https://api.github.com/repos/w3c/webcrypto/deployments", 65 | "created_at": "2015-11-12T21:21:05Z", 66 | "updated_at": "2017-12-14T22:27:46Z", 67 | "pushed_at": "2017-09-26T21:40:08Z", 68 | "git_url": "git://github.com/w3c/webcrypto.git", 69 | "ssh_url": "git@github.com:w3c/webcrypto.git", 70 | "clone_url": "https://github.com/w3c/webcrypto.git", 71 | "svn_url": "https://github.com/w3c/webcrypto", 72 | "homepage": "http://w3c.github.io/webcrypto/Overview.html", 73 | "size": 1302, 74 | "stargazers_count": 51, 75 | "watchers_count": 51, 76 | "language": "HTML", 77 | "has_issues": true, 78 | "has_projects": true, 79 | "has_downloads": true, 80 | "has_wiki": true, 81 | "has_pages": true, 82 | "forks_count": 16, 83 | "mirror_url": null, 84 | "archived": false, 85 | "open_issues_count": 29, 86 | "license": null, 87 | "forks": 16, 88 | "open_issues": 29, 89 | "watchers": 51, 90 | "default_branch": "master", 91 | "organization": { 92 | "login": "w3c", 93 | "id": 379216, 94 | "avatar_url": "https://avatars2.githubusercontent.com/u/379216?v=4", 95 | "gravatar_id": "", 96 | "url": "https://api.github.com/users/w3c", 97 | "html_url": "https://github.com/w3c", 98 | "followers_url": "https://api.github.com/users/w3c/followers", 99 | "following_url": "https://api.github.com/users/w3c/following{/other_user}", 100 | "gists_url": "https://api.github.com/users/w3c/gists{/gist_id}", 101 | "starred_url": "https://api.github.com/users/w3c/starred{/owner}{/repo}", 102 | "subscriptions_url": "https://api.github.com/users/w3c/subscriptions", 103 | "organizations_url": "https://api.github.com/users/w3c/orgs", 104 | "repos_url": "https://api.github.com/users/w3c/repos", 105 | "events_url": "https://api.github.com/users/w3c/events{/privacy}", 106 | "received_events_url": "https://api.github.com/users/w3c/received_events", 107 | "type": "Organization", 108 | "site_admin": false 109 | }, 110 | "network_count": 16, 111 | "subscribers_count": 39 112 | } 113 | -------------------------------------------------------------------------------- /tests/summary-quarterly.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | 5 | 6 | 7 | 8 | 9 | 10 | Repositories 11 | ----- 12 | * w3c/webcrypto 13 | - open issues and pull requests: 29 14 | - activity on issues: +5/-0/💬3 15 | - activity on pull requests: +1/-0/💬1 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Repositories tracked by this digest: 25 | ----------------------------------- 26 | * https://github.com/w3c/webcrypto 27 | 28 | 29 | 30 | 31 | -- 32 | Sent with ♥ 33 | -------------------------------------------------------------------------------- /tests/summary-quarterly.msg.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dontcallmedom/github-notify-ml/2521daa1d69f553d66675991b600563712677bb6/tests/summary-quarterly.msg.html -------------------------------------------------------------------------------- /tests/templates/generic: -------------------------------------------------------------------------------- 1 | ../../templates/generic/ -------------------------------------------------------------------------------- /tests/templates/mls/dom@localhost/push: -------------------------------------------------------------------------------- 1 | [{{repository.name}}] new commits pushed by {{{pusher.name}}} 2 | Per ml template! 3 | The following commits were just pushed by {{{pusher.name}}} to {{{repository.html_url}}}: 4 | 5 | {{#commits}} 6 | * {{{message}}} 7 | by {{{author.name}}} 8 | {{{url}}} 9 | 10 | {{/commits}} 11 | -------------------------------------------------------------------------------- /tests/templates/mls/dom@localhost/w3c/mediacapture-main/issue_comment.created: -------------------------------------------------------------------------------- 1 | Re: [{{{repository.name}}}] {{{issue.title}}} 2 | {{{comment.body}}} 3 | 4 | -- 5 | GitHub Notif of comment by {{{comment.user.login}}} 6 | See {{{comment.html_url}}} 7 | Special template! -------------------------------------------------------------------------------- /tests/trpublished-notif.json: -------------------------------------------------------------------------------- 1 | { 2 | "event": "tr.published", 3 | "specversion": { 4 | "status": "Working Draft", 5 | "uri": "http:\/\/www.w3.org\/TR\/2016\/WD-shacl-ucr-20160122\/", 6 | "date": "2016-01-22", 7 | "informative": false, 8 | "title": "SHACL Use Cases and Requirements", 9 | "shortlink": "http:\/\/www.w3.org\/TR\/odor\/", 10 | "editor_draft": "http:\/\/w3c.github.io\/data-shapes\/data-shapes-ucr\/", 11 | "process_rules": "http:\/\/www.w3.org\/2015\/Process-20150901\/", 12 | "_links": { 13 | "self": { 14 | "href": "https:\/\/api.w3.org\/specifications\/shacl-ucr\/versions\/20160122" 15 | }, 16 | "editors": { 17 | "href": "https:\/\/api.w3.org\/specifications\/shacl-ucr\/versions\/20160122\/editors" 18 | }, 19 | "deliverers": { 20 | "href": "https:\/\/api.w3.org\/specifications\/shacl-ucr\/versions\/20160122\/deliverers" 21 | }, 22 | "specification": { 23 | "href": "https:\/\/api.w3.org\/specifications\/shacl-ucr" 24 | }, 25 | "predecessor-version": { 26 | "href": "https:\/\/api.w3.org\/specifications\/shacl-ucr\/versions\/20160122\/predecessors" 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/trpublished-notif.msg: -------------------------------------------------------------------------------- 1 | MIME-Version: 1.0 2 | Content-Transfer-Encoding: quoted-printable 3 | Content-Type: text/plain; charset="utf-8"; format="flowed" 4 | From: W3C Webmaster via W3C API 5 | To: dom@localhost 6 | Subject: "SHACL Use Cases and Requirements" published as a Working Draft 7 | Message-ID: 8 | 9 | "SHACL Use Cases and Requirements" has just been published as a W3C Working Draft dated 2016-01-22 at http://www.w3.org/TR/2016/WD-shacl-ucr-20160122/. --------------------------------------------------------------------------------