LFTP.LIB e TIP.LIB

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Pessoal

Boa noite

Me perdoem a ignorância, sei que existe muitos post relativos as duas lib's acima, porém não achei nenhum sobre as funções/métodos existentes nelas e os parâmetros destas funções. Por favor, alguém tem essa documentação?

Exemplo: Estou usando o comando download(nome do arquivo no ftp), queria saber quais parametros existem

Desde de já, obrigado.

[]s,
Editado pela última vez por Toledo em 16 Out 2014 19:08, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Outras linguagens de programação, uma vez que seu conteúdo não tem relação com os objetivos daquela seção.
Jorge Andrade
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

LFTP.LIB e TIP.LIB

Mensagem por Itamar M. Lins Jr. »

Ola!
Verifique a pasta contrib da sua distribuição.
Na pasta do harbour\contrib\hbtip\tests tem alguns exemplos de uso.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Obrigado Itamar pela resposta, mas a minha necessidade está mais para LFTP.LIB e não na TIP.LIB, a qual citei pelo fato de alguns exemplos do uso de FTP utilizar esta lib, portanto, se alguém ainda puder me ajudar, agradeço.

[]s,
Jorge Andrade
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

LFTP.LIB e TIP.LIB

Mensagem por Itamar M. Lins Jr. »

Que exemplos ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Quais os parametros para:

Download
Upload

Fora outros que pretendo utilizar.

Desde de já, obrigado.

[]s,
Jorge Andrade
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

LFTP.LIB e TIP.LIB

Mensagem por Jairo Maia »

Olá Jorge,

Você já deixou claro que tem preferência em usar a LFTP.LIB e não a FTP.LIB. Penso que o que não está claro ao fórum ainda, é a razão disso. Qual é o motivo da recusa em usar a FTP.LIB? Algum motivo especial?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Jairo

Boa noite

Não tenho nenhum problema em relação a nenhuma das lib's, é que eu peguei um exemplo da LFTP.LIB e como não quero ficar testando mais de uma, resolvi tentar descobrir mais sobre ela, de qualquer maneira agradeço, os palpites e indagações, mas já resolvi desenvolver utilizando TIpClientFtp().

[]s,
Jorge Andrade
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

LFTP.LIB e TIP.LIB

Mensagem por Kapiaba »

Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Olá Kapi

Obrigado pela sua resposta.

Foi justamente a partir de um dos exemplos citados no post, no qual obtive resultados satisfatórios, que questionei sobre a documentação das lib's, mas resolvi fazer de outra maneira, através de um exemplo obtido no CHM do xHarbour, contudo, gostaria de explicar pra não ficar uma suposta presunção de que estou querendo reinventar a roda, até talvez por ignorância e por questões de querer saber mais sobre o assunto, pois pra mim exemplos são feitos para ajudar e não vir definitivamente pronto e resolver o problema, pois temos que queimar a mufa.
Quando perguntei sobre a documentação, aí que entra a necessidade de saber quais as opções que tenho quando disparo uma determinada função e quais os seus parâmetros, pegando nos exemplos do post a opção Download(arquivo), o arquivo será gravado na pasta corrente, sabendo que utilizando a TIpClientFtp(), onde :downloadFile( <cLocalFile>, [<cRemoteFile>] ) --> lSuccess eu tenho 2 parâmetros onde determino onde quero gravo o arquivo destino e onde eu quero pegar.
Sei que utilizando SetDir(pasta), em um dos exemplos do post, diz que a pasta, pode ser origem e destino "(oObj:SetDir("pastaftp/matriz") // pasta pra onde vc quer enviar ou baixa.. Destino..", então isso pressupõe que o mesmo serve para determinar ambos, com a diferença talvez do uso das diretivas "/" ou " \"
Então, me perdoem a ignorância, a pergunta era simples, era tudo uma questão querer diminuir a minha falta de conhecimento sobre as mesmas, contudo, agradeço a colaboração de todos.

[]s
Jorge Andrade
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

LFTP.LIB e TIP.LIB

Mensagem por Toledo »

jorge andrade escreveu:através de um exemplo obtido no CHM do xHarbour
Você tem o CHM do xHarbour? Se sim, então você tem a documentação da classe TIpClientFtp(), no CHM tem todos os parâmetros, descrição, métodos e retorno de cada função desta classe.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Obrigado Toledo pela resposta, mas eu já havia finalizado o assunto, ao informar que já tinha feito através da TIPclientFTP() e não precisava mais da documentação questionada, eu apenas deixei um motivo da minha questão, mas como frisei na minha resposta, fiz justamente através do CHM do xHarbour, acho que vc leu errado meu último post, de qqr forma fico grato pela paciência.

[]s,
Jorge Andrade
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

LFTP.LIB e TIP.LIB

Mensagem por Itamar M. Lins Jr. »

