add generateSignature and getSignedUrl method