added arguments to generate_signature and headers to allow for a body content to be passed to generate the signature