Página 1 de 1

LFTP.LIB e TIP.LIB

Enviado: 16 Out 2014 18:25
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,

LFTP.LIB e TIP.LIB

Enviado: 16 Out 2014 23:12
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.

LFTP.LIB e TIP.LIB

Enviado: 19 Out 2014 02:56
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,

LFTP.LIB e TIP.LIB

Enviado: 19 Out 2014 10:19
por Itamar M. Lins Jr.
Que exemplos ?

Saudações,
Itamar M. Lins Jr.

LFTP.LIB e TIP.LIB

Enviado: 20 Out 2014 14:25
por jorge andrade
Quais os parametros para:

Download
Upload

Fora outros que pretendo utilizar.

Desde de já, obrigado.

[]s,

LFTP.LIB e TIP.LIB

Enviado: 20 Out 2014 18:00
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?

LFTP.LIB e TIP.LIB

Enviado: 20 Out 2014 22:52
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,

LFTP.LIB e TIP.LIB

Enviado: 21 Out 2014 09:51
por Kapiaba

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 14:47
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

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 15:19
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,

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 17:33
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,

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 17:34
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.

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 17:46
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,

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 17:52
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.

LFTP.LIB e TIP.LIB

Enviado: 22 Out 2014 18:10
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.