Need crash course in Dropbox library

pink nabble at mad.pink
Tue Feb 19 12:30:43 EST 2019


I still need to do some testing and fiddle with a few things, but here's what
I've got so far, authentication is handled in a different handler, the
access token is passed as a parameter:

command dropBoxUploader pAccessToken
   local tMyFolder = "/Downloads"
   local tMyFileShortFilename = "abc.mp4"
   local tMyFilePath = "/Downloads/abc.mp4"
   local tChunkSize = 157286400
   local tStep = 0
   local tBytesProcessed = 0
   local tOffset = 0
   local tDestPath = "/somefolder/abc.mp4"
   local tFileDescription, tBytesRemaining, tBytesThisRead, tResult,
tSession
   
   filter files(tMyFolder, "detailed") with tMyFileShortFilename & ",*" 
into tFileDescription 
   put item 2 of tFileDescription into tBytesRemaining 
   put tChunkSize into tBytesThisRead 
   open file tMyFilePath for binary read 
   repeat until tBytesRemaining = 0 
      read from file tMyFilePath for tBytesThisRead 
      put it into tData
      subtract length(tData) from tBytesRemaining 
      add 1 to tStep
      if tStep = 1 then
         dropboxUploadSessionStart pAccessToken, tData 
      else if tBytesRemaining = 0 then
         dropboxUploadSessionFinish pAccessToken, tSession, tOffset,
tDestPath, "add", true,  false, tData
      else
         dropboxUploadSessionAppend pAccessToken, tSession, tOffset, tData 
      end if
      put jsonToArray(the result) into tResult[tStep]
      if tResult[tStep]["error"] is not empty then
         exit repeat
      end if
      put tResult[1]["session_id"] into tSession
      add tBytesThisRead to tOffset
      put min(tChunkSize, tBytesRemaining) into tBytesThisRead 
   end repeat 
   close file tMyFilePath 
end dropBoxUploader


