2017-10-28 141 views
0

我正試圖在我公司的企業github服務器上下載回購版本。我有適當的授權標題與OAuth令牌,並能夠獲得發佈端點的響應。這個特殊的回購有源代碼的zip和tarball以及一個編譯的可執行文件。構建的可執行文件就是我正在嘗試下載的文件。釋放請求的響應如下所示,assets密鑰中的browser_download_url密鑰是感興趣的。正在下載Github通過API發佈

{ 
    "url": "***/releases/1491", 
    "assets_url": "***/releases/1491/assets", 
    "upload_url": "***/releases/1491/assets{?name,label}", 
    "html_url": "***/releases/tag/1.0.6", 
    "id": 1491, 
    "tag_name": "1.0.6", 
    "target_commitish": "release-1.0.6", 
    "name": "1.0.6", 
    "draft": false, 
    "prerelease": true, 
    "created_at": "2017-10-03T15:51:25Z", 
    "published_at": "2017-10-10T16:54:16Z", 
    "assets": [ 
     { 
      "url": "***/releases/assets/53", 
      "id": 53, 
      "name": "<program>.exe", 
      "label": null, 
      "content_type": "application/x-msdownload", 
      "state": "uploaded", 
      "size": 36023208, 
      "download_count": 10, 
      "created_at": "2017-10-10T17:40:32Z", 
      "updated_at": "2017-10-10T17:40:32Z", 
      "browser_download_url": "***/1.0.6/<program>.exe" 
     } 
    ], 
    "tarball_url": "***/tarball/1.0.6", 
    "zipball_url": "***/zipball/1.0.6", 
    "body": "<description of release>" 
} 

然而,當我試圖要求browser_download_url我得到的HTML登錄頁面的響應的內容,因爲它正在尋求進一步的驗證。

response = session.get(release_endpoint_response.json()['assets'][0]['browser_download_url'], headers={'Authorization': 'token <personal_access_token>'}) 

我的問題是有沒有辦法從這個鏈接下載,而無需顯式登錄並簡單地使用令牌和標題?
什麼是最好的方式去做這件事? 是否有任何包裝或庫可以幫助我以不同的方式實現這一目標? 非常感謝!

編輯:此外,應該指出的是,當請求tarball和zip網址時,壓縮的源代碼文件可以正常下載。這裏的問題是我有一個不適合的編譯環境,所以我想下載可執行文件。有趣的是,我沒有與zip一樣的身份驗證問題,因爲我使用build exe。

回答

1

我相信已經找到了解決方案here。基本上我需要獲取所需版本的資產ID,然後將Accept頭作爲application/octet-stream包含。只需在發佈端點獲取資源的ID,然後點擊該端點:/repos/:owner/:repo/releases/assets/:id

編輯:這對我來說是工作和功能。被標記爲答案=)