Я пытаюсь получить доступ к некоторым файлам .txt, которые находятся на gitlab, используя cURL в программе cpp как таковой
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
void produceFileFromAddress(std::string address,std::string fileName){
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
FILE *listOfDeletions = fopen(fileName.c_str(),"wb");
curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, listOfDeletions);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(listOfDeletions);
listOfDeletions = fopen(fileName.c_str(),"rb");
fseek (listOfDeletions , 0 , SEEK_END);
long lSize = ftell (listOfDeletions);
rewind(listOfDeletions);
char *buffer = new char[lSize+1];
fread (buffer, 1, lSize, listOfDeletions);
buffer[lSize] = 0;
fclose(listOfDeletions);
std::string content(buffer);
delete [] buffer;
}
}
Это прекрасно работает для файлов .txt на веб-адресах, которые защищены паролеминтернет страницы.Однако, когда я пытаюсь использовать его для gitlab, я просто получаю вывод:
<html><body>You are being <a href="https://gitlab.cern.ch/users/sign_in">redirected</a>.</body></html>
.У меня есть имя пользователя и пароль для доступа к нужным мне веб-страницам на gitlab, но я не знаю, как ввести его с помощью cURL в программе на c ++.
Мне удалось создать токен только для чтения из:
https://docs.gitlab.com/ee/api/?fbclid=IwAR1BA6JYO-SwPK6Mdi66YzB9ZCflWVdxs-kxMFhtYs07S17SO5OU0bbCg1w
но я не уверен, как передать этот токен моей программе
Я пытался поместить
std::string auth = "Private-Token: " + token;
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, auth.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
сразу после
curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
но это ничего не изменило
Спасибо за любую помощь