Skip to content
shell
#!/bin/bash

export LANG=en_US.UTF-8

# Constants Definition
accessKey="a1"
secretKey="a2"
apiURL="https://api.upgrade.toolsetlink.com/v1/file/upgrade"
uri="/v1/file/upgrade"

# Function to generate RFC3339 format time
generate_rfc3339_time() {
    if [[ "$(uname)" == "Darwin" ]]; then
        # macOS system handling
        # First get current time, accurate to seconds
        local base_time=$(date +"%Y-%m-%dT%H:%M:%S")
        # Concatenate into complete RFC3339 format time
        echo "${base_time}+08:00"
    else
        # Linux system handling
        # Use date command to directly generate RFC3339 format time
        date +"%Y-%m-%dT%H:%M:%S+08:00"
    fi
}


# 1. Construct request body
requestBody='{
    "fileKey": "key1",
    "versionCode": 1,
    "appointVersionCode": 0,
    "devModelKey": "12312",
    "devKey": "12312"
}'

# 2. Generate request parameters
timestamp=$(generate_rfc3339_time)
echo "Generated RFC3339 format time: $timestamp"
nonce=$(head -c 8 /dev/urandom | xxd -p)

# 3. Generate signature
signStr="body=$requestBody&nonce=$nonce&secretKey=$secretKey&timestamp=$timestamp&url=$uri"
signature=$(printf "%s" "$signStr" | md5sum | awk '{print $1}')

# 4. Print timestamp
echo "timestamp: $timestamp"

# 5. Send HTTP request
response=$(curl -s -X POST \
  -H "X-Timestamp: $timestamp" \
  -H "X-Nonce: $nonce" \
  -H "X-AccessKey: $accessKey" \
  -H "X-Signature: $signature" \
  -H "Content-Type: application/json" \
  -d "$requestBody" \
  "$apiURL")

# 6. Get response status code
statusCode=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
  -H "X-Timestamp: $timestamp" \
  -H "X-Nonce: $nonce" \
  -H "X-AccessKey: $accessKey" \
  -H "X-Signature: $signature" \
  -H "Content-Type: application/json" \
  -d "$requestBody" \
  "$apiURL")

# 7. Process response
echo "Status Code: $statusCode"
echo "Response: $response"

toolsetlink@163.com