Как войти в Gitlab в программе cpp, используя cURL - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь получить доступ к некоторым файлам .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());

но это ничего не изменило

Спасибо за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...