Added new endpoints
This commit is contained in:
pare
b5a2ed22ab
commit
99158f33c8
S'han modificat 2 arxius amb 163 adicions i 23 eliminacions
178
Gitea.py
178
Gitea.py
|
@ -3,6 +3,22 @@ import sys
|
||||||
import requests
|
import requests
|
||||||
from requests.models import urlencode
|
from requests.models import urlencode
|
||||||
|
|
||||||
|
###
|
||||||
|
# Dict helper class.
|
||||||
|
# Defined at top level so it can be pickled.
|
||||||
|
###
|
||||||
|
class AttribAccessDict(dict):
|
||||||
|
def __getattr__(self, attr):
|
||||||
|
if attr in self:
|
||||||
|
return self[attr]
|
||||||
|
else:
|
||||||
|
raise AttributeError("Attribute not found: " + str(attr))
|
||||||
|
|
||||||
|
def __setattr__(self, attr, val):
|
||||||
|
if attr in self:
|
||||||
|
raise AttributeError("Attribute-style access is read only")
|
||||||
|
super(AttribAccessDict, self).__setattr__(attr, val)
|
||||||
|
|
||||||
class Gitea:
|
class Gitea:
|
||||||
|
|
||||||
name = 'Gitea API wrapper'
|
name = 'Gitea API wrapper'
|
||||||
|
@ -45,11 +61,9 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('POST', endpoint, data)
|
response = self.__api_request('POST', endpoint, data)
|
||||||
|
|
||||||
is_registered = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
message = response.json()['message']
|
return response
|
||||||
|
|
||||||
return (is_registered, message)
|
|
||||||
|
|
||||||
def admin_users_list(self, page=None, limit=None):
|
def admin_users_list(self, page=None, limit=None):
|
||||||
|
|
||||||
|
@ -65,11 +79,9 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('GET', endpoint)
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
response_ok = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
user_list = response.json()
|
return response
|
||||||
|
|
||||||
return (response_ok, user_list)
|
|
||||||
|
|
||||||
def notifications_new(self):
|
def notifications_new(self):
|
||||||
|
|
||||||
|
@ -77,11 +89,27 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('GET', endpoint)
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
response_ok = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
notifications = response.json()
|
return response
|
||||||
|
|
||||||
return (response_ok, notifications)
|
###
|
||||||
|
### repository
|
||||||
|
###
|
||||||
|
|
||||||
|
def repos_get_repo(self, owner, repo):
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/repos/{0}/{1}'.format(owner, repo, formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
def repos_issues_search(self, owner, state=None, labels=None, q=None, milestones=None, priority_repo_id=None, issue_type=None, since=None, before=None, assigned=None,
|
def repos_issues_search(self, owner, state=None, labels=None, q=None, milestones=None, priority_repo_id=None, issue_type=None, since=None, before=None, assigned=None,
|
||||||
created=None, mentioned=None, review_requested=None, team=None, page=None, limit=None):
|
created=None, mentioned=None, review_requested=None, team=None, page=None, limit=None):
|
||||||
|
@ -128,11 +156,9 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('GET', endpoint)
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
response_ok = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
issues = response.json()
|
return response
|
||||||
|
|
||||||
return (response_ok, issues)
|
|
||||||
|
|
||||||
def repos_owner_repo_issues(self, owner, repo, state=None, labels=None, q=None, issue_type=None, milestones=None, since=None, before=None, created_by=None, assigned_by=None,
|
def repos_owner_repo_issues(self, owner, repo, state=None, labels=None, q=None, issue_type=None, milestones=None, since=None, before=None, created_by=None, assigned_by=None,
|
||||||
mentioned_by=None, page=None, limit=None):
|
mentioned_by=None, page=None, limit=None):
|
||||||
|
@ -168,11 +194,9 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('GET', endpoint)
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
response_ok = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
notifications = response.json()
|
return response
|
||||||
|
|
||||||
return (response_ok, notifications)
|
|
||||||
|
|
||||||
def repos_owner_repo_issues_comments(self, owner, repo, since=None, before=None, page=None, limit=None):
|
def repos_owner_repo_issues_comments(self, owner, repo, since=None, before=None, page=None, limit=None):
|
||||||
"""
|
"""
|
||||||
|
@ -191,11 +215,111 @@ class Gitea:
|
||||||
|
|
||||||
response = self.__api_request('GET', endpoint)#, data)
|
response = self.__api_request('GET', endpoint)#, data)
|
||||||
|
|
||||||
response_ok = response.ok
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
comments = response.json()
|
return response
|
||||||
|
|
||||||
return (response_ok, comments)
|
def repo_owner_get_metada(self, owner, repo, filepath):
|
||||||
|
"""
|
||||||
|
Gets the metadata and contents (if a file) of an entry in a repository, or list of entries if a dir
|
||||||
|
"""
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/repos/{0}/{1}/contents/{2}?{3}'.format(owner, repo, filepath, formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
def repo_owner_create_file(self, owner, repo, filepath, author_email, author_name, branch, message):
|
||||||
|
"""
|
||||||
|
Create a file in a repository
|
||||||
|
"""
|
||||||
|
|
||||||
|
data = {"author":[{"email":author_email},{"name":author_name}],
|
||||||
|
"branch":branch,
|
||||||
|
"message":message
|
||||||
|
}
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/repos/{0}/{1}/contents/{2}?{3}'.format(owner, repo, filepath, formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('POST', endpoint, data=data)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
def repo_owner_update_file(self, owner, repo, filepath, author_email, author_name, branch, message, sha):
|
||||||
|
"""
|
||||||
|
Update a file in a repository
|
||||||
|
"""
|
||||||
|
data = {"author":[{"email":author_email},{"name":author_name}],
|
||||||
|
"branch":branch,
|
||||||
|
"message":message,
|
||||||
|
"sha":sha
|
||||||
|
}
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/repos/{0}/{1}/contents/{2}?{3}'.format(owner, repo, filepath, formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('PUT', endpoint, data=data)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
def repo_owner_delete_file(self, owner, repo, filepath, author_email, author_name, branch, message, sha):
|
||||||
|
"""
|
||||||
|
Delete a file in a repository
|
||||||
|
"""
|
||||||
|
data = {"author":[{"email":author_email},{"name":author_name}],
|
||||||
|
"branch":branch,
|
||||||
|
"commiter":[{"email":author_email},{"name":author_name}],
|
||||||
|
"message":message,
|
||||||
|
"new_branch":branch,
|
||||||
|
'sha':sha
|
||||||
|
}
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/repos/{0}/{1}/contents/{2}?{3}'.format(owner, repo, filepath, formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('DELETE', endpoint, data=data)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
def user(self):
|
||||||
|
"""
|
||||||
|
Get the authenticated user
|
||||||
|
"""
|
||||||
|
|
||||||
|
params = dict()
|
||||||
|
params['token'] = self.access_token
|
||||||
|
formatted_params = urlencode(params)
|
||||||
|
|
||||||
|
endpoint = self.api_base_url + '/api/v1/user?{0}'.format(formatted_params)
|
||||||
|
|
||||||
|
response = self.__api_request('GET', endpoint)
|
||||||
|
|
||||||
|
response = self.__json_allow_dict_attrs(response.json())
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __check_setup(self):
|
def __check_setup(self):
|
||||||
|
@ -304,6 +428,16 @@ class Gitea:
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def __json_allow_dict_attrs(json_object):
|
||||||
|
"""
|
||||||
|
Makes it possible to use attribute notation to access a dicts
|
||||||
|
elements, while still allowing the dict to act as a dict.
|
||||||
|
"""
|
||||||
|
if isinstance(json_object, dict):
|
||||||
|
return AttribAccessDict(json_object)
|
||||||
|
return json_objecte
|
||||||
|
|
||||||
##
|
##
|
||||||
# Exceptions
|
# Exceptions
|
||||||
##
|
##
|
||||||
|
|
|
@ -16,9 +16,15 @@ Python Wrapper for Gitea API (WIP)
|
||||||
gitea.admin_users_create()
|
gitea.admin_users_create()
|
||||||
gitea.admin_users_list()
|
gitea.admin_users_list()
|
||||||
gitea.notifications_new()
|
gitea.notifications_new()
|
||||||
|
gitea.repos_get_repo()
|
||||||
gitea.repos_issues_search()
|
gitea.repos_issues_search()
|
||||||
gitea.repos_owner_repo_issues()
|
gitea.repos_owner_repo_issues()
|
||||||
gitea.repos_owner_repo_issues_comments()
|
gitea.repos_owner_repo_issues_comments()
|
||||||
|
gitea.repo_owner_get_metada()
|
||||||
|
gitea.repo_owner_create_file()
|
||||||
|
gitea.repo_owner_update_file()
|
||||||
|
gitea.repo_owner_delete_file()
|
||||||
|
gitea.user()
|
||||||
|
|
||||||
Some of above methods will need required params that will be shown to you when running them. In ex.:
|
Some of above methods will need required params that will be shown to you when running them. In ex.:
|
||||||
|
|
||||||
|
|
Loading…
Referencia en una nova incidència