feat(column): move, edit and delete project columns (#1497)

Add support to move, edit and delete project columns.
This commit is contained in:
Florent Clarret
2020-05-05 15:50:28 +10:00
committed by GitHub
parent a1ed7c0e2d
commit a32a896599
9 changed files with 161 additions and 14 deletions
+44
View File
@@ -146,6 +146,50 @@ class ProjectColumn(github.GithubObject.CompletableGithubObject):
self._requester, headers, data, completed=True
)
def move(self, position):
"""
:calls: `POST POST /projects/columns/:column_id/moves <https://developer.github.com/v3/projects/columns/#move-a-project-column>`_
:param position: string
:rtype: bool
"""
assert isinstance(position, str), position
post_parameters = {"position": position}
status, _, _ = self._requester.requestJson(
"POST",
self.url + "/moves",
input=post_parameters,
headers={"Accept": Consts.mediaTypeProjectsPreview},
)
return status == 201
def delete(self):
"""
:calls: `DELETE /projects/columns/:column_id <https://developer.github.com/v3/projects/columns/#delete-a-project-column`_
:rtype: bool
"""
status, _, _ = self._requester.requestJson(
"DELETE", self.url, headers={"Accept": Consts.mediaTypeProjectsPreview},
)
return status == 204
def edit(self, name):
"""
:calls: `PATCH /projects/columns/:column_id <https://developer.github.com/v3/projects/columns/#update-a-project-column>`_
:param name: string
:rtype: None
"""
assert isinstance(name, str), name
patch_parameters = {"name": name}
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
input=patch_parameters,
headers={"Accept": Consts.mediaTypeProjectsPreview},
)
self._useAttributes(data)
def _initAttributes(self):
self._cards_url = github.GithubObject.NotSet
self._created_at = github.GithubObject.NotSet
+4
View File
@@ -34,3 +34,7 @@ class ProjectColumn(CompletableGithubObject):
def updated_at(self) -> datetime: ...
@property
def url(self) -> str: ...
def move(self, position: str) -> bool: ...
def delete(self) -> bool: ...
def edit(self, name: str) -> None: ...
+37 -14
View File
@@ -28,33 +28,38 @@ from . import Framework
class ProjectColumn(Framework.TestCase):
def setUp(self):
super().setUp()
self.project_column = self.g.get_project_column(8700460)
self.get_project_column = self.g.get_project_column(8700460)
self.move_project_column = self.g.get_project_column(8748065)
def testGetProjectColumn(self):
self.assertEqual(self.project_column.id, 8700460)
self.assertEqual(self.project_column.name, "c1")
self.assertEqual(self.get_project_column.id, 8700460)
self.assertEqual(self.get_project_column.name, "c1")
self.assertEqual(
self.project_column.cards_url,
self.get_project_column.cards_url,
"https://api.github.com/projects/columns/8700460/cards",
)
self.assertEqual(
self.project_column.node_id, "MDEzOlByb2plY3RDb2x1bW44NzAwNDYw"
self.get_project_column.node_id, "MDEzOlByb2plY3RDb2x1bW44NzAwNDYw"
)
self.assertEqual(
self.project_column.project_url, "https://api.github.com/projects/4294766"
self.get_project_column.project_url,
"https://api.github.com/projects/4294766",
)
self.assertEqual(
self.project_column.url, "https://api.github.com/projects/columns/8700460"
self.get_project_column.url,
"https://api.github.com/projects/columns/8700460",
)
self.assertEqual(
self.project_column.created_at, datetime.datetime(2020, 4, 13, 20, 29, 53)
self.get_project_column.created_at,
datetime.datetime(2020, 4, 13, 20, 29, 53),
)
self.assertEqual(
self.project_column.updated_at, datetime.datetime(2020, 4, 14, 18, 9, 38)
self.get_project_column.updated_at,
datetime.datetime(2020, 4, 14, 18, 9, 38),
)
def testGetAllCards(self):
cards = self.project_column.get_cards(archived_state="all")
cards = self.get_project_column.get_cards(archived_state="all")
self.assertEqual(cards.totalCount, 3)
self.assertEqual(cards[0].id, 36285184)
self.assertEqual(cards[0].note, "Note3")
@@ -64,13 +69,13 @@ class ProjectColumn(Framework.TestCase):
self.assertEqual(cards[2].note, "Note1")
def testGetArchivedCards(self):
cards = self.project_column.get_cards(archived_state="archived")
cards = self.get_project_column.get_cards(archived_state="archived")
self.assertEqual(cards.totalCount, 1)
self.assertEqual(cards[0].id, 36281516)
self.assertEqual(cards[0].note, "Note1")
def testGetNotArchivedCards(self):
cards = self.project_column.get_cards(archived_state="not_archived")
cards = self.get_project_column.get_cards(archived_state="not_archived")
self.assertEqual(cards.totalCount, 2)
self.assertEqual(cards[0].id, 36285184)
self.assertEqual(cards[0].note, "Note3")
@@ -78,7 +83,7 @@ class ProjectColumn(Framework.TestCase):
self.assertEqual(cards[1].note, "Note2")
def testGetCards(self):
cards = self.project_column.get_cards()
cards = self.get_project_column.get_cards()
self.assertEqual(cards.totalCount, 2)
self.assertEqual(cards[0].id, 36285184)
self.assertEqual(cards[0].note, "Note3")
@@ -86,6 +91,24 @@ class ProjectColumn(Framework.TestCase):
self.assertEqual(cards[1].note, "Note2")
def testCreateCard(self):
new_card = self.project_column.create_card(note="NewCard")
new_card = self.get_project_column.create_card(note="NewCard")
self.assertEqual(new_card.id, 36290228)
self.assertEqual(new_card.note, "NewCard")
def testDelete(self):
project_column = self.g.get_project_column(8747987)
self.assertTrue(project_column.delete())
def testEdit(self):
self.move_project_column.edit("newTestColumn")
self.assertEqual(self.move_project_column.id, 8748065)
self.assertEqual(self.move_project_column.name, "newTestColumn")
def testMoveFirst(self):
self.assertTrue(self.move_project_column.move(position="first"))
def testMoveLast(self):
self.assertTrue(self.move_project_column.move(position="last"))
def testMoveAfter(self):
self.assertTrue(self.move_project_column.move(position="after:8700460"))
+10
View File
@@ -9,3 +9,13 @@ None
[('Date', 'Tue, 14 Apr 2020 18:17:57 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4971'), ('X-RateLimit-Reset', '1586891696'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"71d35582bd4b20a516cb5f77785e78f7"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'E8EE:6E5A:25E489C:2CBBC06:5E95FE55')]
{"url":"https://api.github.com/projects/columns/8700460","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8700460/cards","id":8700460,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzAwNDYw","name":"c1","created_at":"2020-04-13T20:29:53Z","updated_at":"2020-04-14T18:09:38Z"}
https
GET
api.github.com
None
/projects/columns/8748065
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Thu, 16 Apr 2020 05:51:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4949'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"300ff83801042bc987edec9dded63773"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D59E:FA92:18965F9:1CB2924:5E97F252')]
{"url":"https://api.github.com/projects/columns/8748065","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8748065/cards","id":8748065,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ4MDY1","name":"newTestColumn","created_at":"2020-04-16T05:42:37Z","updated_at":"2020-04-16T05:44:21Z"}
@@ -0,0 +1,22 @@
https
GET
api.github.com
None
/projects/columns/8747987
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Thu, 16 Apr 2020 05:35:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4968'), ('X-RateLimit-Reset', '1587018428'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"aa3a7d465eb2292ad4dae97e54d06bc1"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', 'D4DC:200F7:11C86CC:14C5AC2:5E97EE86')]
{"url":"https://api.github.com/projects/columns/8747987","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8747987/cards","id":8747987,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ3OTg3","name":"test","created_at":"2020-04-16T05:34:23Z","updated_at":"2020-04-16T05:34:23Z"}
https
DELETE
api.github.com
None
/projects/columns/8747987
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
None
204
[('Date', 'Thu, 16 Apr 2020 05:35:03 GMT'), ('Server', 'GitHub.com'), ('Status', '204 No Content'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4967'), ('X-RateLimit-Reset', '1587018428'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('X-GitHub-Request-Id', 'D4DE:18633:3644A6:3E3C58:5E97EE87')]
@@ -0,0 +1,11 @@
https
PATCH
api.github.com
None
/projects/columns/8748065
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
{"name": "newTestColumn"}
200
[('Date', 'Thu, 16 Apr 2020 05:44:21 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Server', 'GitHub.com'), ('Status', '200 OK'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4958'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"300ff83801042bc987edec9dded63773"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('X-GitHub-Request-Id', '8556:29EB3:181AABA:1C1A3C6:5E97F0B4')]
{"url":"https://api.github.com/projects/columns/8748065","project_url":"https://api.github.com/projects/4294766","cards_url":"https://api.github.com/projects/columns/8748065/cards","id":8748065,"node_id":"MDEzOlByb2plY3RDb2x1bW44NzQ4MDY1","name":"newTestColumn","created_at":"2020-04-16T05:42:37Z","updated_at":"2020-04-16T05:44:21Z"}
@@ -0,0 +1,11 @@
https
POST
api.github.com
None
/projects/columns/8748065/moves
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
{"position": "after:8700460"}
201
[('Date', 'Thu, 16 Apr 2020 05:51:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4948'), ('X-RateLimit-Reset', '1587018428'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D5A0:29EAD:D1CCE7:F3F095:5E97F253')]
{}
@@ -0,0 +1,11 @@
https
POST
api.github.com
None
/projects/columns/8748065/moves
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
{"position": "first"}
201
[('Date', 'Thu, 16 Apr 2020 05:50:57 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4954'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D58C:E2C8:12DBE29:15FC0D8:5E97F240')]
{}
@@ -0,0 +1,11 @@
https
POST
api.github.com
None
/projects/columns/8748065/moves
{'Accept': 'application/vnd.github.inertia-preview+json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
{"position": "last"}
201
[('Date', 'Thu, 16 Apr 2020 05:51:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '2'), ('Server', 'GitHub.com'), ('Status', '201 Created'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4951'), ('X-RateLimit-Reset', '1587018429'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With'), ('ETag', '"5cdeb7b7e65678a2f212994c02e98f49"'), ('X-OAuth-Scopes', 'admin:enterprise, admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete:packages, delete_repo, gist, notifications, read:packages, repo, user, workflow, write:discussion, write:packages'), ('X-Accepted-OAuth-Scopes', 'public_repo, repo'), ('X-GitHub-Media-Type', 'github.inertia-preview; format=json'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '1; mode=block'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('X-GitHub-Request-Id', 'D59A:18639:129F5E7:15BB83D:5E97F249')]
{}