2016-07-10 7 views
0

Ich benutze Python-Gitlab Treiber für die Gitlab API. Folgende Arbeiten auf meinem Repository:Http 404 beim Versuch, Dateien mit Sonderzeichen von GitLab API

>>> 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') 

Allerdings, wenn ich versuche, eine Datei zu öffnen, die einen + Charakter darin enthält, erhalte ich die folgenden, obwohl diese Datei vorhanden ist eindeutig im Repository:

>>> 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 

Wie genau gehe ich über die + in Python gehen, so dass ich den Blob der Datei bekommen kann?

Antwort

0

Die Lösung ist urllib.quote zu verwenden.

python-gitlab ist ein oberflächlicher Wrapper auf die echte Gitlab API. Die Gitlab-API funktioniert auf URL-Anfragen, so dass diese Lösung natürlich erschien:

rf_blob = p.repository_blob(p_latest_commit.id, urllib.quote('iOSBoilerplate/GooglePlus/GoogleOpenSource.framework/Versions/A/Headers/GTMNSString+URLArguments.h')) 
Verwandte Themen