2016-07-10 4 views
0

Gitlab API用にpython-gitlabドライバを使用しています。私のリポジトリで次の作業罰金:GitLab APIから特殊文字を含むファイルを取得しようとするとHTTP 404が発生する

>>> rf_blob = p.repository_blob(p_latest_commit.id, 'iOSBoilerplate/GooglePlus/GoogleOpenSource.framework/Versions/A/Headers/GTMOAuth2Authentication.h') 
>>> rf_blob = p.repository_blob(p_latest_commit.id, 'iOSBoilerplate/GooglePlus/GoogleOpenSource.framework/Versions/A/Headers/GTMOAuth2SignIn.h') 

しかし、私はそれに+文字を含むファイルを開こうとすると、私はそのファイルが明確にリポジトリに存在していても、次の取得:

>>> rf_blob = p.repository_blob(p_latest_commit.id, 'iOSBoilerplate/GooglePlus/GoogleOpenSource.framework/Versions/A/Headers/GTMNSString+URLArguments.h') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/site-packages/gitlab/objects.py", line 1521, in repository_blob 
    raise_error_from_response(r, GitlabGetError) 
    File "/usr/local/lib/python2.7/site-packages/gitlab/exceptions.py", line 140, in raise_error_from_response 
    response_body=response.content) 
gitlab.exceptions.GitlabGetError: 404: 404 File Not Found 

+をpythonでエスケープすると、ファイルのブロブをどのように取得できますか?

答えて

0

解決策は、urllib.quoteを使用することです。

python-gitlabは、本物のGitlab APIの表面的なラッパーです。 Gitlab APIはurlリクエストで機能するので、このソリューションは自然のようでした。

rf_blob = p.repository_blob(p_latest_commit.id, urllib.quote('iOSBoilerplate/GooglePlus/GoogleOpenSource.framework/Versions/A/Headers/GTMNSString+URLArguments.h')) 
関連する問題