我正在连接BitBucket API,并希望能够将存储库的zip文件下载到服务器。由于存储库是私有的,因此需要用户访问。
我可以通过链接中的用户登录详细信息下载文件:
https://{user}:{pass}@bitbucket.org/{owner_name}/{repository}/get/master.zip
但是我希望能够通过API最有可能通过cURL或任何其他方式使用访问令牌来下载文件。
答案 0 :(得分:1)
我一直在使用此功能从bitbucket下载存储库:
function download($url, $destination) {
try {
$fp = fopen($destination, "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, USERNAME . ":" . PASSWORD);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$resp = curl_exec($ch);
if(curl_errno($ch)){
throw new Exception(curl_error($ch), 500);
}
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status_code != 200) {
throw new Exception("Response with Status Code [" . $status_code . "].", 500);
}
}
catch(Exception $ex) {
if ($ch != null) curl_close($ch);
if ($fp != null) fclose($fp);
throw new Exception('Unable to properly download file from url=[' + $url + '] to path [' + $destination + '].', 500, $ex);
}
if ($ch != null) curl_close($ch);
if ($fp != null) fclose($fp);
}
答案 1 :(得分:0)
我发现通过使用ssh克隆存储库非常有效。通过生成ssh密钥然后通过对Bitbucket API ssh-key执行POST,我可以使用git命令而不受任何限制。我还必须允许.ssh / known_hosts文件中的Bitbucket.org才能访问。
总的来说,如果你想从存储库访问src文件,这种方法是最好的方法。