Source code for IGitt.GitLab.GitLabContent

"""
This contains the Content implementation for GitLab.
"""
from typing import Optional
from typing import Union
from urllib.parse import quote_plus

from IGitt.GitLab import GitLabMixin
from IGitt.GitLab import GitLabOAuthToken
from IGitt.GitLab import GitLabPrivateToken
from IGitt.Interfaces import delete
from IGitt.Interfaces import get
from IGitt.Interfaces import put
from IGitt.Interfaces.Content import Content


[docs]class GitLabContent(GitLabMixin, Content): """ This class represents a content on GitHub """ def __init__(self, token: Union[GitLabOAuthToken, GitLabPrivateToken], repository: str, path: str): self._token = token self._repository = repository self._url = ('/projects/' + quote_plus(repository) + '/repository/files/' + path)
[docs] def get_content(self, ref='master'): data = { 'path': self._url, 'ref': ref } self.data = get(token=self._token, url=self.url, params=data)
[docs] def delete(self, message: str, branch: Optional[str]=None): """ Deletes content :param message: The commit message for the deletion commit. :param branch: The branch to delete this content from. Defaults to `master`. """ if branch is None: branch = 'master' data = { 'file_path': self._url, 'branch': branch, 'commit_message': message } delete(self._token, url=self.url, params=data)
[docs] def update(self, message: str, content: str, branch: Optional[str]=None): if branch is None: branch = 'master' data = { 'file_path': self._url, 'commit_message': message, 'branch': branch, 'content' : content } put(token=self._token, url=self.url, data=data)