0

Hilfe! Dropbox RestAPI

Hallo Froum,

Dropbox hat seine API umgestellt und erwartet für den Endpunkt "content" nun keinen Body mehr, sondern alles im Header.

Ich versuche nun schon seit Stunden erfolglos meinen Dateipfad zu übermitteln.

Wie gesagt, der Endpunkt "api" läuft wie gewohnt mit 

let auth := {

Authorization: "Bearer dfökdfhäkdsfhäksdfhäskdfhäskdfh",

'Content-Type' ...usw

}

 

Der Endpunkt "content" möchte aber nun:

curl -X POST https://content.dropboxapi.com/2/files/get_preview \
--header "Authorization: Bearer " \
--header "Dropbox-API-Arg: {\"path\": \"/word.docx\"}"

 

über 

let auth := {

Authorization: "Bearer dfökdfhäkdsfhäksdfhäskdfhäskdfh",

'Dropbox-API-Arg' : {\"path\": \"/word.docx\"}

}

läuft es nicht...

Ich muss alles in den URL Request stecken, damit es geht

http("POST", "https://content.dropboxapi.com/2/files/get_preview?authorization=Bearer dhdshgdshfeefgmfj75WfJwMyYdcrNejak--U8X4Mnv5?arg="

 

jetzt muss aber noch das "arg" im Format {\"path\": \"/Mein/Pfad/Datei.pdf\"} mit in den Request - und da komme ich nicht weiter. Gibt es eine chance das als JSON im http request zu übermitteln?

POSTMAN gibt mir übrigens aus:

Error in call to API function "files/get_preview": URL parameter "arg": could not decode input as JSON

Hat da jemand eine Idee?

6 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich weiß nicht ob es hilft aber mit der Funktion url (string,object) bekommt man eine korrekt kodierte url:

     

    url(urlstring,{
    arg1:volume1,
    arg2:volume2,
    arg3:volume3
    })

    ergibt

     urlstring?arg1=volume1&arg2=volume2&arg3=volume3

    Leo

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    es hat tatsächlich am Ende so funktioniert, allerdings ist die Dropbox API leider was PDFs angeht etwas störrisch. Man kann über einen "share" link ein PDF direkt downloaden - das bringt mir aber nichts für die NINOX importFile funktion. Ich habe nun letztendlich alle Daten auf meinen FTP Server gelegt und kann von da aus via importFile auf die PDF zugreifen.

     

    Ich habe allerdings ein Problem mit Sonderzeichen. vielleicht hast Du da einen Tipp.

    Ich habe Unterordner im FTP auf die ich via importFile(this, Link) zugreife. Den Link setze ich mir vorher aus einem Feld "Ordner", einem Feld "Dateiname" und hard codiertem http-Pfad zusammen. Leider ergeben alle importFile mit einem Sonderzeichen im Link keinen korrekten download. Mit urlEncode usw. kann ich nicht arbeiten, da die Ordner auf dem Server ja tatsächlich so heißen, wie sie heißen. z.B: "212990699_Berlin_Bürgerstraße 55". 

     

    Danke 

    Tobias

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias,

    versuche es mal so:

    ---
    let me:=this;
    let downloadURL:=DEINPFAD+"/"+urlEncode(me.Ordner)+"/"+urlEncode(me.Dateiname);
    importFile(this, downloadURL,me.Dateiname)
    ---

    Leo

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, danke für den hinweis. Leider führt das nicht zum Erfolg. 

    Aus "212990271_Berlin_Schönhauser Straße 1"  wird dadurch "212990271_Berlin_Sch%C3%B6nhauser%20Stra%C3%9Fe%201" - und dieser Ordner existiert ja so nicht.

    Da muss im Hintergrund etwas falsch laufen bei der codierung von Sonderzeichen in der importFile Funktion.

    Schade, da muss ich wohl manuell die Ordner auf dem FTP Server bereinigen. Mit replace() komm ich ja auch nicht weiter - die Ordner haben numal Straße und Umlaute im Namen...

     

    Danke Dir trotzdem

    LG

    Tobias

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias,

    ich habe jetzt auf unserem Server einen Ordner "212990271_Berlin_Schönhauser Straße 1" erstellt und dort eine Datei namens "pöäd.pdf" gespeichert. Mit der Formel:

    let downloadURL:=DEINPFAD+"/"+urlEncode("212990271_Berlin_Schönhauser Straße 1")+"/"+urlEncode("pöäd.pdf");
    importFile(this, downloadURL,"pöäd.pdf")

     

    wird die Datei "pöäd.pdf" mit diesem Namen in Ninox gespeichert. 

     

    Leo

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Leo,

    ich bin das heute mit frischem Kopf und frischem Kaffee nochmal angegangen - du hast recht, es funktioniert so! Vielleicht waren es gestern zu viele Lösungsansätze :)

    Auf jeden Fall danke für deine Mühe das nachzuvollziehen!

     

    LG

    Tobias