Module aiogithubapi.namespaces.contents

Methods for the contents namespace

https://docs.github.com/en/rest/reference/repos#contents

Expand source code
"""
Methods for the contents namespace

https://docs.github.com/en/rest/reference/repos#contents
"""
from __future__ import annotations

from typing import Any, Dict

from aiohttp.hdrs import ACCEPT

from ..const import GitHubRequestAcceptHeader, GitHubRequestKwarg, RepositoryType
from ..helpers import repository_full_name
from ..models.contents import GitHubContentsModel
from ..models.response import GitHubResponseModel
from .base import BaseNamespace


class GitHubContentsNamespace(BaseNamespace):
    """Methods for the contents namespace"""

    async def get(
        self,
        repository: RepositoryType,
        path: str | None = None,
        **kwargs: Dict[GitHubRequestKwarg, Any],
    ) -> GitHubResponseModel[GitHubContentsModel | list[GitHubContentsModel]]:
        """
         Get repository content

        Gets the contents of a file or directory in a repository.

        Files and symlinks support a custom media type for retrieving the raw content
        or rendered HTML (when supported). All content types support a custom media
        type to ensure the content is returned in a consistent object format.

         **Arguments**:

         `repository`

         The repository to return contents from, example "octocat/hello-world"

         `path`

         Specify the file path or directory. If you omit this, you will
         receive the contents of the repository's root directory.

        https://docs.github.com/en/rest/reference/repos#get-repository-content
        """
        response = await self._client.async_call_api(
            endpoint=f"/repos/{repository_full_name(repository)}"
            f"/contents{f'/{path}' if path else ''}",
            **{
                GitHubRequestKwarg.HEADERS: {ACCEPT: GitHubRequestAcceptHeader.BASE_JSON},
                **kwargs,
            },
        )

        if isinstance(response.data, list):
            response.data = [GitHubContentsModel(data) for data in response.data]
        else:
            response.data = GitHubContentsModel(response.data)
        return response

Classes

class GitHubContentsNamespace (client: GitHubClient)

Methods for the contents namespace

Initialise the namespace.

Expand source code
class GitHubContentsNamespace(BaseNamespace):
    """Methods for the contents namespace"""

    async def get(
        self,
        repository: RepositoryType,
        path: str | None = None,
        **kwargs: Dict[GitHubRequestKwarg, Any],
    ) -> GitHubResponseModel[GitHubContentsModel | list[GitHubContentsModel]]:
        """
         Get repository content

        Gets the contents of a file or directory in a repository.

        Files and symlinks support a custom media type for retrieving the raw content
        or rendered HTML (when supported). All content types support a custom media
        type to ensure the content is returned in a consistent object format.

         **Arguments**:

         `repository`

         The repository to return contents from, example "octocat/hello-world"

         `path`

         Specify the file path or directory. If you omit this, you will
         receive the contents of the repository's root directory.

        https://docs.github.com/en/rest/reference/repos#get-repository-content
        """
        response = await self._client.async_call_api(
            endpoint=f"/repos/{repository_full_name(repository)}"
            f"/contents{f'/{path}' if path else ''}",
            **{
                GitHubRequestKwarg.HEADERS: {ACCEPT: GitHubRequestAcceptHeader.BASE_JSON},
                **kwargs,
            },
        )

        if isinstance(response.data, list):
            response.data = [GitHubContentsModel(data) for data in response.data]
        else:
            response.data = GitHubContentsModel(response.data)
        return response

Ancestors

Methods

async def get(self, repository: RepositoryType, path: str | None = None, **kwargs: Dict[GitHubRequestKwarg, Any]) ‑> GitHubResponseModel[GitHubContentsModel | list[GitHubContentsModel]]

Get repository content

Gets the contents of a file or directory in a repository.

Files and symlinks support a custom media type for retrieving the raw content or rendered HTML (when supported). All content types support a custom media type to ensure the content is returned in a consistent object format.

Arguments:

repository

The repository to return contents from, example "octocat/hello-world"

path

Specify the file path or directory. If you omit this, you will receive the contents of the repository's root directory.

https://docs.github.com/en/rest/reference/repos#get-repository-content

Expand source code
async def get(
    self,
    repository: RepositoryType,
    path: str | None = None,
    **kwargs: Dict[GitHubRequestKwarg, Any],
) -> GitHubResponseModel[GitHubContentsModel | list[GitHubContentsModel]]:
    """
     Get repository content

    Gets the contents of a file or directory in a repository.

    Files and symlinks support a custom media type for retrieving the raw content
    or rendered HTML (when supported). All content types support a custom media
    type to ensure the content is returned in a consistent object format.

     **Arguments**:

     `repository`

     The repository to return contents from, example "octocat/hello-world"

     `path`

     Specify the file path or directory. If you omit this, you will
     receive the contents of the repository's root directory.

    https://docs.github.com/en/rest/reference/repos#get-repository-content
    """
    response = await self._client.async_call_api(
        endpoint=f"/repos/{repository_full_name(repository)}"
        f"/contents{f'/{path}' if path else ''}",
        **{
            GitHubRequestKwarg.HEADERS: {ACCEPT: GitHubRequestAcceptHeader.BASE_JSON},
            **kwargs,
        },
    )

    if isinstance(response.data, list):
        response.data = [GitHubContentsModel(data) for data in response.data]
    else:
        response.data = GitHubContentsModel(response.data)
    return response