mirror of
https://github.com/imgproxy/imgproxy.git
synced 2024-11-29 08:22:11 +02:00
26 lines
794 B
Ruby
26 lines
794 B
Ruby
require "openssl"
|
|
require "base64"
|
|
|
|
key = ["943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881"].pack("H*")
|
|
salt = ["520f986b998545b4785e0defbc4f3c1203f22de2374a3d53cb7a7fe9fea309c5"].pack("H*")
|
|
|
|
url = "http://img.example.com/pretty/image.jpg"
|
|
|
|
# You can trim padding spaces to get good-looking url
|
|
encoded_url = Base64.urlsafe_encode64(url).tr("=", "").scan(/.{1,16}/).join("/")
|
|
|
|
resize = "fill"
|
|
width = 300
|
|
height = 300
|
|
gravity = "no"
|
|
enlarge = 1
|
|
extension = "png"
|
|
|
|
path = "/#{resize}/#{width}/#{height}/#{gravity}/#{enlarge}/#{encoded_url}.#{extension}"
|
|
|
|
digest = OpenSSL::Digest.new("sha256")
|
|
# You can trim padding spaces to get good-looking url
|
|
hmac = Base64.urlsafe_encode64(OpenSSL::HMAC.digest(digest, key, "#{salt}#{path}")).tr("=", "")
|
|
|
|
signed_path = "/#{hmac}#{path}"
|