3 pontos por GN⁺ 2024-01-30 | 1 comentários | Compartilhar no WhatsApp

Usando --libcurl

  • Recomendação de uso do libcurl: Recomenda-se que os usuários primeiro usem a ferramenta de linha de comando curl para testar a transferência desejada e, quando ela estiver funcionando aproximadamente como esperado, executem novamente adicionando a opção --libcurl [nome_do_arquivo] à linha de comando.
  • Geração de código: A opção de linha de comando --libcurl gera um programa em C com o nome de arquivo fornecido. Esse programa em C usa libcurl para executar a transferência realizada pela ferramenta de linha de comando curl.
  • Exceções e diferenças: Nem sempre há correspondência 100%, mas isso pode servir como uma excelente inspiração para as opções do libcurl e argumentos adicionais que você queira usar.

Código de exemplo

  • Exemplo de execução: Ao executar o comando curl http://example.com --libcurl example.c, o arquivo example.c é criado no diretório atual.
  • Código gerado: O código gerado inclui várias configurações de opções usando curl_easy_setopt(), e algumas opções não podem ser facilmente geradas a partir da fonte, então o usuário talvez precise implementá-las manualmente ou optar por não usá-las.

Opinião do GN⁺

  • Utilidade do libcurl: Esse recurso permite que desenvolvedores convertam facilmente, em um programa C, comandos curl que funcionam na linha de comando, acelerando o desenvolvimento de aplicações que usam libcurl.
  • Vantagens da geração de código: O código gerado automaticamente pode ajudar desenvolvedores a entender e aplicar a API do libcurl mais rapidamente.
  • Valor como ferramenta de aprendizado: Pode ser um ótimo material de aprendizado para engenheiros de software iniciantes, ao mostrar opções do libcurl e casos reais de aplicação em programação de rede.

1 comentários

 
GN⁺ 2024-01-30
Comentários no Hacker News
  • É útil o padrão de encontrar uma requisição interessante na aba de rede do navegador e usar "copiar como curl". Com isso, é possível gerar um comando curl e aproveitar um site que o converte em código de requisição na linguagem desejada (curlconverter.com). O curl funciona como uma espécie de "representação intermediária" que pode ser traduzida para outras linguagens.
  • Ter uma flag que imprime o código-fonte de um programa na interface de linha de comando é um recurso muito legal. É como abrir o capô de um carro e ver o que há dentro, permitindo entender melhor como ele funciona e modificá-lo conforme a necessidade. Isso é amigável para o usuário, já que ele pode ajustar ou acrescentar o que quiser.
  • Um dos motivos do sucesso das macros em Visual Basic do Microsoft Office foi justamente esse tipo de recurso. Depois de realizar tarefas no Word, Excel etc., é possível usar a macro gerada como código e customizá-la conforme a necessidade do usuário. É um conceito simples, mas poderoso, e dá para ver isso também no curl.
  • Para compilar o curl, é preciso instruir o linker a vincular com a libcurl. Por exemplo, no gcc usa-se a opção -lcurl. Com isso, é possível imprimir o endereço IP e gerar o arquivo ip_fetcher.c; depois de compilar com gcc, dá para obter o endereço IP por meio do executável.
  • Hurl é uma CLI open source que usa libcurl e texto simples para testar requisições HTTP. Ela aproveita a estabilidade e os melhores recursos da libcurl (incluindo HTTP/3) e adiciona funcionalidades como encadear requisições, capturar e repassar dados das respostas e testar respostas (JSONPath, XPath etc.). Oferece conveniências sintáticas para requisições a APIs REST/SOAP/GraphQL, mas o núcleo é a libcurl. Com a opção verbose, é possível fazer grep do comando curl.
  • Seria ótimo se o ffmpeg também tivesse um recurso assim.
  • Daniel Stenberg se importa muito com os detalhes e com a experiência de desenvolvedores/usuários, e esse cuidado minucioso é considerado impressionante.
  • Essa opção é mencionada em um vídeo de 3 horas no qual o próprio Daniel Stenberg explica a maioria das opções de linha de comando do curl.
  • O título do envio deveria usar dois hífens (--), e a combinação de travessão com hífen (—-) não está correta.
  • Um entusiasta fervoroso de IA argumenta, com empolgação, que com a chegada do ChatGPT esse recurso ficou ultrapassado, já que não é mais necessário incluir quines semiacabados no executável do curl.