cli icon indicating copy to clipboard operation
cli copied to clipboard

Make option redirect output from `--output/-o` to `stdin`

Open h4r1337 opened this issue 6 months ago • 0 comments

Checklist

  • [x] I've searched for similar feature requests.

Enhancement request

I want to be able to redirect the output when using the --output/-o flag to the stdin like this:

http www.example.com/?req=index.html --output -

Currently if I run it this way, it shows this error message:

Traceback (most recent call last):
  File "/home/user/.local/bin/http", line 8, in <module>
    sys.exit(main())
  File "/home/user/.local/lib/python3.10/site-packages/httpie/__main__.py", line 9, in main
    exit_status = main()
  File "/home/user/.local/lib/python3.10/site-packages/httpie/core.py", line 162, in main
    return raw_main(
  File "/home/user/.local/lib/python3.10/site-packages/httpie/core.py", line 77, in raw_main
    parsed_args = parser.parse_args(
  File "/home/user/.local/lib/python3.10/site-packages/httpie/cli/argparser.py", line 172, in parse_args
    self._setup_standard_streams()
  File "/home/user/.local/lib/python3.10/site-packages/httpie/cli/argparser.py", line 250, in _setup_standard_streams
    self.args.output_file.seek(0)
io.UnsupportedOperation: File or stream is not seekable.

Problem it solves

I know if the output format is normal we don't have to use this. But when the output is binary or the file contains some null bytes somewhere like %00 http won't show the output. But we can rather use the --output/-o to redirect the binary to a file. I don't want to redirect to a new file, I just want to check the file content in a single command. This is more productive because I can now redirect the input stream to other programs like head, xxd etc. Like this:

http example.com/binary -b --output - | head | xxd 

h4r1337 avatar Jul 29 '24 12:07 h4r1337