class Paperclip::Tinypng
Public Class Methods
api_key()
click to toggle source
# File lib/paperclip_optimal_compressor.rb, line 12 def self.api_key defined?(@@tinypng_api_key) ? @@tinypng_api_key : raise('TinyPNG API Key not set. Please see doc: https://gitlab.com/unni.tallman/paperclip_optimal_compressor') end
api_key=(key)
click to toggle source
# File lib/paperclip_optimal_compressor.rb, line 8 def self.api_key=(key) @@tinypng_api_key = key end
Public Instance Methods
make()
click to toggle source
# File lib/paperclip_optimal_compressor.rb, line 16 def make basename = File.basename(file.path, File.extname(file.path)) dst_format = options[:format] ? ".\#{options[:format]}" : '' dst = Tempfile.new([basename, dst_format]) dst.binmode tinypng_compress File.expand_path(file.path), File.expand_path(dst.path) dst end
tinypng_compress(input, output)
click to toggle source
# File lib/paperclip_optimal_compressor.rb, line 28 def tinypng_compress(input, output) uri = URI.parse('https://api.tinypng.com/shrink') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true # http.ssl_version = :TLSv1 # http.ciphers = ['DES-CBC3-SHA'] request = Net::HTTP::Post.new(uri.request_uri) request.basic_auth('api', Paperclip::Tinypng.api_key) response = http.request(request, File.binread(input)) if response.code == '201' File.binwrite(output, http.get(response['location']).body) else puts 'Compression failed' end end