1
0
mirror of https://github.com/Lunik/gitea_prometheus_exporter.git synced 2025-04-19 22:02:15 +03:00
gitea_exporter/lib/gitea/GiteaAPI.py
Lunik 9c4d222765
remove external library
Signed-off-by: Lunik <lunik@tiwabbit.fr>
2021-03-29 19:58:07 +02:00

65 lines
1.7 KiB
Python

import requests
import json
class GiteaAPI:
def __init__(self, base_url, token, api_version="v1"):
self.base_url = "{url}/api/{version}".format(url=base_url, version=api_version)
self.headers = {
"Authorization": "token {}".format(token),
"Content-type": "application/json",
}
self.requests = requests.Session()
@staticmethod
def parse_response(result):
if result.text and len(result.text) > 3:
return json.loads(result.text)
return {}
def _get_url(self, endpoint):
return "{url}/{endpoint}".format(url=self.base_url, endpoint=endpoint)
def requests_get(self, endpoint, params={}, raw=False):
params = params.copy()
response = self.requests.get(self._get_url(endpoint), headers=self.headers, params=params)
print(response.url)
if raw:
return response
if response.status_code == 204:
return None
if response.status_code not in [200, 201]:
message = "Received status code: %s (%s)" % (
response.status_code,
response.url,
)
if response.status_code in [404]:
raise Exception(message)
if response.status_code in [403]:
raise Exception(
"Unauthorized: %s - Check your permissions and try again! (%s)"
% (response.url, message)
)
if response.status_code in [409]:
raise Exception(message)
raise Exception(message)
result = self.parse_response(response)
if "X-Total-Count" in response.headers and len(result) > 0:
if "page" in params:
params['page'] += 1
else:
params['page'] = 2
result += self.requests_get(endpoint, params=params)
return result