#compdef http # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for httpie 0.7.2 (http://httpie.org) # # ------------------------------------------------------------------------------ # Authors # ------- # # * Akira Maeda # * Valodim # # ------------------------------------------------------------------------------ # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- # vim: ft=zsh sw=2 ts=2 et # ------------------------------------------------------------------------------ _httpie_params () { local ret=1 expl # or a url if (( CURRENT <= 3 )) && [[ $words[2] != *:* ]] ; then _httpie_urls && ret=0 # regular param, if we already have a url elif (( CURRENT > 2 )); then # if the suffix is precisely : this is shorthand for a header if [[ -prefix ':' ]]; then PREFIX= SUFFIX=: fi # if we are in front of a : (possibly due to the PREFIX move before) if [[ -suffix ':' ]]; then # this is rather buggy with normal tab behavior :\ compstate[insert]=menu _wanted http_header expl 'HTTP Header' \ compadd -s ':' -S '' -- Content-Type Cookie && return 0 fi # ignore all prefix stuff compset -P '(#b)([^:@=]#)' local name=$match[1] if compset -P ':'; then _message "$name header content" elif compset -P '@'; then _files elif compset -P ':='; then _message "$name raw json data" elif compset -P '=='; then _message "$name url parameter value" elif compset -P '='; then _message "$name data field value" else typeset -a ops ops=( '=:data field' '\::header' '==:request parameter' '@:data file field' '\:=:raw json field' ) _describe -t httpparams "parameter types" ops -Q -S '' fi ret=0 fi # first arg may be a request method (( CURRENT == 2 )) && _wanted http_method expl 'Request Method' \ compadd GET POST PUT DELETE HEAD OPTIONS TRACE CONNECT PATCH LINK UNLINK && ret=0 return $ret } _httpie_urls() { local ret=1 if ! [[ -prefix [-+.a-z0-9]#:// ]]; then local expl compset -S '[^:/]*' && compstate[to_end]='' _wanted url-schemas expl 'URL schema' compadd -S '' http:// https:// && ret=0 else _urls && ret=0 fi return $ret } _arguments -C -s \ {-j,--json}'[Data items from the command line are serialized as a JSON object.]' \ {-f,--form}'[Data items from the command line are serialized as form fields.]' \ '--pretty[Controls output processing.]:PRETTY:(all colors format none)' \ {-s,--style}'[Output coloring style]:STYLE:(autumn borland bw colorful default emacs friendly fruity manni monokai murphy native pastie perldoc ttr solarized tango trac vim vs)' \ {-p,--print}'[String specifying what the output should contain]:OUTPUT_OPTIONS:(H B h b)' \ {-v,--verbose}'[Print the whole request as well as the response.]' \ {-h,--headers}'[Print only the response headers.]' \ {-b,--body}'[Print only the response body.]' \ {-S,--stream}'[Always stream the output by line, i.e., behave like `tail -f`.]' \ {-o,--output}'[Save output to FILE.]:FILE:_files' \ {-d,--download}'[Do not print the response body to stdout.]' \ {-c,--continue}'[Resume an interrupted download.]' \ '--session[Create, or reuse and update a session.]:SESSION_NAME_OR_PATH' \ '--session-read-only[Create or read a session without updating it form the request/response exchange.]:SESSION_NAME_OR_PATH' \ {-a,--auth}'[If only the username is provided (-a username)]:USER\:PASS' \ '--auth-type[The authentication mechanism to be used. Defaults to "basic".]:AUTH-TYPE:(basic digest)' \ '--proxy[String mapping protocol to the URL of the proxy (e.g.http:foo.bar:3128).]:PROXY' \ '--follow[Set this flag if full redirects are allowed]' \ "--verify[Set to \"no\" to skip checking the host's SSL certificate.]:VERIFY:(yes no)" \ '--allow-redirects[Set this flag if full redirects are allowed (e.g. re-POST-ing of data at new ``Location``)]' \ '--timeout[Float describes the timeout of the request (Use socket.setdefaulttimeout() as fallback).]:SECONDS' \ '--check-status[This flag instructs HTTPie to also check the HTTP status code and exit with an error if the status indicates one. ]' \ '--ignore-stdin[Do not attempt to read stdin.]' \ '--help[show help message.]' \ "--version[show program's version number and exit.]" \ '--traceback[Prints exception traceback should one occur.]' \ '--debug[Prints exception traceback should one occur and other information useful for debugging HTTPie itself.]' \ '*:args:_httpie_params' && return 0