Backup em nuvem com DropBox via API
Moderador: Moderadores
Backup em nuvem com DropBox via API
Olá pessoal,
Alguém já fez o envio de arquivos para o DropBox usando a API?
tipo assim:
oHttp := CreateObject("MSXML2.ServerXMLHTTP.6.0")
oHttp:Open("POST", "https://content.dropboxapi.com/2/files/upload", .f.)
oHttp:setRequestHeader("Authorization","Bearer " + alltrim(Taux_Token) )
oHttp:setRequestHeader("Content-Type", "application/octet-stream")
oHttp:setRequestHeader("Dropbox-API-Arg", '{"path":"/codechain/extrato.pdf","mode":"add","autorename":true,"mute":false}' )
oHttp:Send(Arquivo)
Alguém já fez o envio de arquivos para o DropBox usando a API?
tipo assim:
oHttp := CreateObject("MSXML2.ServerXMLHTTP.6.0")
oHttp:Open("POST", "https://content.dropboxapi.com/2/files/upload", .f.)
oHttp:setRequestHeader("Authorization","Bearer " + alltrim(Taux_Token) )
oHttp:setRequestHeader("Content-Type", "application/octet-stream")
oHttp:setRequestHeader("Dropbox-API-Arg", '{"path":"/codechain/extrato.pdf","mode":"add","autorename":true,"mute":false}' )
oHttp:Send(Arquivo)
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

-
LoftSide16
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 27 Abr 2024 14:54
- Localização: Sao Paulo/ SP
Backup em nuvem com DropBox via API
Sim, é possível enviar arquivos para o Dropbox usando a API. O código que você compartilhou parece estar no formato do xBase++, mas a lógica básica de envio é semelhante em várias linguagens. Certifique-se de que você tenha uma chave de API válida e que esteja autorizada para acessar o Dropbox. Além disso, verifique se o arquivo que você está enviando está sendo passado corretamente para a API. Se estiver tudo configurado corretamente, o arquivo deve ser enviado para o Dropbox com sucesso.
-
ivanil
- Usuário Nível 3

- Mensagens: 180
- Registrado em: 11 Set 2004 15:13
- Localização: Florianópolis/SC
Backup em nuvem com DropBox via API
Queria que as coisas fossem tão fáceis como essas respostas de IA colocam no grupo... palavras bem colocadas, mas que não levam a lugar algum..
Mas se quiser trilhar este outro caminho, veja a fonte oficial https://www.dropbox.com/developers/documentation;
Boa sorte;
Ivanil
Não poderei ajudar porque não sou usuário da plataforma; mas acredito que a melhor forma de lidar com isso é usando a sincronização do próprio equipamento.LoftSide16 escreveu:Sim, é possível enviar arquivos para o Dropbox usando a API. O código que você compartilhou parece estar no formato do xBase++, mas a lógica básica de envio é semelhante em várias linguagens. Certifique-se de que você tenha uma chave de API válida e que esteja autorizada para acessar o Dropbox. Além disso, verifique se o arquivo que você está enviando está sendo passado corretamente para a API. Se estiver tudo configurado corretamente, o arquivo deve ser enviado para o Dropbox com sucesso.
Mas se quiser trilhar este outro caminho, veja a fonte oficial https://www.dropbox.com/developers/documentation;
Boa sorte;
Ivanil
Backup em nuvem com DropBox via API
Pessoal eu tenho a chave de acesso e consigo fazer o download o que não consigo é fazer o upload porque não sei como enviar o arquivo, já tentei varias maneiras de enviar e todas sem sucesso, eu só preciso saber como colocar os dados do arquivo no corpo da mensagem, já tentei usando o memoread para ler o conteúdo, já tentei mandar como base64.
todos estes testes foi utilizando o xHarbour
todos estes testes foi utilizando o xHarbour
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Backup em nuvem com DropBox via API
outro detalhe, consigo enviar arquivo texto fazendo a leitura do texto e enviando e o arquivo é criado no DropBox, só não consigo é enviar PDF e arquivo Zipado
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

