gitlabr
gitlabr copied to clipboard
how to debug `Not Found (HTTP 404)` issue from `gl_list_projects()`
I'm not sure if this is the best place to get help with this, but I'll try anyway ..
So, I get an error like this:
> library(gitlabr)
> set_gitlab_connection(
+ gitlab_url = "https://renkulab.io/gitlab",
+ private_token = Sys.getenv("GITLAB_COM_TOKEN")
+ )
> gl_list_projects(max_page = 2, owned = FALSE)
Error in http_error_or_content(.) : Not Found (HTTP 404).
And yes, Sys.getenv("GITLAB_COM_TOKEN")
is defined and is correct, because I can use the same token in something like this:
> system('curl https://renkulab.io/gitlab/api/v4/user -H "private-token: [snip]"')
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1024 100 1024 0 0 3778 0 --:--:-- --:--:-- --:--:-- 3764
{"id":478,"username":"mark.robinson","name":"Mark Robinson","state":"active"[snip]
..
> system('curl https://renkulab.io/gitlab/api/v4/projects -H "private-token: [snip]"')
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 98876 0 98876 0 0 97800 0 --:--:-- 0:00:01 --:--:-- 97800
[{"id":22179,"description":null,"name":"eng209-2022-partie1","name_with_namespace":[snip]
I've tried a few other controls:
- accessing my account on gitlab.com, all these commands work
- using the python gitlab module, all the corresponding commands work
- I've done this on 2 Mac computers
I'd really like to use the R package though .. any ideas how to debug / workarounds?
Thanks in advance, Mark
Hi @markrobinsonuzh ,
I do not see any other problem than the token.
Sometimes, I think I used the correct token, but I use the one of another GitLab instance...
Can you write the token directly in the set_gitlab_connection()
?
When you created the token on your renkulab gitlab, did you check the "api" ?
Dear @markrobinsonuzh , Did you try my propositions ? Is your problem still present ? If not, can you tell how you debugged it to help other users who may face this ? And then, close the issue. Thank you for your feedback.
I'm having a similar issue, but I've found some workarounds that indicate there is definitely an issue with how the gitlab()
function works in conjunction with connections created via set_gitlab_connection()
.
If I run:
library(gitlabr)
set_gitlab_connect(gitlab_url = "https://my.gitlab.url",private_token = Sys.getenv("GITLAB_PAT"))
gl_list_projects(max_page = 1,owned = TRUE)
I get a correct list of my projects with their IDs. However, if I then try:
gl_list_files(project = XXXX)
using one of the project ID numbers returned by gl_list_projects()
I get an HTTP 404 error:
Error in http_error_or_content(.) : Not Found (HTTP 404)
However, I can successfully run the list files API request if I load gitlabr
, do NOT create a connection via set_gitlab_connection()
but instead run this directly:
gitlab(c("projects",XXXX,"repository","tree"),
api_root = "https://my.gitlab.url/api/v4",
private_token = Sys.getenv("GITLAB_PAT"),
verb = httr::GET)
Then I get a list of files in the selected project.
Aha! My problem appears to be with an (apparently undocumented) default value for the argument ref
which is fetched from the option gitlabr.main
. It defaults to "main" but if your default primary branch name happens to be something else (like the very common "master") it will return a 404 error, not being able to find a branch called "main". This behavior should probably be much more prominent in the documentation.
- gitlabr is now more verbose when projects are specified by their name, so that you can know if the id was detected
- Documentation for
ref
now specifies that the default is 'main'