Neste caso vc colocou os bois na frente da carroça. Porque o nome da LIB pouco importa seria mais fácil vc ter colocado os exemplos e informar que era no xHarbour porque no Harbour tem exemplos mais novos.
Exemplo simples de download via FTP com poucas linhas vc consegue fazer o que está querendo.

Código: Selecionar todos

/* Download a file from an FTP server */

#require "hbtip"

PROCEDURE Main( cURL, ... )

   LOCAL lRetVal := .T.

   LOCAL aFiles, cFile
   LOCAL oFTP, oURL

   /* fetch files to transfer */
   IF ! Empty( aFiles := { ... } )

      hb_default( @cURL, "ftp://user:pass@ftp.example.com" )

      oURL := TUrl():New( cURL )

      oFTP := TIPClientFTP():New( oURL, .T. )
      oFTP:nConnTimeout := 20000
      oFTP:bUsePasv := .T.

      IF oFTP:Open( cURL )
         FOR EACH cFile IN aFiles
            ? "Filename:", cFile
            IF oFtp:DownloadFile( cFile )
               lRetVal := .T.
            ELSE
               lRetVal := .F.
               EXIT
            ENDIF
         NEXT
         oFTP:Close()
      ELSE
         ? "Could not connect to FTP server", oURL:cServer
         IF oFTP:SocketCon == NIL
            ? "Connection not initialized"
         ELSEIF hb_inetErrorCode( oFTP:SocketCon ) == 0
            ? "Server response:", oFTP:cReply
         ELSE
            ? "Error in connection:", hb_inetErrorDesc( oFTP:SocketCon )
         ENDIF
         lRetVal := .F.
      ENDIF
   ENDIF

   ErrorLevel( iif( lRetVal, 0, 1 ) )

   RETURN
Neste exemplo abaixo vc baixa arquivo via HTTP com a barrinha gráfica de percentual.

Código: Selecionar todos

/* TEST of TIP libs (for higher level URI interface)
 *
 * Usage: This file is similar to a wget command
 *
 * Without the filename, tipwget will be in demo mode,
 * just demostrating it is working
 *
 * With the filename, data will be stored to the file or
 * retrieved from the file and sent to Internet.
 *
 * Usage of URI.
 * HTTP[S] Protocol
 *   http[s]://<sitename>/<path>?<query>
 *   - at the moment HTTP URI is not able to send data,
 *     (f.e. a form)
 *
 * POP[S] Protocol
 *    pop[s]://<username>:<password>@<popserver>/[-][MsgNum]
 *    - Without MsgNum, you get the list of messages
 *    - With MsgNum get Message MsgNum
 *    - With -MsgNum deletes message MsgNum
 *
 * SMTP[S] Protocol
 *    smtp[s]://<mail-from>@<server>/RCPT
 *    - (You have to provide a filename)
 *    - use &at; in mail-from message
 *    - Send the mail in filename (that must include
 *      headers) to RCPT f.e.
 *      stmp[s]://user&at;example.com@smtp.example.com/gian@niccolai.ws
 *
 *      NOTE: In Unix, to use '&' from command line you have to surround
 *      the URL with "", f.e. "smtp[s]://...&at;...@server/dest"
 *
 * FTP[S] Protocol
 *    ftp[s]://user:passwd@<ftpserver>/[<path>]
 *    - without path, get the list of files (use path/ to get the list of
 *      files in a dir.
 *    - with path, get a file. If the target file (second param) starts with '+'
 *      it will be sent instead of being retrieved.
 */

#require "hbssl"
#require "hbtip"

#if ! defined( __HBSCRIPT__HBSHELL )
REQUEST __HBEXTERN__HBSSL__
#endif

#include "hbclass.ch"
#include "tip.ch"

PROCEDURE Main( cURL, cFile )

   LOCAL bWrite := .F.
   LOCAL oURL, oClient
   LOCAL cData

   ? "Harbour - TIP (class based internet client protocol) test"

   IF ! HB_ISSTRING( cURL ) .OR. Empty( cURL )
      ? hb_StrFormat( "Usage: %1$s <URI> [dumpToOrFromFileName]", hb_ProgName() )
      RETURN
   ENDIF

   IF Empty( oURL := TUrl():New( cURL ) )
      ? "Invalid URL", cURL
      RETURN
   ENDIF

   SWITCH Lower( oURL:cProto )
   CASE "ftp"
      oClient := TIPClientFTP():New( oURL )
      EXIT
   CASE "http"
   CASE "https"
      oClient := TIPClientHTTP():New( oURL )
      EXIT
   CASE "pop"
   CASE "pops"
      oClient := TIPClientPOP():New( oURL )
      EXIT
   CASE "smtp"
   CASE "smtps"
      oClient := TIPClientSMTP():New( oURL )
      EXIT
   ENDSWITCH

   IF Empty( oClient )
      ? "Invalid URL", cURL
      RETURN
   ENDIF
   oClient:nConnTimeout := 2000 /* 20000 */

   oURL:cUserid := StrTran( oURL:cUserid, "&at;", "@" )

   ? "Connecting to", oURL:cProto + "://" + oURL:cServer
   IF oClient:Open()
      ? "Connection status:", iif( Empty( oClient:cReply ), "<connected>", oClient:cReply )

      IF ! Empty( cFile ) .AND. hb_LeftEq( cFile, "+" )
         cFile := SubStr( cFile, 2 )
         bWrite := .T.
      ENDIF

      ?
      oClient:exGauge := {| done, size | ShowGauge( done, size ) }
