Commit Graph

760 Commits

Author SHA1 Message Date
Batuhan Taskaya
2142ae60c3
Final release prep for 3.2.0 (#1387) 2022-05-05 23:32:35 +03:00
Batuhan Taskaya
003f2095d4
Automatic release update warnings. (#1336)
* Hide pretty help

* Automatic release update warnings.

* `httpie cli check-updates`

* adapt to the new loglevel construct

* Don't make the pie-colors the bold

* Apply review feedback.

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-05-05 11:18:20 -07:00
Batuhan Taskaya
f9b5c2f696
Man page fixes (#1364)
- Highlighting for options (-x, --x) now doesn't strip the prefix (may be whitespace).
- Escape sequences are now cross-platform compatible (directly taken by groff/troff [man's renderer])
- Now we check for the section before displaying the man pages.
- On MacOS, there is HTTP(n) which is different from our HTTP(1). This used to conflict with it, and we showed the wrong page. Now we specifically ask foir HTTP(1).
- Errors that might happen (e.g non executable man command) is now suppressed. So in the worst case (if anything regarding man execution goes wrong), we'll always display the manual.
- Docs for man pages.
- HTTPie man pages.
- Epilog for the man pages (see also)
- Auto-generated comments.
2022-05-05 11:17:37 -07:00
Batuhan Taskaya
76495cbdec
Hide pretty help (#1384) 2022-05-05 11:17:24 -07:00
Batuhan Taskaya
c4d7d05f3b
Don't make bold the default for pie themes (#1385) 2022-05-05 11:17:12 -07:00
Batuhan Taskaya
f7c1bb269e
Refactor palette (#1378)
* Refactor palette

* Modifiers / change static strings to colors

* Colors...

* Error-based tests

* Styling linting

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-05-05 08:17:05 -07:00
Batuhan Taskaya
0f9fd76852
Deprecate --history-print (#1380) 2022-05-03 06:29:02 -07:00
Batuhan Taskaya
af1d6b1853
Use sentence case for the group names in the parser (#1381) 2022-05-03 06:28:46 -07:00
luzpaz
d262181bed
Fix typos (user-facing and non-user-facing) (#1357)
* Fix typos (user-facing and non-user-facing

Found via `codespell -q 3 -L datas,medias,warmup`

* Fix source typo found in tests/
2022-04-16 02:06:34 +03:00
Batuhan Taskaya
dd2c9513f3
Single binary executables (#1330)
* Single binary executables / DEB packages.

* Attach single binary executables to the releases
2022-04-14 08:11:12 -07:00
Batuhan Taskaya
278dfc487d
Don't block users with the warning thread. (#1350)
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-04-14 08:00:53 -07:00
Batuhan Taskaya
ff6f1887b0
[Major] UI Enhancements (#1321)
* Refactor tests to use a text-based standard output. (#1318)

* Implement new style `--help` (#1316)

* Implement man page generation (#1317)

* Implement rich progress bars. (#1324)

* Man page deployment & isolation. (#1325)

* Remove all unsorted usages in the CLI docs

* Implement isolated mode for man page generation

* Add a CI job for autogenerated files

* Distribute man pages through PyPI

* Pin the date for man pages. (#1326)

* Hide suppressed arguments from --help/man pages (#1329)

* Change download spinner to line (#1328)

* Regenerate autogenerated files when pushed against to master. (#1339)

* Highlight options (#1340)

* Additional man page enhancements (#1341)

* Group options by the parent category & highlight -o/--o

* Display (and underline) the METAVAR on man pages.

* Make help message processing more robust (#1342)

* Inherit `help` from `short_help`

* Don't mirror short_help directly.

* Fixup the serialization

* Use `pager` and `man` on `--manual` when applicable (#1343)

* Run `man $program` on --manual

* Page the output of `--manual` for systems that lack man pages

* Improvements over progress bars (separate bar, status line, etc.) (#1346)

* Redesign the --help layout.

* Make our usage of rich compatible with 9.10.0

* Add `HTTPIE_NO_MAN_PAGES`

* Make tests also patch os.get_terminal_size

* Generate CLI spec from HTTPie & Man Page Hook (#1354)

* Generate CLI spec from HTTPie & add man page hook

* Use the full command space for the option headers
2022-04-14 07:43:10 -07:00
Batuhan Taskaya
86f4bf4d0a
Add support for sending secure cookies over localhost (#1327)
* Add support for sending secure cookies over localhost

* Refactor

* Fix the CI

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-04-14 07:42:05 -07:00
Batuhan Taskaya
e6d0bfec7c
Use the raw request version when the original is not accessible (#1352) 2022-04-14 07:41:12 -07:00
Batuhan Taskaya
d03e3f4e14
Implement support for multiple headers with the same name in sessions (#1335)
* Properly remove duplicate Cookie headers

* Implement support for multiple headers with the same name in sessions

* More testing

* Cleanup

* Remove duplicated test, cleanup

* Fix pycodestyle

* CHANGELOG

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-04-03 06:48:31 -07:00
Batuhan Taskaya
c157948531
Add httpie cli plugins in favor of the new cli namespace. (#1320)
* Add `httpie cli plugins` in favor of the new cli namespace.

* Separate each task to individual modules.

* Move httpie.manager.plugins to httpie.manager.tasks.plugins

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-04-03 06:06:42 -07:00
Batuhan Taskaya
33ea977b64
Don't send Content-Length for OPTIONS requests when there is no data. (#1319) 2022-04-03 06:02:41 -07:00
Batuhan Taskaya
266c6375c6
Release prep for 3.1.0 (#1313) 2022-03-08 01:50:09 +03:00
Batuhan Taskaya
77af4c7a5c
Decouple parser definition from argparse (#1293) 2022-03-08 01:34:04 +03:00
Batuhan Taskaya
f08c1bee17 Change error messages to use a better format. 2022-03-07 23:29:48 +03:00
Batuhan Taskaya
395914fb4d Apply suggestions from the review 2022-03-07 23:29:48 +03:00
Batuhan Taskaya
65ab7d5caa Implement new style cookies 2022-03-07 23:29:48 +03:00
Jakub Roztocil
ec203b1fac Tweak compact help 2022-03-07 19:16:51 +03:00
Batuhan Taskaya
350abe3033 Make the naked invocation display a compacted help 2022-03-07 19:16:51 +03:00
Batuhan Taskaya
9241a09360 Mention about interactive prompt on key passphrases 2022-03-07 16:09:07 +03:00
Batuhan Taskaya
15013fd609 Implement support for private key passphrases 2022-03-07 16:09:07 +03:00
Jakub Roztocil
5c98253377 Update httpie/uploads.py 2022-03-07 16:01:29 +03:00
Batuhan Taskaya
b0f5b8ab26 Prevent data race happening between select.select and file.read() 2022-03-07 16:01:29 +03:00
Batuhan Taskaya
55087a901e
Introduce a mode to suppress all warnings (#1283) 2022-03-07 15:40:35 +03:00
Batuhan Taskaya
25bd817bb2
Fix displaying of status code without a status message. (#1301)
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2022-03-03 08:28:04 -08:00
Batuhan Taskaya
225dccb218
Regulate top-level arrays (#1292)
* Redesign the starting path

* Do not cast `:=[1,2,3]` to a top-level array
2022-02-08 15:18:40 -08:00
Batuhan Taskaya
d45f413f12
Make the version point to 3.0.3.dev0 (#1291) 2022-02-03 01:47:06 -08:00
Batuhan Taskaya
f1ea486025
Fix escaping of integer indexes with multiple backslashes (#1288) 2022-02-01 02:10:55 -08:00
Batuhan Taskaya
559134de0a
Release 3.0.2 (#1281) 2022-01-24 21:20:17 +03:00
Batuhan Taskaya
813e8864a1
Dont apply default options on the httpie command (#1280)
* Mark tests with requires_installation

* Dont apply default options on the httpie command

* lint
2022-01-24 10:13:47 -08:00
Jakub Roztocil
3b441fa57e 3.0.1 2022-01-23 13:58:01 +01:00
Jakub Roztocil
c815e21ef9
Fix time elapsed (#1277)
* Show the actual time elapsed; add docs

* `requests.Response._headers_parsed_at` → `requests.Response._httpie_headers_parsed_at`

* Add `ELAPSED_TIME_LABEL` constant

* Tweak docs

* Tweak docs

* Allow multiple blank lines in Markdown files

* Add rudimentary tests for --meta with different --style’s

* Cleanup tests

* Cleanup tests

* Cleanup tests
2022-01-23 04:52:38 -08:00
Batuhan Taskaya
88140422a9
3.0 release prep (#1272) 2022-01-21 20:34:38 +03:00
Batuhan Taskaya
cd877a5e08
Remove 3.6 support / discontinue less available platforms (#1267)
* Remove redundant systems

* Drop it from the docs

* Remove the packaging info about the legacy systems

* Fix some typos

* Drop support for python 3.6
2022-01-14 08:49:05 -08:00
Batuhan Taskaya
87629706c9
Change the default style for windows from fruity to auto (#1268) 2022-01-14 08:47:10 -08:00
Batuhan Taskaya
dc30919893 use constants 2022-01-13 19:54:43 +03:00
Batuhan Taskaya
fb82f44cd1 Use enums 2022-01-13 19:54:43 +03:00
Batuhan Taskaya
eb4e32ca28 A few edits 2022-01-13 19:54:43 +03:00
Batuhan Taskaya
2cda966384 Implement escaped integers 2022-01-13 19:54:43 +03:00
Batuhan Taskaya
7bf373751d Implement HTTPie Nested JSON v2 2022-01-13 19:54:43 +03:00
Batuhan Taskaya
21faddc4b9 Proper separation of meta/body 2022-01-13 15:04:44 +03:00
Batuhan Taskaya
00c859c51d
Add warnings when there is no incoming data from stdin (#1256)
* Add warnings when there is no incoming data from stdin

* Pass os.environ as well

* Apply suggestions
2022-01-12 06:07:34 -08:00
Batuhan Taskaya
4c56d894ba
Fix --raw with --chunked (#1254)
* Fix --raw with --chunked

* Better naming / annotations

* More annotations
2021-12-29 12:41:44 +03:00
Sebastian Czech
17ed3bb8c5
Store prompted passwords in local sessions (#1239)
Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>
2021-12-29 12:00:47 +03:00
Batuhan Taskaya
05c02f0f39 Update shortcuts as well 2021-12-24 11:53:31 +03:00
Batuhan Taskaya
0ebc9a7e09 Mention about levels in -v 2021-12-24 11:53:15 +03:00
Batuhan Taskaya
c692669526 Fix -v docs to include BASE_OUTPUT_OPTIONS 2021-12-24 11:51:11 +03:00
Batuhan Taskaya
747accc2ae Include response metadata in --print help 2021-12-24 11:50:19 +03:00
Batuhan Taskaya
f3b500119c
Implement basic metrics layout & total elapsed time (#1250)
* Initial metadata processing

* Dynamic coloring and other stuff

* Use -vv / --meta

* More testing

* Cleanup

* Tweek message

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-23 12:13:25 -08:00
Batuhan Taskaya
e0e03f3237
Better DNS error handling (#1249)
* Better DNS error handling

* Update httpie/core.py

Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-23 11:35:30 -08:00
Batuhan Taskaya
be87da8bbd
Formalize @ suffix for all operators (#1225)
* Formalize @ suffix for all operators

* Separate the section

* Address suggestions
2021-12-23 11:06:35 -08:00
Batuhan Taskaya
e09401b81a
Optimize encoding detection (#1243)
* Optimize encoding detection

* Use a threshold based system
2021-12-23 11:05:58 -08:00
Batuhan Taskaya
8dc6c0df77
Implement new pie and pie-light styles (#1238)
* Implement new `pie` and `pie-light` styles

* Change some pallete

* Integrate the color palette

* some docs

* some docs

* Rework on code generation

* Apply suggestions from code review

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-19 02:41:42 -08:00
Batuhan Taskaya
1bd8422fb5
Improve startup time when pyOpenSSL is available on the environment (#1233) 2021-12-17 00:00:22 -08:00
Batuhan Taskaya
c237e15108
Faster downloads through bigger chunks / less buffering (#1236) 2021-12-17 00:00:03 -08:00
Batuhan Taskaya
a5d8b51e47
Implement httpie upgrade for upgrading plugins (#1241)
* Implement `httpie upgrade` for upgrading plugins

* Support upgrades for every installation type

* Fix decoding problems
2021-12-16 23:59:39 -08:00
Batuhan Taskaya
2b78d04410
Strip out extra variables from the actual mime type (#1244)
* Strip out extra variables from the actual mime type

* mention in changelog

* Update CHANGELOG.md

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-16 07:04:34 -08:00
Batuhan Taskaya
3db1cdba4c
Don't inconsistently add XML declarations (#1227) 2021-12-14 07:15:19 -08:00
Batuhan Taskaya
207b970d94
Automatically enable --stream on server sent events (#1226)
* Automatically enable --stream when used chunked encoding

* try fix 3.6 mock issue

* Only enable on text/event-stream

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-08 07:49:12 -08:00
Batuhan Taskaya
62e43abc86
Ignore crashes that happen on the 3rd party plugins (#1228)
* Ignore crashes that happen on the 3rd party plugins

* Give a suggestion about how to uninstall
2021-12-08 07:45:07 -08:00
Batuhan Taskaya
df58ec683e
Add nested JSON syntax to the HTTPie DSL (#1224)
* Add support for nested JSON syntax (#1169)

Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>

* minor improvements

* unpack top level lists

* Write more docs

* doc style changes

* fix double quotes

Co-authored-by: Mickaël Schoentgen <contact@tiger-222.fr>
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-03 02:17:45 -08:00
Jakub Roztocil
840f77d2a8 Tweak changelog & 3.0.0.dev0 2021-12-01 20:44:04 +01:00
Batuhan Taskaya
151becec2b
Improve startup time with lazy loading some args (#1221)
* Improve startup time with lazy loading some args

* add some tests

* Add changelog entry

* Update CHANGELOG.md

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-12-01 10:15:59 -08:00
Batuhan Taskaya
ba8e4097e8
Support ==@ syntax for query parameter values from file (#1218)
Co-authored-by: Vladimir Berkutov <vladimir.berkutov@gmail.com>

Co-authored-by: Vladimir Berkutov <vladimir.berkutov@gmail.com>
2021-12-01 10:09:39 -08:00
Batuhan Taskaya
00b366a81f
Implement Bearer Auth (#1216) 2021-12-01 09:37:57 -08:00
Batuhan Taskaya
5bf696d113
Fix packit CI (#1219) 2021-11-30 13:49:38 +03:00
Batuhan Taskaya
3081fc1a3c
Add httpie --version (#1220) 2021-11-30 13:18:37 +03:00
Batuhan Taskaya
245cede2c2
cmd: Implement httpie plugins interface (#1200) 2021-11-30 11:12:51 +03:00
Batuhan Taskaya
6bdcdf1eba
Proper JSON handling for :=/:=@ (#1213)
* Proper JSON handling for :=/:=@

* document the behavior

* fixup docs
2021-11-26 03:45:46 -08:00
Batuhan Taskaya
ef62fc11bf
core: support custom request/response classes (#1205)
* core: support custom request/response classes

* Move to `httpie.models`, prefix with `Requests`
2021-11-24 15:45:39 -08:00
Batuhan Taskaya
c000886546
Preserve individual headers with the same name on responses (#1208)
* Preserve individual headers with the same name on responses

* Rename RequestHeadersDict to HTTPHeadersDict

* Update tests/utils/http_server.py

* Update tests/utils/http_server.py

* Update httpie/adapters.py

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-11-24 15:41:37 -08:00
Jakub Roztocil
861b8b36a8
Strip leading :// from URLs to allow quick conversion of a pasted URL to calls (#1197)
* Strip leading `://` from URLs to allow quick conversion of a pasted URL to calls

Closes #1195

* Markdown lint

* Cleanup

* Cleanup

* Drop extraneous space

* Fix example
2021-11-05 13:59:23 +01:00
Batuhan Taskaya
7cdd74fece
Support multiple headers sharing the same name (#1190)
* Support multiple headers sharing the same name

* Apply suggestions

* Don't normalize HTTP header names

* apply visual suggestions

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>

* bump down multidict to 4.7.0

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-10-31 15:04:39 +01:00
Mickaël Schoentgen
3abc76f6d5 Tiny docstring clean-up 2021-10-19 10:24:01 +02:00
Mickaël Schoentgen
021eb651e0
Bump the version to 2.7.0.dev0 (#1188) 2021-10-19 10:21:45 +02:00
Mickaël Schoentgen
419427cfb6
Update downstream files for HTTPie 2.6.0 (#1186)
* Update Alpine package

* Add charset-normalizer deps for Alpine

It currently does not exist. We will need to add it ourselves.

* Update Gentoo package

* Update Brew formula

* Update MacPorts port

* Fix Gentoo deps

* Update examples

* Update Void Linux package

* Update Void Linux commands

* Update Chocolateur package

* Review DEbian packaging details

* Simplify Void Linux package

* Update more packages

* Update summary everywhere

* Remove temporary file

* Update Chocolatey package URL

* Updates

* Update Spack
2021-10-19 10:18:35 +02:00
Mickaël Schoentgen
42af2f786f
v2.6.0 (#1182)
[skip ci]
2021-10-14 10:36:39 +02:00
Mickaël Schoentgen
19691bba68 Packaging documentation tweaks 2021-10-11 17:42:29 +02:00
dkreeft
6befaf9067
Added the ability to silence warnings via double -q or --quiet (#1175)
* change behavior of '--quiet' to silence errors and warnings when passed twice together with '--check-status'

* Apply suggestions from code review

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>

* remove header, trailing comma, rename constant and variable

* fix flags for tests

* [skip ci] Update ticket number

Co-authored-by: Dave <d.kreeft@outlook.com>
Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
Co-authored-by: Mickaël Schoentgen <contact@tiger-222.fr>
2021-10-08 14:18:11 +02:00
Mickaël Schoentgen
50f57f8c82
Add help output for --chunked (#1174) 2021-10-07 17:37:06 +02:00
Mickaël Schoentgen
3869c3ce99 Remove unused import 2021-10-07 14:41:03 +02:00
Jakub Roztocil
ef4fa20ceb Tweak 2021-10-06 19:31:43 +02:00
Jakub Roztocil
7e0bed4e54 Add more types and docs for plugins API II. 2021-10-06 19:28:21 +02:00
Jakub Roztocil
e1627803fe Add more types and docs for plugins API 2021-10-06 19:24:10 +02:00
Mickaël Schoentgen
4f1c9441c5
Fix encoding error with non-prettified encoded responses (#1168)
* Fix encoding error with non-prettified encoded responses

Removed `--format-option response.as` an promote `--response-as`: using
the format option would be misleading as it is now also used by non-prettified
responses.

* Encoding refactoring

* split --response-as into --response-mime and --response-charset
* add support for Content-Type charset for requests printed to terminal
* add support charset detection for requests printed to terminal without a Content-Type charset
* etc.

* `test_unicode.py` → `test_encoding.py`

* Drop sequence length check

* Clean-up tests

* [skip ci] Tweaks

* Use the compatible release clause for `charset_normalizer` requirement

Cf. https://www.python.org/dev/peps/pep-0440/#version-specifiers

* Clean-up

* Partially revert d52a4833e4

* Changelog

* Tweak tests

* [skip ci] Better test name

* Cleanup tests and add request body charset detection

* More test suite cleanups

* Cleanup

* Fix code style in test

* Improve detect_encoding() docstring

* Uniformize pytest.mark.parametrize() calls

* [skip ci] Comment out TODOs (will be tackled in a specific PR)

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-10-06 17:27:07 +02:00
Jakub Roztocil
4ef31ecf71
Update utils.py 2021-10-02 16:43:29 +02:00
Mickaël Schoentgen
71adcd97d0
Improve handling of prettified responses without correct content-type encoding (#1110)
* Improve handling of responses without correct content-type charset

* [skip ci] Minor tweaks in tests

* [skip ci] Add documentation

Co-authored-by: claudiatd <claudiatd@gmail.com>

* Improve unknown encoding test

[skip ci]

* Review mime and options retrieval

* Add full content-type example in help output

* Simplify decoder

* [skip ci] s/charset/encoding/

* Tweaks

* [skip ci] Fix type annotation

* [skip ci] s/charset/encoding/

* Tweaks

* Fix type annoation

* Improvement

* Introduce `codec.encode()`

* [skip ci] Tweak changelog

Co-authored-by: claudiatd <claudiatd@gmail.com>
2021-09-29 20:22:19 +02:00
Mickaël Schoentgen
b50f9aa7e7 Use PYthon 3 documentation
[skip ci]
2021-09-28 12:54:16 +02:00
Mickaël Schoentgen
fe96b2af20 Use httpie.io/docs everywhere
[skip ci]
2021-09-28 12:53:53 +02:00
Mickaël Schoentgen
727b8a2c05
Sort available style choices (#1166) 2021-09-27 16:55:10 +02:00
Mickaël Schoentgen
9c89c703ae
Allow to overwrite the response Content-Type from options (#1134)
* Allow to override the response `Content-Type` from options

* Apply suggestions from code review

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>

* Rename the option from `--response.content-type` to `--response-as`

* Update CHANGELOG.md

Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
2021-09-27 13:58:19 +02:00
Mickaël Schoentgen
474093acdf
Include plugin info in --debug output (#1165)
* Include plugin info in `--debug` output

* Adapt issue number

* Fix docs
2021-09-23 17:15:14 +02:00
Mickaël Schoentgen
d7ed45bbcd
Fix duplicate keys preservation of JSON data (#1163)
* Fix duplicate keys preservation of JSON data

* Update issue number

* Fix type annotations

* Changes after review

* Rewording
2021-09-21 19:07:59 +02:00
Mickaël Schoentgen
e6c5cd3e4b
Improve JSON output when there is leading data before the actual JSON body (#1130)
In some special cases, to prevent against Cross Site Script Inclusion (XSSI)
attacks, the JSON response body starts with a magic prefix line that must be
stripped before feeding the rest of the response body to the JSON parser.
Such prefix is now simply ignored from the parser but still printed in the
terminal.

* Fix Windows tests
2021-09-21 11:15:43 +02:00
Mickaël Schoentgen
273134123a
Bump the version to 2.6.0.dev0 (#1162)
[skip ci]
2021-09-21 10:40:09 +02:00