JJS via use-livecode wrote
> I'm not sure how this would work in your context, but one way to break 
> up a file into pieces is to use open / read / close like this:
> 
>     # assumes LC 9.0.2
>     # tMyFolder = path of folder containing the file to upload
>     # tMyFileShortFilename = 'short' filename of file to upload - no
>     path, just the filename
>     # tMyFilePath = full path of file to upload
> 
>     filter files(tMyFolder, "detailed") with tMyFileShortFilename & ",*"
>     into tFileDescription
>     put item 2 of tFileDescription into tBytesRemaining
>     put 0 into tBytesProcessed
>     put 157286400 into tChunkSize -- 150 MB
>     put tChunkSize into tBytesThisRead
>     open file tMyFilePath for binary read
>     repeat until tBytesRemaining = 0
>          read from file tMyFilePath for tBytesThisRead
>          subtract length(it) from tBytesRemaining
>          _processChunk it
>          put min(tChunkSize, tBytesRemaining) into tBytesThisRead
>     end repeat
>     close file tMyFilePath
> 
> Your upload would be done in the '_processChunk' handler.
> 
> HTH -
> Phil Davis
> 
> 
> On 2/18/19 5:21 AM, pink via use-livecode wrote:
>> I'm getting a little closer...
>>
>> 1. how do I break fileContents into smaller pieces?
>> 2. how do I properly calculate the pOffset value?
>>
>>
>> Matthias Rebbe via use-livecode wrote
>>> Hey pink
>>> Yes, you are just going to put 150MB at a time into the pData parameter
>>> and
>>> ship it.
>>> I have not uploaded any binary files, just encoded text files, so you
>>> may
>>> have to fiddle with encoding to make sure you don't get into any
>>> trouble.
>>> You should be able to open/read the files using
>>> put url "binfile:/"&somefilename into fileContents
>>>
>>> On Sun, Feb 17, 2019 at 10:42 AM pink via use-livecode <
>>> use-livecode at .runrev
>>>> wrote:
>>>> the phxDropbox library is for v1 of the Dropbox API, which has been
>>>> deprecated
>>>>
>>>> what I need is to get a handle of the upload session commands, how do I
>>>> properly break the file data into seperate sessions, and how do i
>>>> determine
>>>> the offset value
>>>>
>>>>
>>>> Matthias Rebbe via use-livecode wrote
>>>>> Don't know if this works anymore but before i used this:
>>>>>
>>>>>
>>>>> *on*openstack
>>>>>
>>>>> *if* thereisnotastack"phxDropboxLib"*then*
>>>>>
>>>>> *put*GetPathToFile("phxDropboxLib.livecode") intophxLib
>>>>>
>>>>> *start*usingstackphxLib
>>>>>
>>>>> *else* *if* "phxDropboxLib"isnotamongthelinesofthestacksinuse*then*
>>>>>
>>>>> *start*usingstack"phxDropboxLib"
>>>>>
>>>>> *end* *if*
>>>>>
>>>>> *--*
>>>>>
>>>>> *if* "phxDropboxLib"isnotamongthelinesofthestacksinuse*then*
>>>>>
>>>>> *answer*error"Unable to load phxDropboxLib"
>>>>>
>>>>> *quit*
>>>>>
>>>>> *end* *if*
>>>>>
>>>>> *constant*myAppKey = "appappappapp"
>>>>>
>>>>> *constant*myAppSec = "secsecsec"
>>>>>
>>>>> *constant*myTokKey = "toktoktoktok"
>>>>>
>>>>> *constant*myTokSec = "sectoksectok"
>>>>>
>>>>> *--*
>>>>>
>>>>> *if* notphx_DropboxAvailable() *then*
>>>>>
>>>>> *answer*"Dropbox HTTPS connection NOT available"
>>>>>
>>>>> *end* *if*
>>>>>
>>>>> *get*phx_DropboxInitLib(myAppKey, myAppSec, myTokKey, myTokSec)
>>>>>
>>>>> end openCard
>>>>>
>>>>> ----reading----
>>>>>
>>>>> *put*phx_DropboxReadFile("sandbox", ("/folder/some.txt"))
>>>>> intoField"Name1"ofcard1
>>>>>
>>>>> ----writing------
>>>>>
>>>>> *put*phx_DropboxWriteFile("sandbox", ("/folder/some.txt"),
>>>>> "text/html",
>>>>> true, myName) intofield"udontcme"ofcard1
>>>>>
>>>>> ------close-----------
>>>>>
>>>>> *on*closeStack
>>>>>
>>>>> *set*theuTokenKey ofthisstacktoempty
>>>>>
>>>>> *set*theuTokenSec ofthisstacktoempty
>>>>>
>>>>> *stop*usingstack"phxDropboxLib"
>>>>>
>>>>> *close*stack"phxDropboxLib"
>>>>>
>>>>> *pass*closeStack
>>>>>
>>>>> *end*closeStack
>>>>>
>>>>> Op 16-2-2019 om 00:23 schreef pink via use-livecode:
>>>>>> under the documentation for dropboxUpload,  it states it shouldn't be
>>>>>> used
>>>>>> for files larger than 150MB, the video files will all be around 800MB
>>>>>>
>>>>>> I've been looking through the stack, but cannot find the answers I am
>>>>>> looking for. SO I am still not clear how I should get my file into
>>>> pData
>>>>>> and pData is just a chunk of the data? How do I make that chunk out
>>>>>> of
>>>>>> the
>>>>>> whole and where do I get pOffset from?
>>>>>>
>>>>>>
>>>>>> Matthias Rebbe via use-livecode wrote
>>>>>>> Hey, pink, thanks for the clarification.
>>>>>>> First of all, is there a reason why you are doing it this way
>>>>>>> instead
>>>> of
>>>>>>> using dropboxUpload?  If you use dropboxUpload you can do it all in
>>>> one
>>>>>>> shot.
>>>>>>> Gerard's stack explains the process and how to use the various
>>>> commands
>>>>>>> Doing it the way you are doing it, you would start with sessionStart
>>>> and
>>>>>>> then you would repeatedly call sessionAppend
>>>>>>> pOffset is the length of what you have already sent because there
>>>>>>> are
>>>> no
>>>>>>> guarantees that dropbox will get your file stream in order, so if it
>>>>>>> gets
>>>>>>> them out of order and pData isn't the same length for each call to
>>>>>>> append,
>>>>>>> the only way dropbox knows where to put the data it just received is
>>>> if
>>>>>>> you
>>>>>>> tell it where to put it.
>>>>>>> pData should be at most 150mb per call.
>>>>>>> _______________________________________________
>>>>>>> use-livecode mailing list
>>>>>>> use-livecode at .runrev
>>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>>> subscription preferences:
>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>>
>>>>>>
>>>>>>
>>>>>> -----
>>>>>> ---
>>>>>> Greg (pink) Miller
>>>>>> mad, pink and dangerous to code
>>>>>> --
>>>>>> Sent from:
>>>>>>
>>>> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html
>>>>>> _______________________________________________
>>>>>> use-livecode mailing list
>>>>>>
>>>>> use-livecode at .runrev
>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>>> subscription preferences:
>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode at .runrev
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>
>>>>
>>>>
>>>>
>>>> -----
>>>> ---
>>>> Greg (pink) Miller
>>>> mad, pink and dangerous to code
>>>> --
>>>> Sent from:
>>>> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html
>>>>
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>>
>>> use-livecode at .runrev
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>
>>>
>>> -- 
>>> On the first day, God created the heavens and the Earth
>>> On the second day, God created the oceans.
>>> On the third day, God put the animals on hold for a few hours,
>>>     and did a little diving.
>>> And God said, "This is good."
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at .runrev
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>>
>>
>> -----
>> ---
>> Greg (pink) Miller
>> mad, pink and dangerous to code
>> --
>> Sent from:
>> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html
>>
>> _______________________________________________
>> use-livecode mailing list
>> 

> use-livecode at .runrev

>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
> 
> -- 
> Phil Davis
> 
> _______________________________________________
> use-livecode mailing list

> use-livecode at .runrev

> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





-----
---
Greg (pink) Miller
mad, pink and dangerous to code
--
Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html




More information about the use-livecode mailing list