#if 0
      /* Can be also: */
      oClient:exGauge := {| done, size, oConnection | dothing( done, size, oConnection ) }
#endif

      IF oClient:nAccessMode == TIP_WO .OR. ( oClient:nAccessMode == TIP_RW .AND. bWrite )
         IF oClient:WriteFromFile( cFile )
            ? "Data successfully sent"
         ELSE
            ? "Error: Data not sent", oClient:lastErrorMessage()
         ENDIF
      ELSE
         IF Empty( cFile )
            cData := oClient:Read()
            IF ! Empty( cData )
               ? "First 80 characters:", RTrim( Left( cData, 80 ) )
            ELSE
               ? "Error: file can't be retrieved", oClient:lastErrorMessage()
            ENDIF
         ELSE
            IF oClient:ReadToFile( cFile )
               ? "File", cFile, "written."
               ? "Server replied", oClient:cReply
            ELSE
               ? "Error: Generic error in writing", cFile
            ENDIF
         ENDIF
      ENDIF

      oClient:Close()
      ? "Done:", iif( Empty( oClient:cReply ), "(no goodbye message)", oClient:cReply )
   ELSE
      ? "Can't open URI", cURL
      IF ! Empty( oClient:cReply )
         ? oClient:cReply
      ENDIF
   ENDIF

   RETURN

STATIC PROCEDURE ShowGauge( nSent, nSize )

   SetPos( Row(), 0 )
   ?? "Sending:", nSent, "/", nSize

   RETURN
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
jorge andrade
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Dez 2009 13:28
Localização: são paulo

LFTP.LIB e TIP.LIB

Mensagem por jorge andrade »

Caro Itamar, obrigado mais uma vez, foi justamente o que eu fiz, pq se fosse o contrário estaria errado, pois carroça não puxa boi. ahahahaha (Brincadeira), foi só uma pergunta que criou td isso sem necessidade, mas obrigado de novo.

[]s,
Jorge Andrade
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

LFTP.LIB e TIP.LIB

Mensagem por Itamar M. Lins Jr. »

Como diz Chaves: isso, isso, isso!!!
Se mostrasse os exemplos que vc queria executar seria mais ligeiro p/ nós.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

LFTP.LIB e TIP.LIB

Mensagem por Itamar M. Lins Jr. »

E se não achar no manual, o último recurso é olhar nos próprios fontes o funcionamento das funções/métodos!

Código: Selecionar todos


CREATE CLASS TIPClientFTP FROM TIPClient

   VAR nDataPort
   VAR cDataServer
   VAR bUsePasv     INIT .T.
   VAR RegBytes
   VAR RegPasv
   // Socket opened in response to a port command
   VAR SocketControl
   VAR SocketPortServer

   METHOD New( oUrl, xTrace, oCredentials )
   METHOD Open( cUrl )
   METHOD Close()
   METHOD GetReply()
   METHOD Commit()
   METHOD ScanLength()
   METHOD TransferStart()

   METHOD Pasv()
   METHOD Quit()
   METHOD TypeI()
   METHOD TypeA()
   METHOD NoOp()
   METHOD Rest( nPos )
   METHOD Pwd()
   METHOD Cwd( cPath )
   METHOD Dele( cPath )
   METHOD LS( cSpec )
   METHOD Rename( cFrom, cTo )
   METHOD MKD( cPath )
   METHOD RMD( cPath )
   METHOD Retr( cFile )
   METHOD Stor( cFile )
   METHOD List( cSpec )
   METHOD UserCommand( cCommand, lPasv, lReadPort, lGetReply )

   METHOD Port()
   METHOD SendPort()
   METHOD ReadAuxPort()
   METHOD Read( nLen )
   METHOD Write( cData, nLen )
   METHOD MGet( cSpec, cLocalPath )
   METHOD MPut( cFileSpec, cAttr )
   METHOD UploadFile( cLocalFile, cRemoteFile )
   METHOD DownloadFile( cLocalFile, cRemoteFile )
   METHOD ListFiles( cFileSpec )
   METHOD FileSize( cFileSpec )

ENDCLASS
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder