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: 166
- 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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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
