feat: add output of response body and headers to files

This commit is contained in:
Victor Westerlund 2026-03-14 09:43:54 +01:00
parent 73bf60d031
commit f4ded08c4c
Signed by: vlw
GPG key ID: 5DAF14C317AA7719
4 changed files with 44 additions and 20 deletions

6
.gitignore vendored
View file

@ -1,4 +1,4 @@
params.txt curl/*
headers.json !curl/.gitkeep
payload.json
disable_peer_validation disable_peer_validation

45
curl.sh
View file

@ -8,18 +8,25 @@ fi
URL="$1" URL="$1"
METHOD="$2" METHOD="$2"
PARAMS_FILE="params.txt"
HEADERS_FILE="headers.json"
PAYLOAD_FILE="payload.json"
DISABLE_SSL_FILE="disable_peer_validation" DISABLE_SSL_FILE="disable_peer_validation"
# Append URL search parameters from params.txt REQ_BODY_FILE="curl/req_body.json"
if [ -f $PARAMS_FILE ]; then REQ_PARAMS_FILE="curl/req_params.txt"
PARAMS=$(<params.txt) REQ_HEADERS_FILE="curl/req_headers.json"
RESP_HEADERS_FILE="curl/resp_headers.txt"
RESP_BODY_RAW_FILE="curl/resp_body.txt"
RESP_BODY_JSON_FILE="curl/resp_body.json"
# Append URL search parameters
if [ -f $REQ_PARAMS_FILE ]; then
# Parse each newline as a separate parameter joined by a "&"
PARAMS=$(tr '\n' '&' < "$REQ_PARAMS_FILE" | sed 's/&$//')
URL="${URL}?${PARAMS}" URL="${URL}?${PARAMS}"
fi fi
# Prepare the curl command # Prepare curl
CURL_CMD="curl -s" CURL_CMD="curl -s"
# Check if SSL peer validation should be disabled # Check if SSL peer validation should be disabled
@ -28,31 +35,37 @@ if [ -f $DISABLE_SSL_FILE ]; then
fi fi
# Add headers from headers.json # Add headers from headers.json
if [ -f $HEADERS_FILE ]; then if [ -f $REQ_HEADERS_FILE ]; then
# Read headers from the JSON file # Read headers from the JSON file
while IFS= read -r line; do while IFS= read -r line; do
HEADER_NAME=$(echo "$line" | jq -r '.[keys[0]]') HEADER_NAME=$(echo "$line" | jq -r '.[keys[0]]')
HEADER_VALUE=$(echo "$line" | jq -r '.[keys[1]]') HEADER_VALUE=$(echo "$line" | jq -r '.[keys[1]]')
CURL_CMD="$CURL_CMD -H \"$HEADER_NAME: $HEADER_VALUE\"" CURL_CMD="$CURL_CMD -H \"$HEADER_NAME: $HEADER_VALUE\""
done < <(jq -c 'to_entries | .[]' "$HEADERS_FILE") done < <(jq -c 'to_entries | .[]' "$REQ_HEADERS_FILE")
fi fi
# Add the request method and URL to the curl command # Add the request method and URL to curl
CURL_CMD="$CURL_CMD -X $METHOD \"$URL\"" CURL_CMD="$CURL_CMD -X $METHOD \"$URL\""
# If the method is not GET, include the payload # If the method is not GET, include the payload
if [ $METHOD != "GET" ]; then if [ $METHOD != "GET" ]; then
if [ -f "$PAYLOAD_FILE" ]; then if [ -f "$REQ_BODY_FILE" ]; then
PAYLOAD=$(<"$PAYLOAD_FILE") PAYLOAD=$(<"$REQ_BODY_FILE")
CURL_CMD="$CURL_CMD -H \"Content-Type: application/json\" -d '$PAYLOAD'" CURL_CMD="$CURL_CMD -H \"Content-Type: application/json\" -d '$PAYLOAD'"
else else
echo "Error: Payload file '${PAYLOAD_FILE}' not found." echo "Error: Payload file '${REQ_BODY_FILE}' not found."
exit 1 exit 1
fi fi
fi fi
# Execute the curl command # Save the response headers and body
CURL_CMD="$CURL_CMD -o $RESP_BODY_RAW_FILE -D $RESP_HEADERS_FILE"
# Execute curl
eval "clear" eval "clear"
echo -e "${METHOD} ${URL}\n"
echo -e "${METHOD} ${URL}"
eval $CURL_CMD eval $CURL_CMD
echo -e ""
# Copy the raw respone body to a pretty-printed JSON file
jq . $RESP_BODY_RAW_FILE > $RESP_BODY_JSON_FILE

0
curl/.gitkeep Normal file
View file

11
init.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
cd curl
echo "" > resp_body.txt
echo "" > req_params.txt
echo "" > resp_headers.txt
echo "{}" > req_body.json
echo "{}" > resp_body.json
echo "{}" > req_headers.json