Skip to content
Snippets Groups Projects
Commit 8d9a2c9b authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

v0.9 update docs

parent 9a87e5a1
No related branches found
No related tags found
1 merge request!3v0.9 update docs
This commit is part of merge request !3. Comments created here will be created in the context of that merge request.
......@@ -17,16 +17,6 @@ The specialties of this component are
📜 License: GNU GPL 3.0 \
📗 Docs: <https://os-docs.iml.unibe.ch/bash-rest-api-client/>
## Screenshot
```text
http.init
http.makeRequest 'http://www.example.com/'
```
This stores the response in a variable and has no output.
Now you can get its data, eg
* http.getStatuscode - This returns the Http status code
* http.getResponseHeader - print Http response header
* http.getResponseData - get data from curl
* http.getResponse - get response body
![Screenshot - example script](docs/images/screenshot_example_01.png)
......@@ -19,3 +19,7 @@ The specialties of this component are
* Bash as shell (runs on Linux - or with Cygwin or other Bash implementations on MS Windows too.)
* Curl must be in the path
* optional: sha1sum (for export function with autogenerated filenames only)
### Screenshot
![Screenshot - example script](images/screenshot_example_01.png)
\ No newline at end of file
......@@ -23,4 +23,6 @@ If you need it in a single script then copy it to its directory. If you need it
### Get the script only
For pure functionality without docs and more you can download the script itself
`wget https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/raw/master/rest-api-client.sh`
# Step 1: source the script
## First steps
### Source the script
You must source the rest-api-client.sh. Then its functions are usable in the current process.
The "methods" start with "http" dot "[method]".
# Step 2: Use http.* functions
### Initialize a new request
```text
http.init
```
### Make a request
```text
http.makeRequest 'http://www.example.com/'
```
This stores the response in a variable and has no output.
### Use http.* functions
Now you can get its data, eg
* http.getStatuscode - This returns the Http status code
* http.getResponseHeader - print Http response header
* http.getResponseData - get data from curl
* http.getResponse - get response body
You should start with *http.help* to get an overwiew.
......@@ -18,12 +41,12 @@ $ . ./rest-api-client.sh
#
$ http.help
Bash REST API client v0.8
Bash REST API client v0.9
This is a bash solution to script REST API calls.
Source:https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client
Source: <https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client>
Docs: <https://os-docs.iml.unibe.ch/bash-rest-api-client/>
License: GNU GPL 3
......@@ -48,11 +71,13 @@ INSTRUCTION:
setAuth AUTH:PASSWORD
Set authentication with user and password for basic auth
Without given parameter, authentication is removed
setAuthorization TYPE TOKEN|HASH
Set authentication with Authorization header.
As TYPE you can use Basic|Bearer|Negotiate|...
2nd param is the token or hased user+password
Without given parameter, authorization is removed
http.setBody DATA
set a body for POST/ PUT requests.
......@@ -175,3 +200,7 @@ INSTRUCTION:
It is useful if you use the AUTOFILE mechanism.
```
### Try it
Execute the script `./tests/example_01_simple_get.sh` to see a basic example.
......@@ -114,6 +114,25 @@ fi
echo "OK, ${myHost} was found."
```
### POST request with Json data
This snippet sends the result of a monitor check to the Json API of a Icinga sattelite. It uses `jo` to generate valid JSON.
```sh
data="$( jo \
check_source=${CHECK} \
check_command="""${myFullscript} $myparams""" \
exit_status=$rc \
ttl=$checkInterval \
execution_start=$iTsStart \
execution_end=$iTsEnd \
performance_data="${outPerfdata}" \
plugin_output="""${output}"""
)"
http.makeRequest POST actions/process-check-result?service=${CHECK}!${SERVICE} "$data"
```
## Authentication with JWT token
The snippet shows how to fetch a token first that will be added to be used in all following requests.
......@@ -136,7 +155,10 @@ http.makeRequest GET "token"
ACCESS_TOKEN=$(http.getResponse | jq -r .access_token)
# Set token for authorization
http.setAuthorization "Bearer ${ACCESS_TOKEN}"
http.setAuthorization "Bearer" "${ACCESS_TOKEN}"
# Unset basic auth
http.setAuth
# ---------- Requests to app or api
http.makeRequest GET "api"
......
## rest-api-client.sh
List of all functions in alphabetic order
### http()
[line: 94](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L94)
### http.addHeader()
```txt
Add a line to the request header
🟩 param string line to add, eg "Connection: keep-alive"
```
[line: 680](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L680)
### http.dump()
```txt
Dump information about request and response
no params
```
[line: 575](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L575)
### http.flushCache()
```txt
Flush the cache
no params
```
[line: 840](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L840)
### http.getRequestAge()
```txt
Get age of the response in sec.
It is especially useful after responseImport
no param
returns integer age of the response in sec
```
[line: 422](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L422)
### http.getRequestTs()
```txt
Get timestamp of the response as a Unix timestamp.
no param
returns string the timestamp of the response
```
[line: 408](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L408)
### http.getResponse()
```txt
Get response body
no param
returns string the response body
```
[line: 441](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L441)
### http.getResponseData()
```txt
Get curl data of this request with status, transferred bytes, speed, ...
no param
returns string the response data
```
[line: 454](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L454)
### http.getResponseHeader()
```txt
Get response header
no param
returns string the response header
```
[line: 467](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L467)
### http.getResponseRaw()
```txt
Get raw response (not available after import)
no params
no param
```
[line: 480](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L480)
### http.getStatus()
```txt
Get Http status as string OK|Redirect|Error
no params
```
[line: 491](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L491)
### http.getStatuscode()
```txt
Get Http status code of the request as 3 digit number
no params
```
[line: 504](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L504)
### http.help()
```txt
show a help text
no params
```
[line: 851](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L851)
### http.init()
```txt
Initialize the client
Initialize the client for a new request. Call this before any other
function. It will reset all variables.
```
[line: 115](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L115)
### http.isClientError()
```txt
Was the repsonse a client error (4xx)
no params
```
[line: 553](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L553)
### http.isError()
```txt
Was the repsonse a client error (4xx or 5xx)
no params
```
[line: 542](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L542)
### http.isOk()
```txt
Check: was response a 2xx status code?
output is a statuscode if it matches ... or empty
Additionally you can verify the return code
$? -eq 0 means YES
$? -ne 0 means NO
no params
```
[line: 520](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L520)
### http.isRedirect()
```txt
Was the repsonse a redirect?
no params
```
[line: 531](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L531)
### http.isServerError()
```txt
Was the repsonse a client error (5xx)
no params
```
[line: 564](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L564)
### http.loadcfg()
```txt
Load a config file
This function is marked as deprecated.
It will be removed in the future.
🟩 param string config file name
Sourcing that file will set the following vars
- RestApiUser
- RestApiPassword
- RestApiBaseUrl
- RestApiDocs
The function will then set the "internal" vars
- http_req__auth
- http_req__fullurl
- http_req__docs
```
[line: 283](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L283)
### http.makeRequest()
```txt
Execute the request
🔹 param string optional: method; GET|POST|PUT|DELETE|...
🔹 param string optional: full url
🔹 param string optional: request body
description:
This function does the following:
1. Check if to use a cache
2. If not cached, make the request
3. If cached, use the cached result
```
[line: 167](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L167)
### http.quit()
```txt
Show error message with last return code and quit with this exitcode
This function is used to quit the script with a meaningful error message
and the exit code of the last command.
The message is printed to STDERR and contains the return code.
If a documentation URL is known, it is printed as a hint.
The exit code is the one of the last command.
To prevent the script from exiting when this function is called from a
sourced file, the exit is commented out.
no params
```
[line: 250](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L250)
### http.responseDelete()
```txt
Delete an exported file; this is especially useful if you use
AUTOFILE functionality
🟩 param string filename with stored response
```
[line: 651](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L651)
### http.responseExport()
```txt
Export response to a file
🔹 param string optional: custom filename
```
[line: 609](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L609)
### http.responseImport()
```txt
Import a former response from a file
🟩 param string filename with stored response
```
[line: 627](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L627)
### http.setAccept()
```txt
set Accept request header and override default
🟩 param string accept header value, eg text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
```
[line: 691](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L691)
### http.setAuth()
```txt
Set basic authentication
Without given parameter, authentication is removed
🔹 param string optional: USER:PASSWORD
```
[line: 707](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L707)
### http.setAuthorization()
```txt
Set authentication via Athorization header
Without given parameter, authorization is removed
🔹 param string optional: type, eg. Basic|Bearer|Negotiate
🔹 param string optional: token or encoded user + password
```
[line: 724](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L724)
### http.setBaseUrl()
```txt
Set a base url of an API
Remark: Then use http.setUrl to complet the url to request
🟩 param string url
```
[line: 751](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L751)
### http.setBody()
```txt
Set body to send for PUTs and POSTs
🟩 param string body
```
[line: 739](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L739)
### http.setCacheFile()
```txt
Set cache file
🟩 param string filename
```
[line: 829](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L829)
### http.setCacheTtl()
```txt
Set cache ttl in seconds
🟩 param integer ttl in seconds
```
[line: 818](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L818)
### http.setDebug()
```txt
Enable or disable debug mode
🟩 param integer 0|1
```
[line: 763](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L763)
### http.setDocs()
[line: 767](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L767)
### http.setFullUrl()
```txt
Set a full url to request
🔹 param string optional: url
```
[line: 789](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L789)
### http.setMethod()
```txt
Set the method to use; GET|POST|PUT|DELETE|...
🟩 param string name of method
```
[line: 778](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L778)
### http.setUrl()
```txt
Complete the base url
🟩 param string url part behind base url
```
[line: 804](https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/rest-api-client.sh#L804)
docs/images/screenshot_example_01.png

540 KiB

......@@ -21,9 +21,10 @@
# 2021-01-21 v0.6 axel.hahn@iml.unibe.ch add Content-type in request header
# 2022-01-11 v0.7 axel.hahn@iml.unibe.ch fixes using shellcheck
# 2024-10-09 v0.8 axel.hahn@unibe.ch add setAuthorization; customize accept header, add custom request headers
# 2024-10-10 v0.9 axel.hahn@unibe.ch update docs
# ======================================================================
http_cfg__about="Bash REST API client v0.8"
http_cfg__about="Bash REST API client v0.9"
typeset -i http_cfg__debug=0
typeset -i http_cfg__cacheTtl=0
http_cfg__cacheDir=/var/tmp/http-cache
......@@ -69,10 +70,11 @@
# ......................................................................
#
# write a debug message to STDERR
# Write a debug message to STDERR
# Do no not change the prefix - is is read in inc_functions
#
# params strings output message
#
function http._wd(){
if [ $http_cfg__debug -gt 0 ]; then
echo -e "\e[33m# RESTAPI::DEBUG $*\e[0m" >&2
......@@ -81,10 +83,11 @@
# ......................................................................
#
# write an error message to STDERR
# Write an error message to STDERR
# Do no not change the prefix - is is read in inc_functions
#
# params strings output message
#
function http._we(){
echo -e "\e[31m# RESTAPI::ERROR $*\e[0m" >&2
}
......@@ -106,6 +109,10 @@ EOH
# ......................................................................
#
# Initialize the client
#
# Initialize the client for a new request. Call this before any other
# function. It will reset all variables.
#
function http.init(){
http._wd "${FUNCNAME[0]}()"
which curl >/dev/null || http.quit
......@@ -149,6 +156,15 @@ EOH
# param string optional: method; GET|POST|PUT|DELETE|...
# param string optional: full url
# param string optional: request body
#
# description:
#
# This function does the following:
#
# 1. Check if to use a cache
# 2. If not cached, make the request
# 3. If cached, use the cached result
#
function http.makeRequest(){
http._wd "${FUNCNAME[0]}()"
......@@ -220,7 +236,18 @@ EOH
#
# Show error message with last return code and quit with this exitcode
#
# This function is used to quit the script with a meaningful error message
# and the exit code of the last command.
#
# The message is printed to STDERR and contains the return code.
# If a documentation URL is known, it is printed as a hint.
#
# The exit code is the one of the last command.
# To prevent the script from exiting when this function is called from a
# sourced file, the exit is commented out.
#
# no params
#
function http.quit(){
rc=$?
http._wd "${FUNCNAME[0]}()"
......@@ -234,7 +261,26 @@ EOH
}
# load a config file
# ......................................................................
#
# Load a config file
#
# This function is marked as deprecated.
# It will be removed in the future.
#
# param string config file name
#
# Sourcing that file will set the following vars
# - RestApiUser
# - RestApiPassword
# - RestApiBaseUrl
# - RestApiDocs
#
# The function will then set the "internal" vars
# - http_req__auth
# - http_req__fullurl
# - http_req__docs
#
function http.loadcfg(){
http._wd "${FUNCNAME[0]}($1) !!! DEPRECATED !!!"
# reset expected vars from config
......@@ -265,6 +311,11 @@ EOH
# Get the response header or response body
#
# param string what to return; one of header|body
#
# Return the response header or the response body. The output is the same
# as that of http.getResponseHeader or http.getResponse. The difference is
# the implementation
#
function http._fetchResponseHeaderOrBody(){
http._wd "${FUNCNAME[0]}($1)"
local isheader=true
......@@ -289,6 +340,13 @@ EOH
# ......................................................................
#
# Get the response data
#
# Return the curl meta infos like http_code, http_connect, local_ip, ...
# as key/ value pairs. Each line is a single key value pair.
#
# The data is extracted from the response header. The format is:
# ${http_req__dataprefix}|key|value|key|value|...
#
function http._fetchResponseData(){
http._wd "${FUNCNAME[0]}()"
echo "${http_resp__all}" | sed "s#${http_req__dataprefix}#\n${http_req__dataprefix}#" | grep "${http_req__dataprefix}" | tail -1 | cut -f 2- -d "|" | sed "s#|#\n#g" | grep -v "${http_req__dataprefix}" | while read -r line; do
......@@ -330,6 +388,9 @@ EOH
# Get a section from dump data
#
# param string what to return; one of HEADER|DATA|BODY
#
# returns string the requested part of the response
#
function http._getFilteredResponse(){
http._wd "${FUNCNAME[0]}($1)"
echo "${http_resp__neutral}" | grep "^#_${1}_|" | cut -f 2- -d "|"
......@@ -339,7 +400,12 @@ EOH
# ......................................................................
#
# Get timestamp of the response
# Get timestamp of the response as a Unix timestamp.
#
# no param
#
# returns string the timestamp of the response
#
function http.getRequestTs(){
http._wd "${FUNCNAME[0]}()"
http._getFilteredResponse REQUEST | grep "^timestamp" | cut -f 2 -d ":"
......@@ -350,6 +416,10 @@ EOH
# Get age of the response in sec.
# It is especially useful after responseImport
#
# no param
#
# returns integer age of the response in sec
#
function http.getRequestAge(){
http._wd "${FUNCNAME[0]}()"
local iAge; typeset -i iAge
......@@ -364,6 +434,11 @@ EOH
# ......................................................................
#
# Get response body
#
# no param
#
# returns string the response body
#
function http.getResponse(){
http._wd "${FUNCNAME[0]}()"
http._getFilteredResponse BODY
......@@ -372,6 +447,11 @@ EOH
# ......................................................................
#
# Get curl data of this request with status, transferred bytes, speed, ...
#
# no param
#
# returns string the response data
#
function http.getResponseData(){
http._wd "${FUNCNAME[0]}()"
http._getFilteredResponse DATA
......@@ -380,6 +460,11 @@ EOH
# ......................................................................
#
# Get response header
#
# no param
#
# returns string the response header
#
function http.getResponseHeader(){
http._wd "${FUNCNAME[0]}()"
http._getFilteredResponse HEADER
......@@ -388,6 +473,11 @@ EOH
# ......................................................................
#
# Get raw response (not available after import)
#
# no params
#
# no param
#
function http.getResponseRaw(){
http._wd "${FUNCNAME[0]}()"
echo "${http_resp__all}"
......@@ -396,6 +486,9 @@ EOH
# ......................................................................
#
# Get Http status as string OK|Redirect|Error
#
# no params
#
function http.getStatus(){
http._wd "${FUNCNAME[0]}($1)"
http.isOk >/dev/null && echo OK
......@@ -406,6 +499,9 @@ EOH
# ......................................................................
#
# Get Http status code of the request as 3 digit number
#
# no params
#
function http.getStatuscode(){
http._wd "${FUNCNAME[0]}()"
http.getResponseData | grep "^http_code:" | cut -f 2 -d ":"
......@@ -419,6 +515,9 @@ EOH
#
# $? -eq 0 means YES
# $? -ne 0 means NO
#
# no params
#
function http.isOk(){
http._wd "${FUNCNAME[0]}()"
http.getStatuscode | grep '2[0-9][0-9]'
......@@ -427,6 +526,9 @@ EOH
# ......................................................................
#
# Was the repsonse a redirect?
#
# no params
#
function http.isRedirect(){
http._wd "${FUNCNAME[0]}()"
http.getStatuscode | grep '3[0-9][0-9]'
......@@ -435,6 +537,9 @@ EOH
# ......................................................................
#
# Was the repsonse a client error (4xx or 5xx)
#
# no params
#
function http.isError(){
http._wd "${FUNCNAME[0]}()"
http.getStatuscode | grep '[45][0-9][0-9]'
......@@ -443,6 +548,9 @@ EOH
# ......................................................................
#
# Was the repsonse a client error (4xx)
#
# no params
#
function http.isClientError(){
http._wd "${FUNCNAME[0]}()"
http.getStatuscode | grep '4[0-9][0-9]'
......@@ -451,6 +559,9 @@ EOH
# ......................................................................
#
# Was the repsonse a client error (5xx)
#
# no params
#
function http.isServerError(){
http._wd "${FUNCNAME[0]}()"
http.getStatuscode | grep '5[0-9][0-9]'
......@@ -458,7 +569,10 @@ EOH
# ......................................................................
#
# dump information about request and response
# Dump information about request and response
#
# no params
#
function http.dump(){
http._wd "${FUNCNAME[0]}()"
http.responseExport
......@@ -470,9 +584,10 @@ EOH
# ......................................................................
#
# helper to replace "AUTOFILE" with something uniq using full url
# Helper to replace "AUTOFILE" with something uniq using full url
#
# param string import or export filename
#
function http._genOutfilename(){
http._wd "${FUNCNAME[0]}($1)"
if echo "$1" | grep -q "AUTOFILE"; then
......@@ -488,8 +603,10 @@ EOH
# ......................................................................
#
# export response to a file
# Export response to a file
#
# param string optional: custom filename
#
function http.responseExport(){
http._wd "${FUNCNAME[0]}($1)"
if [ -z "$1" ]; then
......@@ -507,6 +624,7 @@ EOH
# Import a former response from a file
#
# param string filename with stored response
#
function http.responseImport(){
http._wd "${FUNCNAME[0]}($1)"
local infile
......@@ -530,6 +648,7 @@ EOH
# AUTOFILE functionality
#
# param string filename with stored response
#
function http.responseDelete(){
http._wd "${FUNCNAME[0]}($1)"
local infile
......@@ -558,6 +677,7 @@ EOH
# Add a line to the request header
#
# param string line to add, eg "Connection: keep-alive"
#
function http.addHeader(){
http._wd "${FUNCNAME[0]}($1)"
http_req__headers+=( -H "$1")
......@@ -568,6 +688,7 @@ EOH
# set Accept request header and override default
#
# param string accept header value, eg text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
#
function http.setAccept(){
http._wd "${FUNCNAME[0]}($1)"
if [ -z "$1" ]; then
......@@ -580,8 +701,10 @@ EOH
# ......................................................................
#
# Set basic authentication
# Without given parameter, authentication is removed
#
# param string optional: USER:PASSWORD
#
# param string USER:PASSWORD
function http.setAuth(){
http._wd "${FUNCNAME[0]}($1)"
if [ -z "$1" ]; then
......@@ -594,9 +717,11 @@ EOH
# ......................................................................
#
# Set authentication via Athorization header
# Without given parameter, authorization is removed
#
# param string optional: type, eg. Basic|Bearer|Negotiate
# param string optional: token or encoded user + password
#
# param string type, eg. Basic|Bearer|Negotiate
# param string token or encoded user + password
function http.setAuthorization(){
http._wd "${FUNCNAME[0]}($1 $2)"
if [ -z "$1" ]; then
......@@ -611,6 +736,7 @@ EOH
# Set body to send for PUTs and POSTs
#
# param string body
#
function http.setBody(){
http._wd "${FUNCNAME[0]}($1)"
http_req__body=$1
......@@ -622,6 +748,7 @@ EOH
# Remark: Then use http.setUrl to complet the url to request
#
# param string url
#
function http.setBaseUrl(){
http._wd "${FUNCNAME[0]}($1)"
http_req__baseurl=$1
......@@ -633,6 +760,7 @@ EOH
# Enable or disable debug mode
#
# param integer 0|1
#
function http.setDebug(){
http._wd "${FUNCNAME[0]}($1)"
http_cfg__debug=$1
......@@ -647,6 +775,7 @@ EOH
# Set the method to use; GET|POST|PUT|DELETE|...
#
# param string name of method
#
function http.setMethod(){
http._wd "${FUNCNAME[0]}($1)"
http_req__method=$1
......@@ -657,6 +786,7 @@ EOH
# Set a full url to request
#
# param string optional: url
#
function http.setFullUrl(){
http._wd "${FUNCNAME[0]}($1)"
if [ -z "$1" ]; then
......@@ -671,6 +801,7 @@ EOH
# Complete the base url
#
# param string url part behind base url
#
function http.setUrl(){
http._wd "${FUNCNAME[0]}($1)"
http_req__url=$1
......@@ -684,6 +815,7 @@ EOH
# Set cache ttl in seconds
#
# param integer ttl in seconds
#
function http.setCacheTtl(){
http._wd "${FUNCNAME[0]}($1)"
http_cfg__cacheTtl=$1
......@@ -694,6 +826,7 @@ EOH
# Set cache file
#
# param string filename
#
function http.setCacheFile(){
http._wd "${FUNCNAME[0]}($1)"
http_cfg__cacheFile="$1"
......@@ -702,6 +835,9 @@ EOH
# ......................................................................
#
# Flush the cache
#
# no params
#
function http.flushCache(){
http._wd "${FUNCNAME[0]}($1)"
rm -f ${http_cfg__cacheDir}/*
......@@ -710,7 +846,9 @@ EOH
# ......................................................................
#
# show a help text
#
# no params
#
function http.help(){
cat <<EOH
......@@ -744,11 +882,13 @@ INSTRUCTION:
setAuth AUTH:PASSWORD
Set authentication with user and password for basic auth
Without given parameter, authentication is removed
setAuthorization TYPE TOKEN|HASH
Set authentication with Authorization header.
As TYPE you can use Basic|Bearer|Negotiate|...
2nd param is the token or hased user+password
Without given parameter, authorization is removed
http.setBody DATA
set a body for POST/ PUT requests.
......
#!/bin/bash
cd "$( dirname "$0" )" || exit
BASHDOC=/home/axel/data/opensource/bash/bashdoc/bashdoc2md.sh
SOURCES=../rest-api-client.sh
TARGETBASE=../docs/99_Functions
REPO=https://git-repo.iml.unibe.ch/iml-open-source/bash-rest-api-client/-/blob/master/
echo
echo "GENERATE MARKDOWN DOCS"
echo
for SOURCE in $SOURCES
do
TARGET="$TARGETBASE/$(basename "$SOURCE").md"
if [ "$TARGET" -nt "$SOURCE" ] && [ "$TARGET" -nt "$BASHDOC" ]; then
echo "SKIP: $TARGET is up to date."
else
rm -f "$TARGET"
echo "Generating $TARGET ... "
$BASHDOC -l 2 -r "$REPO" "$SOURCE" > "$TARGET"
fi
ls -l "$SOURCE" "$TARGET"
echo
done
echo "Done."
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment