ExternalProject: Add HTTP_HEADER
Example from !105 (merged) can be rewritten as:
cmake_minimum_required(VERSION 3.0)
project(foo)
set(S3_KEY "...")
set(S3_SECRET "...")
set(S3_BUCKET_NAME "...")
set(FILENAME "...")
set(SHA1 "...")
set(S3_RESOURCE "/${S3_BUCKET_NAME}/${FILENAME}")
set(content_type "application/x-compressed-tar")
string(TIMESTAMP now "%a, %d %b %Y %H:%M:%S +0000" UTC)
set(string_to_sign "GET\n\n${content_type}\n${now}\n${S3_RESOURCE}")
# FIXME: workaround, tested on Linux
execute_process(
COMMAND echo -n "${string_to_sign}"
COMMAND openssl sha1 -hmac "${S3_SECRET}" -binary
COMMAND base64
RESULT_VARIABLE result
OUTPUT_VARIABLE signature
ERROR_VARIABLE error
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
# TODO: check ${result}, print ${error}
include(ExternalProject) # ExternalProject_Add
ExternalProject_Add(
foo
URL "https://${S3_BUCKET_NAME}.s3.amazonaws.com/${FILENAME}"
URL_HASH SHA1=${SHA1}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
HTTP_HEADER "Host: ${S3_BUCKET_NAME}.s3.amazonaws.com"
HTTP_HEADER "Date: ${now}"
HTTP_HEADER "Content-Type: ${content_type}"
HTTP_HEADER "Authorization: AWS ${S3_KEY}:${signature}"
)