Hi

I have successfully used the dropbox component for download, upload and delete 
files.
You can see my implementation below, cause there was some important issues to 
solve before it worked

Actually the only problem I have is the expired_token. The generated token 
(which I created in the app console) does always expire after 4 hours and then 
I get the error message from the component:
InvalidAccessTokenException: {"error_summary": "expired_access_token/...", 
"error": {".tag": "expired_access_token"}}

I read about other SDK which access the dropbox API, that the API does handle 
to refresh the access_token if its expired.
What is my mistake? Is there a way to generate a permament access_token in 
dropbox itself or how?

Here is my route for DOWNLOAD:
from("timer://simpleTimer?period=10000")
       .to("dropbox://get?accessToken={{dropbox.accessToken}}"
              + "&clientIdentifier={{drobbox.clientIdentifier}}"
              + "&remotePath=/from_cellular")
       .log("Dropbox download 'from Cellular': Check if there are files 
available from Cellular in DropBox CellularEDI")
       .choice()
              .when(simple("${header:DOWNLOADED_FILES} == ''"))
                    .log("Dropbox download: No files available")
              .when(simple("${header:DOWNLOADED_FILES} == null && 
${header:DOWNLOADED_FILE} != ''"))
                    .log("Dropbox download: 1 file available: 
'${header:DOWNLOADED_FILE}'")
                    
.to("file:{{dir.from.cellular}}?fileName=${header:DOWNLOADED_FILE}")
                    .toD("dropbox://del?accessToken={{dropbox.accessToken}}"
                           + "&clientIdentifier={{drobbox.clientIdentifier}}"
                           + "&remotePath=${header:DOWNLOADED_FILE}")
              .when(simple("${header:DOWNLOADED_FILES} != '' && 
${header:DOWNLOADED_FILE} == null"))
                    .log("Dropbox download: Several files available: 
'${header:DOWNLOADED_FILES}'")
                    .split(simple("${in.body.entrySet}"))
                    .setHeader("DropBoxFileName", simple("${body.getKey}"))
                    .setBody(simple("${body.getValue}"))
                    .log("Dropbox download: Save file: 
${header.DropBoxFileName}")
                    
.to("file:{{dir.from.cellular}}?fileName=${header.DropBoxFileName}")
                    .toD("dropbox://del?accessToken={{dropbox.accessToken}}"
                           + "&clientIdentifier={{drobbox.clientIdentifier}}"
                           + "&remotePath=${header.DropBoxFileName}");

Here is my route for UPLOAD:
from("file:{{dir.to.cellular}}?preMove=.inprogress&move=.done&delay=1000")
       .log("Dropbox upoad: Trying to upload file ${file:name} to DropBox 
CellularEDI")
       .setHeader(DropboxConstants.HEADER_PUT_FILE_NAME, simple("${file:name}"))
       .to("dropbox://put?accessToken={{dropbox.accessToken}}"
             + "&clientIdentifier={{drobbox.clientIdentifier}}"
             + "&uploadMode=force"
             + "&remotePath=/to_cellular/")
       // The upload does not work if I don't put the last '/'
       .choice()
              .when(simple("${body} == 'OK'"))
             .log("Dropbox upload success: File ${file:name} was uploaded to 
DropBox folder: ${header:UPLOADED_FILE}")
       .otherwise()
             .log("Dropbox upload FAILED: File ${file:name} Failed with result: 
${body}");


Environment:
Camel 3.16.0
SpringBoot 2.6.4
Java 11

Reto

Reply via email to