From 6c8b8ae52621e5c9de9d85b2500a3c8e473be359 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Sat, 9 May 2020 16:47:58 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=AE=8C=E6=88=90gists=2013=E4=B8=AA?= =?UTF-8?q?=E9=9C=80=E6=B1=82=EF=BC=8Ccomment=203=E4=B8=AA=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/gists/comment.py | 34 +++++++++++++++++ api/gists/gist.py | 87 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 api/gists/comment.py create mode 100644 api/gists/gist.py diff --git a/api/gists/comment.py b/api/gists/comment.py new file mode 100644 index 0000000..303893c --- /dev/null +++ b/api/gists/comment.py @@ -0,0 +1,34 @@ +from core.rest_client import RestClient + + +class Comment(RestClient): + + def list_comments_on_a_gist(self, gist_id ,**kwargs): + """ + https://developer.github.com/v3/gists/comments#list-comments-on-a-gist #631 + """ + return self.get('/gists/{}/comments'.format(gist_id), **kwargs) + + def get_a_single_comment(self, gist_id,comment_id, **kwargs): + """ + https://developer.github.com/v3/gists/comments#get-a-single-comment #632 + """ + return self.get('/gists/{}/comments/{}'.format(gist_id, comment_id), **kwargs) + + def create_a_comment(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists/comments#create-a-comment #633 + """ + return self.post('/gists/{}/comments'.format(gist_id), **kwargs) + + def edit_a_comment(self ,gist_id, comment_id, **kwargs): + """ + https://developer.github.com/v3/gists/comments/#edit-a-comment + """ + return self.patch('/gists/{}/comments/{}'.format(gist_id, comment_id), **kwargs) + + def delete_a_comment(self ,gist_id, comment_id, **kwargs): + """ + https://developer.github.com/v3/gists/comments/#delete-a-comment + """ + return self.delete('/gists/{}/comments/{}'.format(gist_id, comment_id), **kwargs) \ No newline at end of file diff --git a/api/gists/gist.py b/api/gists/gist.py new file mode 100644 index 0000000..a7291b1 --- /dev/null +++ b/api/gists/gist.py @@ -0,0 +1,87 @@ +from core.rest_client import RestClient +from api.gists.comment import Comment + + +class Gists(RestClient): + + def __init__(self, api_root_url, **kwargs): + super(Gists, self).__init__(api_root_url, **kwargs) + self.comment = Comment(self.api_root_url, **kwargs) + + def list_gists_for_a_user(self, username, **kwargs): + """ + https://developer.github.com/v3/gists/#list-a-users-gists #616 + """ + return self.get('/users/{}/gists'.format(username),**kwargs) + + def list_all_public_gists(self, **kwargs): + """ + https://developer.github.com/v3/gists#list-all-public-gists #617 + """ + return self.get('/gists/public', **kwargs) + + def list_starred_gists(self, **kwargs): + """ + https://developer.github.com/v3/gists#list-starred-gists #618 + """ + return self.get('/gists/starred', **kwargs) + + def get_a_single_gist(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#get-a-single-gist #619 + """ + return self.get('/gists/{}'.format(gist_id), **kwargs) + + def get_a_specific_revision_of_a_gist(self,gist_id, sha, **kwargs): + """ + https://developer.github.com/v3/gists#get-a-specific-revision-of-a-gist #620 + """ + return self.get('/gists/{}/{}'.format(gist_id, sha), **kwargs) + + def create_a_gist(self, **kwargs): + """ + https://developer.github.com/v3/gists#create-a-gist #621 + """ + return self.post('/gists', **kwargs) + + def list_gist_commits(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#list-gist-commits #623 + """ + return self.get('/gists/{}/commits'.format(gist_id), **kwargs) + + def star_a_gist(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#star-a-gist #624 + """ + return self.put('/gists/{}/star'.format(gist_id), **kwargs) + + def unstar_a_gist(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#unstar-a-gist #625 + """ + return self.delete('/gists/{}/star'.format(gist_id), **kwargs) + + def check_if_a_gist_is_starred(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#check-if-a-gist-is-starred #626 + """ + return self.get('/gists/{}/star'.format(gist_id), **kwargs) + + def fork_a_gist(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#fork-a-gist #627 + """ + return self.post('/gists/{}/forks'.format(gist_id), **kwargs) + + def list_gist_forks(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#list-gist-forks #628 + """ + return self.get('/gists/{}/forks'.format(gist_id), **kwargs) + + def delete_a_gist(self, gist_id, **kwargs): + """ + https://developer.github.com/v3/gists#delete-a-gist #629 + """ + return self.delete('/gists/{}'.format(gist_id), **kwargs) \ No newline at end of file From c0891e8d8ae2cc73b4d9c68779bc76c59c58d5c8 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Sun, 10 May 2020 20:00:41 +0800 Subject: [PATCH 02/10] =?UTF-8?q?orgs=E7=9A=84=E6=89=80=E6=9C=89=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/orgs/blocking.py | 23 ++++++++ api/orgs/hooks.py | 41 ++++++++++++++ api/orgs/members.py | 94 +++++++++++++++++++++++++++++++ api/orgs/orgs.py | 25 ++++++++ api/orgs/outside_collaborators.py | 31 ++++++++++ 5 files changed, 214 insertions(+) create mode 100644 api/orgs/blocking.py create mode 100644 api/orgs/hooks.py create mode 100644 api/orgs/members.py create mode 100644 api/orgs/orgs.py create mode 100644 api/orgs/outside_collaborators.py diff --git a/api/orgs/blocking.py b/api/orgs/blocking.py new file mode 100644 index 0000000..ccb174f --- /dev/null +++ b/api/orgs/blocking.py @@ -0,0 +1,23 @@ +from core.rest_client import RestClient + + +class Blocking(RestClient): + + def check_whether_a_user_is_blocked_from_an_organization(self, org, username, **kwargs): + """ + https://developer.github.com/v3/orgs/blocking/#check-whether-a-user-is-blocked-from-an-organization + """ + return self.get('/orgs/{}/blocks/{}'.format(org, username), **kwargs) + + def block_a_user(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/blocking/#block-a-user + """ + return self.put('/orgs/{}/blocks/{}'.format(org,username), **kwargs) + + def unblock_a_user(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/blocking/#unblock-a-user + """ + return self.delete('/orgs/{}/blocks/{}'.format(org,username), **kwargs) + diff --git a/api/orgs/hooks.py b/api/orgs/hooks.py new file mode 100644 index 0000000..b2054f9 --- /dev/null +++ b/api/orgs/hooks.py @@ -0,0 +1,41 @@ +from core.rest_client import RestClient + + +class Hooks(RestClient): + + def ping_a_hook(self,org,hook_id, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks#ping-a-hook + """ + return self.post('/orgs/{}/hooks/{}/pings'.format(org, hook_id), **kwargs) + + def delete_a_hook(self,org,hook_id, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks/#delete-a-hook + """ + return self.delete('/orgs/{}/hooks/{}'.format(org,hook_id), **kwargs) + + def list_hooks(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks/#list-hooks + """ + return self.get('/orgs/{}/hooks'.format(org), **kwargs) + + def edit_a_hook(self,org,hook_id, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks/#edit-a-hook + """ + return self.patch('/orgs/{}/hooks/{}'.format(org,hook_id),**kwargs) + + def create_a_hook(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks/#create-a-hook + """ + return self.post('/orgs/{}/hooks'.format(org), **kwargs) + + def get_single_hook(self,org,hook_id, **kwargs): + """ + https://developer.github.com/v3/orgs/hooks/#get-single-hook + """ + return self.get('/orgs/{}/hooks/{}'.format(org,hook_id), **kwargs) + diff --git a/api/orgs/members.py b/api/orgs/members.py new file mode 100644 index 0000000..d32eacc --- /dev/null +++ b/api/orgs/members.py @@ -0,0 +1,94 @@ +from core.rest_client import RestClient + + +class Members(RestClient): + + def check_public_membership(self,org, username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#check-public-membership + """ + return self.get('orgs/{}/public_members/{}'.format(org, username) ,**kwargs) + + def members_list(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#members-list + """ + return self.get('/orgs/{}/members'.format(org),**kwargs) + + def check_membership(self,org, members, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#check-membership + """ + return self.get('/orgs/{}/members/{}'.format(org, members) ,**kwargs) + + def remove_a_member(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members#remove-a-member + """ + return self.delete('/orgs/{}/members/{}'.format(org,username), **kwargs) + + def public_members_list(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#public-members-list + """ + return self.get('/orgs/{}/public_members'.format(org), **kwargs) + + def edit_your_organization_membership(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#edit-your-organization-membership + """ + return self.patch('/user/memberships/orgs/{}'.format(org), **kwargs) + + def list_your_organization_memberships(self, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#list-your-organization-memberships + """ + return self.get('/user/memberships/orgs', **kwargs) + + def get_your_organization_membership(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#get-your-organization-membership + """ + return self.get('/user/memberships/orgs/{}'.format(org),**kwargs) + + def list_organization_invitation_teams(self,org,invitation_id, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#list-organization-invitation-teams + """ + return self.get('/orgs/{}/invitations/{}/teams'.format(org,invitation_id), **kwargs) + + def create_organization_invitation(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#create-organization-invitation + """ + return self.post('/orgs/{}/invitations'.format(org), **kwargs) + + def list_pending_organization_invitations(self,org, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations + """ + return self.get('/orgs/{}/invitations'.format(org), **kwargs) + + def add_or_update_organization_membership(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#add-or-update-organization-membership + """ + return self.put('/orgs/{}/memberships/{}'.format(org,username), **kwargs) + + def remove_organization_membership(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#remove-organization-membership + """ + return self.delete('/orgs/{}/memberships/{}'.format(org,username), **kwargs) + + def get_organization_membership(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#get-organization-membership + """ + return self.delete('/orgs/{}/memberships/{}'.format(org,username), **kwargs) + + def conceal_a_users_membership(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#conceal-a-users-membership + """ + return self.delete('/orgs/{}/public_members/{}'.format(org,username), **kwargs) \ No newline at end of file diff --git a/api/orgs/orgs.py b/api/orgs/orgs.py new file mode 100644 index 0000000..f5df3b4 --- /dev/null +++ b/api/orgs/orgs.py @@ -0,0 +1,25 @@ +from core.rest_client import RestClient +from api.orgs.blocking import Blocking +from api.orgs.hooks import Hooks +from api.orgs.members import Members +from api.orgs.outside_collaborators import Outside_Collaborators + +class Orgs(RestClient): + + def __init__(self, api_root_url, **kwargs): + super(Orgs, self).__init__(api_root_url, **kwargs) + self.blocking = Blocking(self.api_root_url, **kwargs) + self.hooks =Hooks(self.api_root_url, **kwargs) + self.member = Members(self.api_root_url, **kwargs) + self.outside_collaborators = Outside_Collaborators(self.api_root_url, **kwargs) + + + def remove_a_credential_authorization_for_an_organization(self,org,credential_id, **kwargs): + """ + https://developer.github.com/v3/orgs/#remove-a-credential-authorization-for-an-organization + """ + return self.delete('/orgs/{}/credential-authorizations/{}'.format(org,credential_id),**kwargs) + + + + diff --git a/api/orgs/outside_collaborators.py b/api/orgs/outside_collaborators.py new file mode 100644 index 0000000..280971a --- /dev/null +++ b/api/orgs/outside_collaborators.py @@ -0,0 +1,31 @@ +from core.rest_client import RestClient + + +class Outside_Collaborators(RestClient): + + def convert_member_to_outside_collaborator(self, org, username, **kwargs): + """ + https://developer.github.com/v3/orgs/outside_collaborators/#convert-member-to-outside-collaborator + """ + return self.put('/orgs/{}/outside_collaborators/{}'.format(org, username), **kwargs) + + def publicize_a_users_membership(self,org,username, **kwargs): + """ + https://developer.github.com/v3/orgs/members/#publicize-a-users-membership + """ + return self.put('/orgs/{}/public_members/{}'.format(org,username), **kwargs) + + def remove_outside_collaborator(self,org, username, **kwargs): + """ + https://developer.github.com/v3/orgs/outside_collaborators/#remove-outside-collaborator + """ + return self.delete('/orgs/{}/outside_collaborators/{}'.format(org,username), **kwargs) + + def list_outside_collaborators(self ,org,**kwargs): + """ + https://developer.github.com/v3/orgs/outside_collaborators/#list-outside-collaborators + """ + return self.get('/orgs/{}/outside_collaborators'.format(org), **kwargs) + + + From 1bf3f78df059e1d96827ab520260776cd37dc0b1 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Mon, 11 May 2020 15:38:29 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0get=5Fon=5Forganization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/orgs/orgs.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/orgs/orgs.py b/api/orgs/orgs.py index f5df3b4..e1c45e3 100644 --- a/api/orgs/orgs.py +++ b/api/orgs/orgs.py @@ -20,6 +20,10 @@ def remove_a_credential_authorization_for_an_organization(self,org,credential_id """ return self.delete('/orgs/{}/credential-authorizations/{}'.format(org,credential_id),**kwargs) - + def get_on_organization(self, org, **kwargs): + """ + https://developer.github.com/v3/orgs/#get-an-organization + """ + return self.get('/orgs/{}'.format(org), **kwargs) From 4b00d886fd09468bde4295b291b44f7b14cb7cd7 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Mon, 11 May 2020 23:34:19 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E5=AE=8C=E6=88=90create=5Forg=5Fand=5Fre?= =?UTF-8?q?po=E3=80=81=E5=AE=8C=E6=88=90list=5Forgs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/interactions/interactions.py | 8 +++---- api/orgs/orgs.py | 6 +++++ github.py | 5 ++++ operations/orgs.py | 39 ++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 operations/orgs.py diff --git a/api/interactions/interactions.py b/api/interactions/interactions.py index e70474c..e96263a 100644 --- a/api/interactions/interactions.py +++ b/api/interactions/interactions.py @@ -8,7 +8,7 @@ class Interactions(RestClient): https://developer.github.com/v3/interactions/#interactions """ - def __init__(self, api_root_url, **kwargs): - super(Interactions, self).__init__(api_root_url, **kwargs) - self.orgs = Orgs(self.api_root_url, **kwargs) - self.repos = Repos(self.api_root_url, **kwargs) + # def __init__(self, api_root_url, **kwargs): + # super(Interactions, self).__init__(api_root_url, **kwargs) + # self.orgs = Orgs(self.api_root_url, **kwargs) + # self.repos = Repos(self.api_root_url, **kwargs) diff --git a/api/orgs/orgs.py b/api/orgs/orgs.py index e1c45e3..9b4de1b 100644 --- a/api/orgs/orgs.py +++ b/api/orgs/orgs.py @@ -26,4 +26,10 @@ def get_on_organization(self, org, **kwargs): """ return self.get('/orgs/{}'.format(org), **kwargs) + def list_your_organizations(self, **kwargs): + """ + https://developer.github.com/v3/orgs/#list-your-organizations + """ + return self.get('/user/orgs' ,**kwargs) + diff --git a/github.py b/github.py index d64abc3..d5eccd8 100644 --- a/github.py +++ b/github.py @@ -3,6 +3,9 @@ from api.checks.checks import Checks from api.interactions.interactions import Interactions from api.apps.apps import Apps +from api.orgs.orgs import Orgs +from operations.orgs import create_org_and_repo + class Github(): def __init__(self, **kwargs): @@ -12,4 +15,6 @@ def __init__(self, **kwargs): self.checks = Checks(self.api_root_url, **kwargs) self.interactions = Interactions(self.api_root_url, **kwargs) self.apps = Apps(self.api_root_url, **kwargs) + self.orgs = Orgs(self.api_root_url, **kwargs) + diff --git a/operations/orgs.py b/operations/orgs.py new file mode 100644 index 0000000..d9e2427 --- /dev/null +++ b/operations/orgs.py @@ -0,0 +1,39 @@ +from core.base import CommonItem + + +def create_org_and_repo(github, org, name, description=None, private=None, has_issues=None, has_projects=None, has_wiki=None): + """ + + :param github: github 对象 + :param name: string, repo 名称 + :param org: string, 如果是要在一个organization下建repo,就在这里输入 org 名字;否则默认建在当前用户下。 + :param description: string, repo的描述 + :param private: boolean, 值为 true的时候建立一个私有repo,为 false时建立公开repo,默认是false + :param has_issues: boolean, true会建立有issues的repo, false 则没有,默认是true + :param has_projects: boolean, true会建立有projects的repo, false 则没有,默认是true + :param has_wiki: boolean, true会建立有wiki的repo,false则没有,默认是true + :return: common item + """ + result = CommonItem() + result.success = False + response = github.orgs.get_on_organization(org=org) + + payload = { + "name": name, + "description": description, + "private": private, + "has_issues": has_issues, + "has_projects": has_projects, + "has_wiki": has_wiki + } + + if response.status_code == 200: + response = github.repos.create_organization_repo(org=org,json=payload ) + if response.status_code == 201: + result.success = True + else: + result.error = "create repo got {},should be 201".format(str(response.status_code)) + + return result + + return "failed to create org" \ No newline at end of file From 4bee10ea8bb1c5bfdf3000350a5056be986c7d71 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Tue, 12 May 2020 18:45:47 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/orgs/orgs.py | 7 ++++--- api/repositories/repos.py | 6 ++++++ github.py | 18 ++++++++++++++++++ operations/orgs.py | 6 ++++-- operations/repo.py | 35 ++++++++++++++++++++++++++++++++++- 5 files changed, 66 insertions(+), 6 deletions(-) diff --git a/api/orgs/orgs.py b/api/orgs/orgs.py index 9b4de1b..652e7ed 100644 --- a/api/orgs/orgs.py +++ b/api/orgs/orgs.py @@ -9,7 +9,7 @@ class Orgs(RestClient): def __init__(self, api_root_url, **kwargs): super(Orgs, self).__init__(api_root_url, **kwargs) self.blocking = Blocking(self.api_root_url, **kwargs) - self.hooks =Hooks(self.api_root_url, **kwargs) + self.hooks = Hooks(self.api_root_url, **kwargs) self.member = Members(self.api_root_url, **kwargs) self.outside_collaborators = Outside_Collaborators(self.api_root_url, **kwargs) @@ -20,11 +20,12 @@ def remove_a_credential_authorization_for_an_organization(self,org,credential_id """ return self.delete('/orgs/{}/credential-authorizations/{}'.format(org,credential_id),**kwargs) - def get_on_organization(self, org, **kwargs): + def get_an_organization(self, org, **kwargs): """ https://developer.github.com/v3/orgs/#get-an-organization """ - return self.get('/orgs/{}'.format(org), **kwargs) + headers = {'Accept':'application/vnd.github.surtur-preview+json'} + return self.get('/orgs/{}'.format(org), headers=headers ,**kwargs) def list_your_organizations(self, **kwargs): """ diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 8f599dc..b3961d7 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -83,3 +83,9 @@ def edit_repo(self, owner, repo, **kwargs): https://developer.github.com/v3/repos/#edit """ return self.patch("/repos/{}/{}".format(owner, repo), **kwargs) + + def delete_a_repo(self, owner,repo, **kwargs): + """ + https://developer.github.com/v3/repos/#delete-a-repository + """ + return self.delete('/repos/{}/{}'.format(owner,repo), **kwargs) \ No newline at end of file diff --git a/github.py b/github.py index d5eccd8..41df7d7 100644 --- a/github.py +++ b/github.py @@ -5,6 +5,7 @@ from api.apps.apps import Apps from api.orgs.orgs import Orgs from operations.orgs import create_org_and_repo +import json class Github(): @@ -18,3 +19,20 @@ def __init__(self, **kwargs): self.orgs = Orgs(self.api_root_url, **kwargs) + +if __name__ == '__main__': + g = Github(username="namelaowang", password ="ghl6032069") + + result =g.repos.list_user_repos("namelaowang" ,json={'type':'all'}) + r = result.json() + print(r) + for i in r: + print(i['name']) + + print("---------") + + # result = g.repos.delete_a_repo('namelaowang','repos') + # print(result.status_code) + + + diff --git a/operations/orgs.py b/operations/orgs.py index d9e2427..5e83d24 100644 --- a/operations/orgs.py +++ b/operations/orgs.py @@ -16,7 +16,7 @@ def create_org_and_repo(github, org, name, description=None, private=None, has_i """ result = CommonItem() result.success = False - response = github.orgs.get_on_organization(org=org) + response = github.orgs.get_an_organization(org=org) payload = { "name": name, @@ -36,4 +36,6 @@ def create_org_and_repo(github, org, name, description=None, private=None, has_i return result - return "failed to create org" \ No newline at end of file + return "failed to create org" + + diff --git a/operations/repo.py b/operations/repo.py index 97789f2..a300a5f 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -1,5 +1,5 @@ from core.base import CommonItem - +import json def create_repo(github, name, org=None, description=None, homepage=None, private=False, has_issues=True, has_projects=True, has_wiki=True): @@ -37,3 +37,36 @@ def create_repo(github, name, org=None, description=None, homepage=None, private else: result.error = "create repo got {},should be 201".format(str(response.status_code)) return result + + +def delete_repo_from_user_by_name(github, owner, repo): + """ + + @param github: Github创建出来github对象 + @param owner: 当前登陆的用户 + @param repo: 要删除的repo关键字 + + """ + result = CommonItem() + result.success = False + + paylod = {'try': 'all'} + + response = github.repos.list_user_repos(username=owner, json=paylod) + r = response.json() + + if response.status_code == 200: + + response = github.repos.delete_a_repo(owner=owner, repo=repo) + + if response.status_code == 204: + result.success = True + else: + result.error = "create repo got {},should be 201".format(str(response.status_code)) + + return result + + return '列出repos失败' + + + From 24b09544955d820b881e85f55ffb2694ad1aa581 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Tue, 12 May 2020 23:15:07 +0800 Subject: [PATCH 06/10] delete_repo_from_user_by_name --- api/orgs/orgs.py | 3 +-- github.py | 13 ++----------- operations/repo.py | 36 ++++++++++++++++++++++++------------ 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/api/orgs/orgs.py b/api/orgs/orgs.py index 652e7ed..379fe7e 100644 --- a/api/orgs/orgs.py +++ b/api/orgs/orgs.py @@ -24,8 +24,7 @@ def get_an_organization(self, org, **kwargs): """ https://developer.github.com/v3/orgs/#get-an-organization """ - headers = {'Accept':'application/vnd.github.surtur-preview+json'} - return self.get('/orgs/{}'.format(org), headers=headers ,**kwargs) + return self.get('/orgs/{}'.format(org), **kwargs) def list_your_organizations(self, **kwargs): """ diff --git a/github.py b/github.py index 41df7d7..6762875 100644 --- a/github.py +++ b/github.py @@ -5,7 +5,7 @@ from api.apps.apps import Apps from api.orgs.orgs import Orgs from operations.orgs import create_org_and_repo -import json +from operations.repo import delete_repo_from_user_by_name class Github(): @@ -23,16 +23,7 @@ def __init__(self, **kwargs): if __name__ == '__main__': g = Github(username="namelaowang", password ="ghl6032069") - result =g.repos.list_user_repos("namelaowang" ,json={'type':'all'}) - r = result.json() - print(r) - for i in r: - print(i['name']) - - print("---------") - - # result = g.repos.delete_a_repo('namelaowang','repos') - # print(result.status_code) + print(delete_repo_from_user_by_name(g, 'namelaowang', 'repos')) diff --git a/operations/repo.py b/operations/repo.py index a300a5f..ab6ca99 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -1,6 +1,7 @@ from core.base import CommonItem import json + def create_repo(github, name, org=None, description=None, homepage=None, private=False, has_issues=True, has_projects=True, has_wiki=True): """ @@ -42,31 +43,42 @@ def create_repo(github, name, org=None, description=None, homepage=None, private def delete_repo_from_user_by_name(github, owner, repo): """ - @param github: Github创建出来github对象 - @param owner: 当前登陆的用户 - @param repo: 要删除的repo关键字 + :param github: Github创建出来github对象 + :param owner: 当前登陆的用户 + :param repo: 要删除的repo关键字 """ + import re + delete_list = [] result = CommonItem() result.success = False paylod = {'try': 'all'} - + # 列出当前用户的所有repos response = github.repos.list_user_repos(username=owner, json=paylod) - r = response.json() - if response.status_code == 200: - response = github.repos.delete_a_repo(owner=owner, repo=repo) + r = response.json() + + for i in r: + # 从该账户的所有repos中,匹配出所有带有"repo"关键字的repos + restring = re.match('.*{}.*'.format(repo), i['name']) + + if restring == None: + continue + delete_list.append(restring.group()) + + for delete_repo in delete_list: + response = github.repos.delete_a_repo(owner=owner, repo=delete_repo) - if response.status_code == 204: - result.success = True - else: - result.error = "create repo got {},should be 201".format(str(response.status_code)) + if response.status_code == 204: + result.success = True + else: + result.error = "delete repo got {},should be 204".format(str(response.status_code)) return result - return '列出repos失败' + return ['list the repos fail','https://developer.github.com/v3/repos/#list-user-repositories'] From 3df8929d6390d20505b98c5a2003e4c812ba553d Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Wed, 13 May 2020 18:15:31 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=88=A0=E9=99=A4createte=5Forgs?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- github.py | 1 - operations/orgs.py | 41 ----------------------------------------- operations/repo.py | 1 - 3 files changed, 43 deletions(-) delete mode 100644 operations/orgs.py diff --git a/github.py b/github.py index 6762875..d86b646 100644 --- a/github.py +++ b/github.py @@ -4,7 +4,6 @@ from api.interactions.interactions import Interactions from api.apps.apps import Apps from api.orgs.orgs import Orgs -from operations.orgs import create_org_and_repo from operations.repo import delete_repo_from_user_by_name diff --git a/operations/orgs.py b/operations/orgs.py deleted file mode 100644 index 5e83d24..0000000 --- a/operations/orgs.py +++ /dev/null @@ -1,41 +0,0 @@ -from core.base import CommonItem - - -def create_org_and_repo(github, org, name, description=None, private=None, has_issues=None, has_projects=None, has_wiki=None): - """ - - :param github: github 对象 - :param name: string, repo 名称 - :param org: string, 如果是要在一个organization下建repo,就在这里输入 org 名字;否则默认建在当前用户下。 - :param description: string, repo的描述 - :param private: boolean, 值为 true的时候建立一个私有repo,为 false时建立公开repo,默认是false - :param has_issues: boolean, true会建立有issues的repo, false 则没有,默认是true - :param has_projects: boolean, true会建立有projects的repo, false 则没有,默认是true - :param has_wiki: boolean, true会建立有wiki的repo,false则没有,默认是true - :return: common item - """ - result = CommonItem() - result.success = False - response = github.orgs.get_an_organization(org=org) - - payload = { - "name": name, - "description": description, - "private": private, - "has_issues": has_issues, - "has_projects": has_projects, - "has_wiki": has_wiki - } - - if response.status_code == 200: - response = github.repos.create_organization_repo(org=org,json=payload ) - if response.status_code == 201: - result.success = True - else: - result.error = "create repo got {},should be 201".format(str(response.status_code)) - - return result - - return "failed to create org" - - diff --git a/operations/repo.py b/operations/repo.py index ab6ca99..2f819fa 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -1,5 +1,4 @@ from core.base import CommonItem -import json def create_repo(github, name, org=None, description=None, homepage=None, private=False, has_issues=True, From e5a35610e624118ed6c11d1c797b2a8ccc664caa Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Thu, 14 May 2020 23:46:25 +0800 Subject: [PATCH 08/10] =?UTF-8?q?5=E6=9C=8814=E6=97=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- operations/repo.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/operations/repo.py b/operations/repo.py index 2f819fa..2ccfebd 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -80,4 +80,7 @@ def delete_repo_from_user_by_name(github, owner, repo): return ['list the repos fail','https://developer.github.com/v3/repos/#list-user-repositories'] +def + + From 2586e96193530190429622ad11a1e63581f1cd86 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Fri, 15 May 2020 16:09:10 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90create=5Frepo?= =?UTF-8?q?=5Fand=5Fbranch=5Fwith=5Fhelloword?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- github.py | 7 +++---- operations/repo.py | 32 ++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/github.py b/github.py index d86b646..5a6f47c 100644 --- a/github.py +++ b/github.py @@ -18,11 +18,10 @@ def __init__(self, **kwargs): self.orgs = Orgs(self.api_root_url, **kwargs) - if __name__ == '__main__': g = Github(username="namelaowang", password ="ghl6032069") - print(delete_repo_from_user_by_name(g, 'namelaowang', 'repos')) - - + r = g.repos.branches.add_required_status_checks_contexts_of_protected_branch('namelaowang', 'TestapiTest', 'master') + print(r) + print(r.content) diff --git a/operations/repo.py b/operations/repo.py index 2ccfebd..d681105 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -52,9 +52,9 @@ def delete_repo_from_user_by_name(github, owner, repo): result = CommonItem() result.success = False - paylod = {'try': 'all'} + payload = {'try': 'all'} # 列出当前用户的所有repos - response = github.repos.list_user_repos(username=owner, json=paylod) + response = github.repos.list_user_repos(username=owner, json=payload) if response.status_code == 200: r = response.json() @@ -77,10 +77,34 @@ def delete_repo_from_user_by_name(github, owner, repo): return result - return ['list the repos fail','https://developer.github.com/v3/repos/#list-user-repositories'] + return ['list the repos fail', 'https://developer.github.com/v3/repos/#list-user-repositories'] -def +def create_repo_and_branch_with_helloword(github, owner, name, branch, description=None, homepage=None, private=False, + has_issues=True, has_projects=True, has_wiki=True): + + payload = { + "name": name, + "description": description, + "homepage": homepage, + "private": private, + "has_issues": has_issues, + "has_projects": has_projects, + "has_wiki": has_wiki + } + # 创建仓库 + response_repos = github.repos.create_user_repo(json =payload) + if response_repos.status_code == 201: + # 创建分支 + response_branch = github.repos.branches.add_required_status_checks_contexts_of_protected_branch( + owner=owner, repo=name, branch=branch) + if response_branch == 200: + # 上传文件 + pass + + return "创建分支失败" + + return "创建仓库失败" From c2b07a7d9c7331ef3e88cb48700add5ff777cf18 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Wed, 20 May 2020 09:41:40 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=96=87?= =?UTF-8?q?=E4=BB=B6repos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- operations/repo.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/operations/repo.py b/operations/repo.py index d681105..a509290 100644 --- a/operations/repo.py +++ b/operations/repo.py @@ -21,6 +21,8 @@ def create_repo(github, name, org=None, description=None, homepage=None, private "name": name, "description": description, "homepage": homepage, + + "private": private, "has_issues": has_issues, "has_projects": has_projects,