Retrieves a file's metadata and content as structured data via the
GET /projects/{id_project}/repository/files/{path} endpoint of GitLab's v4
RESTful API.
Usage
file_full(
path,
id_project = funky::config_val("id_project"),
ref = "HEAD",
base_url = funky::config_val("base_url"),
token = funky::config_val("token"),
max_tries = 3L
)Arguments
- path
character(1)
File path, relative to the repository root.- id_project
integer(1)
GitLab project identifier.- ref
character(1)
Git revision expression matching the desired Git tree object, e.g. a ref name (branch, tag, etc.), a commit identifier, or another symbolic reference like"HEAD~10". Omitted ifNULL, otherwise set as a URL parameter in the API request. Note that the GitLab API doesn't support every type of revision expression.- base_url
character(1)
Base URL to the GitLab v4 RESTful API root.- token
character(1)
GitLab access token used for authentication. IfNULL, the API request is made unauthenticated which results in HTTP 404 Not Found and other errors for non-public resources.- max_tries
integer(1)
Maximum number of request attempts in case of an HTTP error. An integerish scalar. Retries are performed using exponential backoff and jitter, seehttr2::req_retry()for details.
Details
Note that it is more efficient to use
file_content()to only retrieve a file's content.file_meta()to only retrieve a single metadata entry.
See also
Other functions to manage files on GitLab:
commit_files(),
file_commit_action(),
file_content(),
file_create(),
file_delete(),
file_exists(),
file_meta(),
file_req(),
file_update(),
file_write(),
files_delete()
Examples
gitlab::file_full(path = "DESCRIPTION",
id_project = 64767928,
ref = "9c2fe95c63fef013205fe5ff64dd30494579f3f2")
#> $file_name
#> [1] "DESCRIPTION"
#>
#> $file_path
#> [1] "DESCRIPTION"
#>
#> $size
#> [1] 1055
#>
#> $encoding
#> [1] "base64"
#>
#> $content_sha256
#> [1] "052e6000c95e374a5cf0eb2003c13373c17746cf2b129d43df3ef148b0d9099f"
#>
#> $ref
#> [1] "9c2fe95c63fef013205fe5ff64dd30494579f3f2"
#>
#> $blob_id
#> [1] "98c56652d8eb2ccdedd4a2ef60d3196c6a6a794c"
#>
#> $commit_id
#> [1] "9c2fe95c63fef013205fe5ff64dd30494579f3f2"
#>
#> $last_commit_id
#> [1] "9c2fe95c63fef013205fe5ff64dd30494579f3f2"
#>
#> $execute_filemode
#> [1] FALSE
#>
#> $content
#> [1] "UGFja2FnZTogZ2l0bGFiClRpdGxlOiBVc2UgR2l0TGFiJ3MgdjQgUkVTVGZ1bCBBUEkKVmVyc2lvbjogMC4wLjkwMDAKQXV0aG9yc0BSOiAKICAgIHBlcnNvbigiU2FsaW0iLCAiQnLDvGdnZW1hbm4iLCAsICJzYWxpbS1iQHBtLm1lIiwgcm9sZSA9IGMoImF1dCIsICJjcmUiKSwKICAgICAgICAgICBjb21tZW50ID0gYyhPUkNJRCA9ICIwMDAwLTAwMDItNTMyOS01OTg3IikpCkRlc2NyaXB0aW9uOiBBbGxvd3MgdG8gY29udmVuaWVudGx5IHdvcmsgd2l0aCBHaXRMYWIncyB2NCBSRVNUZnVsIEFQSSBmcm9tCiAgICBSLiBHaXRMYWIgKGh0dHBzOi8vZ2l0bGFiLmNvbSkgaXMgYW4gb3Blbi1zb3VyY2UgRGV2T3BzIHNvZnR3YXJlIHN1aXRlCiAgICB0aGF0IGkuYS4gaW5jbHVkZXMgYSBwb3dlcmZ1bCBHaXQgZm9yZ2UuCkxpY2Vuc2U6IEFHUEwgKD49IDMpClVSTDogaHR0cHM6Ly9naXRsYWIucnBrZy5kZXYsIGh0dHBzOi8vZ2l0bGFiLmNvbS9ycGtnLmRldi9naXRsYWIKQnVnUmVwb3J0czogaHR0cHM6Ly9naXRsYWIuY29tL3Jwa2cuZGV2L2dpdGxhYi9pc3N1ZXMKRGVwZW5kczogCiAgICBSICg+PSA0LjQpCkltcG9ydHM6IAogICAgYmFzZTY0ZW5jICg+PSAwLjEuMyksCiAgICBicmlvICg+PSAxLjEuNSksCiAgICBjaGVja21hdGUgKD49IDIuMy4yKSwKICAgIGNsaSAoPj0gMy42LjMpLAogICAgZGlnZXN0ICg+PSAwLjYuMzcpLAogICAgZHBseXIgKD49IDEuMS40KSwKICAgIGZzICg+PSAxLjYuNSksCiAgICBnbHVlICg+PSAxLjguMCksCiAgICBoZWNrICg+PSAwLjEuMyksCiAgICBodHRyMiAoPj0gMS4wLjYpLAogICAganNvbmxpdGUgKD49IDEuOC45KSwKICAgIG1hZ3JpdHRyICg+PSAyLjAuMyksCiAgICBwYWwgKD49IDAuMC45MTAxKSwKICAgIHB1cnJyICg+PSAxLjAuMiksCiAgICBybGFuZyAoPj0gMS4xLjQpLAogICAgc3RyaW5nciAoPj0gMS41LjEpLAogICAgdGliYmxlICg+PSAzLjIuMSkKRW5jb2Rpbmc6IFVURi04CkxhenlEYXRhOiB0cnVlClJveHlnZW46IGxpc3QobWFya2Rvd24gPSBUUlVFKQpSb3h5Z2VuTm90ZTogNy4zLjIuOTAwMAo="
#>