- JoséQuintas
- Administrador

- Mensagens: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Backup em nuvem com DropBox via API
O que estou vendo nessa linha é um nome do arquivo talvez remoto e não local.Wanderlei escreveu:oHttp:setRequestHeader("Dropbox-API-Arg", '{"path":"/codechain/extrato.pdf","mode":"add","autorename":true,"mute":false}' )
Se fosse local seria o path completo, e não relativo.
A resposta deve estar na documentação da API.
Se for assim, é pesquisar como fazer o mesmo com conteúdo binário, talvez o json do harbour faça isso.Wanderlei escreveu:outro detalhe, consigo enviar arquivo texto fazendo a leitura do texto e enviando e o arquivo é criado no DropBox, só não consigo é enviar PDF e arquivo Zipado
Ou talvez olhando a classe hbtip, pra ver como ela indica o formato e como converte.
Não sei se o formato gzip é traduzido automático pelo webservice, mas é usado em NFE.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Backup em nuvem com DropBox via API
descobri que o formato é esse:
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

- JoséQuintas
- Administrador

- Mensagens: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Backup em nuvem com DropBox via API
formato pra comunicação, e não formato do arquivo local.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Backup em nuvem com DropBox via API
Pessoal caso alguém queira fazer o backup no dropBox, eu consegui fazendo assim com estas funções abaixo:
Código: Selecionar todos
********************************************************************************
FUNCTION DropBox_UpLoad( cFile )
********************************************************************************
LOCAL cUrl := "https://content.dropboxapi.com/2/files/upload"
LOCAL cBuffer, nBytes, aBlocks, cFilePath := ''
LOCAL cPath, cFileName, cExtension, cAno := '', cMes := ''
if !InternetOK() //Verifica se tem internet
MsgInfo('Sem conexão com a internet','Atenção')
Return .T.
endif
if empty(Dropbox_AccessToken)
Return .T.
endif
if !File(cFile)
Return .F.
endif
Atualiza_MsgProc('Aguarde, processando o upload')
cAno := strzero(year(Date()),4)
cMes := strzero(Month(Date()),2)
DropBox_Creat_Folder( cAno ) //Cria uma pasta dentro do DropBox
DropBox_Creat_Folder( cAno + '/' + cMes ) //Cria uma sub-pasta dentro do DropBox
HB_FNameSplit( cFile, @cPath, @cFileName, @cExtension ) //Pega o nome do arquivo e a extensão
cFilePath := cAno + '/' + cMes + '/' + cFileName + cExtension + '.base64' //Cria um nome para o arquivo zipado
nTamanhoBk := FileSize(cFile) //Retorna o tamanho do arquivo que irá subir
aRetorno := DropBox_Get_SPace() //Retorna o espaço no DropBox
if nTamanhoBk > aRetorno[3] //Compara o tamanho do Arquivo com o espaço liberado no DropBox
AbrePadrao('https://www.dropbox.com') //Abre o site do DropBox com o navegador padrão
MsgInfo("Espaço insuficiente no Dropbox"+LF+;
"Por favor, apague alguns arquivos para liberar espaço.","Atenção")
aRetorno := DropBox_Get_SPace() //Retorna o espaço no DropBox
if nTamanhoBk > aRetorno[3] //Verifica novamente se o espaço liberado é suficiente
Msginfo('upload do arquivo falhou,espaço insuficiente.','Atenção')
Return .f.
endif
endif
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("User-Agent" , 'api-explorer-client' )
oServer:setRequestHeader("Content-Type" , 'application/octet-stream' )
oServer:setRequestHeader("Dropbox-API-Arg" , '{"path":"/'+cFilePath+'","mode":{".tag":"add"},"autorename":true,"mute":true,"strict_conflict":true}' )
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return .t.
END
//Daqui para baixo faz a leitura do arquivo que será zipado com Base64
nFileHandle := FOpen( cFile )
nFileSize := 0
IF FError() <> 0
Return .F.
ENDIF
nFileSize := FSeek( nFileHandle, 0, FS_END )
cStream := Space( nFileSize )
FSeek( nFileHandle, 0, FS_SET )
FRead( nFileHandle, @cStream, nFileSize )
FClose( nFileHandle )
oServer:send( HB_Base64Encode( cStream, len(cStream) ) ) //Envia o arquivo para o DropBox
if oServer:Status == 200 //Status de retorno, 200 OK
Msginfo('Upload do arquivo enviado com sucesso.','Atenção')
else
if oServer:Status == 401 .or. oServer:Status == 400
Msginfo('Token expirado, favor renovar o Token no site do DropBox','Atenção')
cAccessToken := ""
if empty(Dropbox_AppKey)
AbrePadrao('https://www.dropbox.com/developers/apps/') //Abre o navegador padrão para o usuario gerar o token de acesso
else
AbrePadrao('https://www.dropbox.com/developers/apps/info/'+alltrim(Dropbox_AppKey))
endif
MsgGet("Informar Access Token","Access Token", "@x", "X", @cAccessToken ) //Informa aqui o token gerado no site para continuar
if !empty(cAccessToken)
//Grava o token de acesso no banco de dados
oSql:StartTransaction()
oSql:EXECUTE( "update param_integra set dropbox_token='"+cAccessToken+" ' ")
oSql:Commit()
Dropbox_AccessToken := cAccessToken
DropBox_UpLoad( cFile ) //Envia o arquivo para o DropBox
endif
else
cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
Msginfo('Falha no envio do arquivo' + LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'UpLoad')
endif
Return .F.
endif
RETURN .T.
********************************************************************************
Function DropBox_Download( cFile,cCaminho )
********************************************************************************
*cFile = Nome do arquivo que será baixado do DropBox
*cCaminho = Pasta dentro o DropBox onde o arquivo foi gravado
********************************************************************************
Local cUrl := 'https://content.dropboxapi.com/2/files/download'
LOCAL cPath, cFileName, cExtension
if !InternetOK() //Verifica sem tem internet
MsgInfo('Sem conexão com a internet','Atenção')
Return .T.
endif
if empty(Dropbox_AccessToken)
Return .T.
endif
Atualiza_MsgProc('Aguarde, processando o Download')
HB_FNameSplit( cFile, @cPath, @cFileName, @cExtension ) //Pega o nome do arquivo e a extensão
cFilePath := cFileName + cExtension + '.base64' //Nome do arquivo no DropBox que subiu zipado
if !empty(cCaminho)
cCaminho := cCaminho+'/'
endif
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("User-Agent" , "api-explorer-client" )
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("Dropbox-API-Arg" , '{"path":"/'+cCaminho+ cFilePath + '"}' )
oServer:send() //Envia a solicitação
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return .t.
END
MemoWrit( cFile, HB_Base64Decode( oServer:ResponseText ), .F. ) //Grava o arquivo retornado na pasta
MsgProcFim()
if oServer:Status != 200 //Status de retorno do site
if oServer:Status == 401
Msginfo('Token expirado, favor renovar o Token no site do DropBox','Atenção')
AbrePadrao('https://www.dropbox.com/developers/apps/')
else
cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
Msginfo('Falha no download do arquivo' + LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'Download')
Return .F.
endif
elseif oServer:Status == 200
Msginfo('Download do arquivo com sucesso.' ,'Download')
endif
Enddialog() //Fecha a janela
Return .T.
********************************************************************************
Function DropBox_List_Folder( cPasta,oBrowse1 ) //Lista as pastas que existe no DropBox
********************************************************************************
Local cUrl := 'https://api.dropboxapi.com/2/files/list_folder', cRetorno := '',;
cPath, cFileName, cExtension, aRetorno := {}, aDados := {}
Local cAccessToken := space(200)
Default cPasta := '' //Pasta dentro do DropBox, caso for vazia ele listará a pasta principal
if !InternetOK() //Verifica se tem internet
MsgInfo('Sem conexão com a internet','Atenção')
Return .T.
endif
if empty(Dropbox_AccessToken)
Return .f.
endif
Atualiza_MsgProc('Aguarde, buscando a lista de arquivos')
cBody := '{ "path": "' + if(empty(cPasta),'','/'+cPasta) + '" }'
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("User-Agent" , "api-explorer-client" )
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("Content-Type" , 'application/json' )
oServer:send( cBody )
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return .t.
END
MsgProcFim()
if oServer:Status == 200
oBrowse1:aArray := {}
oBrowse1:Refresh()
hb_jsondecode(oServer:ResponseBody, @aRetorno) //Cria json de retorno
For X := 1 to len(aRetorno['entries']) //Lista as pastas
if right(aRetorno['entries'][X]['name'],7) == '.base64' //Aqui lista os arquivos que foram enviado com Base64
aadd(oBrowse1:aArray , {substr(aRetorno['entries'][X]['name'],1,at('.base64',aRetorno['entries'][X]['name'])-1),;
dtoc(stod(charrem('-',left(aRetorno['entries'][X]['client_modified'],10))))+substr(aRetorno['entries'][X]['client_modified'],11),;
aRetorno['entries'][X]['size'],cPasta})
else
aadd(oBrowse1:aArray , {aRetorno['entries'][X]['name'],; //Aqui lista as pastas
'',;
0,cPasta})
endif
Next
else
if oServer:Status == 401
Msginfo('Token expirado, favor renovar o Token no site do DropBox','Atenção')
if empty(Dropbox_AppKey)
AbrePadrao('https://www.dropbox.com/developers/apps/')
else
AbrePadrao('https://www.dropbox.com/developers/apps/info/'+alltrim(Dropbox_AppKey))
endif
MsgGet("Informar Access Token","Access Token", "@x", "X", @cAccessToken )
if !empty(cAccessToken)
oSql:StartTransaction()
oSql:EXECUTE( "update param_integra set dropbox_token='"+cAccessToken+" ' ")
oSql:Commit()
Dropbox_AccessToken := cAccessToken
endif
else
cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
if oServer:Status == 409
Msginfo('Falha ao listar a pasta' + LF +;
'Nenhum arquivo encontrado'+ LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'List Folder')
else
Msginfo('Falha ao listar a pasta' + LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'List Folder')
endif
endif
Return .f.
endif
Return .t.
********************************************************************************
Function Seleciona_Arquivo()
********************************************************************************
LOCAL oDlg, oShape[2], oLbTitulo, oLbRodape, oButtonex[3], oBrowse1, cRetorno := ''
LOCAL oCombo[2],vCombo[2],oLabel[2],aDados := {} ,aAno := {},aMes := {}
for x:= 2023 to YEAR(Date())
aadd(aAno,alltrim(str(x)))
next
AADD(aMes, 'Janeiro' )
AADD(aMes, 'Fevereiro')
AADD(aMes, 'Março' )
AADD(aMes, 'Abril' )
AADD(aMes, 'Maio' )
AADD(aMes, 'Junho' )
AADD(aMes, 'Julho' )
AADD(aMes, 'Agosto' )
AADD(aMes, 'Setembro' )
AADD(aMes, 'Outubro' )
AADD(aMes, 'Novembro' )
AADD(aMes, 'Dezembro' )
vCombo[1] := ascan(aAno,alltrim(str( YEAR(Date() ))))
vCombo[2] := Month( Date() )
INIT DIALOG oDlg TITLE "" ICON oIcon AT 0, 0 SIZE 819,526 CLIPPER NOEXIT ;
STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+DS_CENTER
@ -3,-3 SHAPE oShape[1] SIZE 841,75 ;
BACKCOLOR nCorFundo ;
CURVATURE 0 BORDERSTYLE 0 FILLSTYLE 10
@ 5,10 SAY oLbTitulo CAPTION "Lista dos Arquivos" /*+ if(empty(cPasta),'',' da pasta ' + cPasta) */ SIZE 707,53 ;
STYLE DT_VCENTER+DT_SINGLELINE;
COLOR nCorLetra BACKCOLOR nCorFundo ;
FONT HFont():Add( 'Arial',0,-35,400,,,)
@ 22,81 SAY oLabel[1] CAPTION "Ano" SIZE 29,22
@ 52,80 GET COMBOBOX oCombo[1] VAR vCombo[1] ;
ITEMS aAno ;
SIZE 110,24
@ 173,81 SAY oLabel[2] CAPTION "Mês" SIZE 31,21
@ 205,79 GET COMBOBOX oCombo[2] VAR vCombo[2] ;
ITEMS aMes ;
SIZE 110,24
@ 324,74 BUTTONEX oButtonex[3] CAPTION "Pesquisar" SIZE 89,32 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| DropBox_List_Folder(aAno[vCombo[1]]+'/'+strzero(vCombo[2],2) ,@oBrowse1 ),oBrowse1:Refresh() }
@ 6,120 BROWSE oBrowse1 ARRAY SIZE 806,266 STYLE WS_TABSTOP
oBrowse1:aArray := aDados
oBrowse1:bColorSel := nCorFundo
oBrowse1:AddColumn( HColumn():New('Arquivo', ColumnArBlock() ,'C',50, 0 ,.F.,1,0,'@!',,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Data' , ColumnArBlock() ,'C',20, 0 ,.F.,1,1,'@!',,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Tamanho', ColumnArBlock() ,'N',10, 0 ,.F.,1,1,'9999999999',,,,,,,,,))
@ -3,455 SHAPE oShape[2] SIZE 841,75 ;
BACKCOLOR nCorFundo ;
CURVATURE 0 BORDERSTYLE 0 FILLSTYLE 10
@ 5,466 SAY oLbRodape CAPTION "Selecione um arquivo" SIZE 583,53 ;
STYLE DT_VCENTER+DT_SINGLELINE;
COLOR nCorLetra BACKCOLOR nCorFundo ;
FONT HFont():Add( 'Arial',0,-24,400,,,)
@ 605,473 BUTTONEX oButtonex[1] CAPTION "&Seleciona" SIZE 98,32 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| if(len(oBrowse1:aArray) <= 0,.t. , DropBox_Download(alltrim(oBrowse1:aArray[oBrowse1:nCurrent][1]),oBrowse1:aArray[oBrowse1:nCurrent][4])) }
@ 708,473 BUTTONEX oButtonex[2] CAPTION "C&ancela" SIZE 98,32 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| Enddialog() }
ACTIVATE DIALOG oDlg
Return cRetorno
********************************************************************************
Function DropBox_Creat_Folder( cPasta ) //Cria pastas no DropBox
********************************************************************************
Local cUrl := 'https://api.dropboxapi.com/2/files/create_folder_v2'
if !InternetOK()
MsgInfo('Sem conexão com a internet','Atenção')
Return .T.
endif
if empty( Dropbox_AccessToken ) .or.;
empty( cPasta )
Return .T.
endif
Atualiza_MsgProc('Aguarde, Criando a pasta no DropBox')
cPath := '{ "path": "/' + alltrim(cPasta) + '" }'
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("User-Agent" , "Datarey" )
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("Content-Type" , 'application/json' )
oServer:send(cPath)
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return .t.
END
MsgProcFim()
if oServer:Status == 200
//Msginfo('Pasta criada com sucesso','Atenção')
else
//cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
//Msginfo('Falha na consulta' + LF +;
// 'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'Atenção')
//Return .F.
endif
Return .T.
********************************************************************************
Function DropBox_Get_SPace() //Retorna a Capacidade de armazenamento e espaço ocupado
********************************************************************************
Local cUrl := 'https://api.dropboxapi.com/2/users/get_space_usage',;
aRetorno[3]
aRetorno[1] := 0 //Capacidade total de armazenamento
aRetorno[2] := 0 //Espaço já utilizado
aRetorno[3] := 0 //Espaço ainda Disponivel
if !InternetOK()
MsgInfo('Sem conexão com a internet','Atenção')
Return aRetorno
endif
if empty( Dropbox_AccessToken )
Return aRetorno
endif
Atualiza_MsgProc('Aguarde, Consultando a capacidade no DropBox')
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("User-Agent" , "Datarey" )
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("Content-Type" , 'application/json' )
oServer:send('null')
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return aRetorno
END
MsgProcFim()
if oServer:Status == 200
aRetorno_cons := {}
hb_jsondecode(oServer:ResponseBody, @aRetorno_cons)
aRetorno[1] := aRetorno_cons['allocation']['allocated']
aRetorno[2] := aRetorno_cons['used']
aRetorno[3] := aRetorno[1] - aRetorno[2]
else
if oServer:Status == 401
Msginfo('Token expirado, favor renovar o Token no site do DropBox','Atenção')
cAccessToken := ""
if empty(Dropbox_AppKey)
AbrePadrao('https://www.dropbox.com/developers/apps/')
else
AbrePadrao('https://www.dropbox.com/developers/apps/info/'+alltrim(Dropbox_AppKey))
endif
MsgGet("Informar Access Token","Access Token", "@x", "X", @cAccessToken )
if !empty(cAccessToken)
oSql:StartTransaction()
oSql:EXECUTE( "update param_integra set dropbox_token='"+cAccessToken+" ' ")
oSql:Commit()
Dropbox_AccessToken := cAccessToken
endif
else
cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
Msginfo('Falha na consulta da capacidade' + LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'Get_Space')
endif
Return aRetorno
endif
Return aRetorno
********************************************************************************
Function DropBox_Get_Current_Account() //Lista os dados da conta logada
********************************************************************************
Local cUrl := 'https://api.dropboxapi.com/2/users/get_current_account',;
cNome := '', cEmail := ''
if !InternetOK()
MsgInfo('Sem conexão com a internet','Atenção')
Return .T.
endif
if empty( Dropbox_AccessToken )
Return .T.
endif
Atualiza_MsgProc('Aguarde, Consultando a capacidade no DropBox')
TRY
oServer:=CreateObject( "MSXML2.ServerXMLHTTP" )
oServer:open("POST", cUrl, .F.)
oServer:setRequestHeader("User-Agent" , "Datarey" )
oServer:setRequestHeader("Authorization" , "Bearer " + Dropbox_AccessToken )
oServer:setRequestHeader("Content-Type" , 'application/json' )
oServer:send('null')
CATCH
MsgInfo("Houve falha na internet!!",'Atenção')
MsgProcFim()
Return .t.
END
MsgProcFim()
if oServer:Status == 200
aRetorno_cons := {}
hb_jsondecode(oServer:ResponseBody, @aRetorno_cons)
cName := aRetorno_cons['name']['display_name']
cEmail := aRetorno_cons['email']
Msginfo('Nome: ' + cName + LF +;
'E-mail: ' + cEmail,'Atenção')
else
if oServer:Status == 401
Msginfo('Token expirado, favor renovar o Token no site do DropBox','Atenção')
AbrePadrao('https://www.dropbox.com/developers/apps/')
else
cError := Http_Error_Descricao(oServer:Status) //Pesquisa a descrição do status retornado
Msginfo('Falha na consulta do usuário logado' + LF +;
'Código do retorno: ' + alltrim(str(oServer:Status)) + if(empty(cError),'',' - '+cError),'Atenção')
endif
Return .F.
endif
Return .T.
Editado pela última vez por Itamar M. Lins Jr. em 21 Jun 2024 09:40, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Backup em nuvem com DropBox via API
Funciona o Upload e download, o único detalhe é que o usuário tem que gerar o token dentro do DropBox porque ele vence e ainda não consegui gerar por dentro do sistema.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp
