Closed ckrey closed 5 years ago
Leider kann ich das aber in iOS nicht implementieren:
Beim initialen upload antwortet der Server mit
HTTP/1.1 200 xxxxxxxx yyyyyyy
wobei xxxxx wohl der Hash der Date und yyyyy das Passwort ist.
Leider kommen diese beiden Felder in iOS nicht an, da die HTTP library die „reason-phrase“ richtigerweise ignoriert (s.u. Auszug aus RFC 7230). Besser wäre es wenn Hash und Password im Body oder als ein Header übertragen würden.
3.1.2. Status Line
The first line of a response message is the status-line, consisting
of the protocol version, a space (SP), the status code, another
space, a possibly empty textual phrase describing the status code,
and ending with CRLF.
status-line = HTTP-version SP status-code SP reason-phrase CRLF
The status-code element is a 3-digit integer code describing the
result of the server's attempt to understand and satisfy the client's
corresponding request. The rest of the response message is to be
interpreted in light of the semantics defined for that status code.
See Section 6 of [RFC7231] for information about the semantics of
status codes, including the classes of status code (indicated by the
first digit), the status codes defined by this specification,
considerations for the definition of new status codes, and the IANA
registry.
status-code = 3DIGIT
The reason-phrase element exists for the sole purpose of providing a
textual description associated with the numeric status code, mostly
out of deference to earlier Internet application protocols that were
more frequently used with interactive text clients. A client SHOULD
ignore the reason-phrase content.
reason-phrase = *( HTAB / SP / VCHAR / obs-text )
ich [Ahmet] habe jetzt die Änderungen am Backend vorgenommen, sodass du fileHash und filePassword im Header findest.
Des Weiteren habe ich den Suffix bei der Erstellung des client hashes geändert. Er lautet nun nicht mehr simra_mcc, sondern KsSFazUyht3yQfKv
Folgende Requests sollten funktionieren:
POST:
https://vm1.mcc.tu-berlin.de:8082/10/upload?fileName=2&loc=de&clientHash=ddcb03f0
PUT:
https://vm1.mcc.tu-berlin.de:8082/10/update?fileHash=VM2_983038515&filePassword=bdCPO02fjZ&loc=de&clientHash=ddcb03f0
wobei fileHash und filePassword im Header der Antwort des POST-Requests drinstehen (mit einem Komma getrennt).
@selphiron ah, fileHash und filePassword kommen nicht im als header, sondern in den Daten:
> POST /10/upload?fileName=2&loc=de&clientHash=ddcb03f0 HTTP/1.1
> Host: vm1.mcc.tu-berlin.de:8082
> User-Agent: curl/7.54.0
> Accept: */*
> content-type: text/plain
> Content-Length: 28659
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Date: Thu, 04 Apr 2019 11:14:24 GMT
< Content-Type: text/plain
< Content-Length: 25
< Server: Jetty(9.4.z-SNAPSHOT)
<
<
* Connection #0 to host vm1.mcc.tu-berlin.de left intact
VM2_1566788357,AjE2lGDObW
Initialer Upload:
https://vm1.mcc.tu-berlin.de:8082/9/upload?fileName=2&loc=de&clientHash=eaa555f0
Wenn die Datei einmal hochgeladen ist, ist das Key-Value-Paar (Key = „VM2_“ + Hashwert des Inhalts der Datei, Value = zufällig generiertes Passwort) in einer Hashmap gespeichert. Bei jedem POST wird überprüft, ob die Datei schon vorhanden ist. Falls ja, 404.
Aktualisieren: Um deine Datei mit K,V = VM2_614974187,v9TF7JOBot zu aktualisieren brauchst du folgenden Request:
https://vm1.mcc.tu-berlin.de:8082/9/update?fileHash=VM2_614974187&filePassword=v9TF7JOBot&loc=Berlin&clientHash=af37380f