Sha256: ba637ff263406aeac3bdd2cfcc9d57318bd9a8aa00dea6e9d0f8fd62311b93e4
Contents?: true
Size: 1.18 KB
Versions: 3
Compression:
Stored size: 1.18 KB
Contents
require "digest" require "json" module Artifactory module GemImport module Gems class Uploader def call(url, headers, file_path) file = File.open file_path, "r" [:ok, upload(url, headers, file)] rescue Net::HTTPClientException, Net::HTTPFatalError, Net::OpenTimeout, SocketError => err # TODO handle File errors, JSON parse errors [:error, err.message] end private def upload(url, headers, file) headers = headers.merge "Content-Length" => file.size.to_s, "Transfer-Encoding" => "chunked", "X-Checksum-Sha1" => sha1(file), "X-Checksum-Md5" => md5(file) response = HTTParty.put url, headers: headers, body_stream: file response.success? ? JSON.parse(response.body) : response.error! end def sha1(file) Digest::SHA1.hexdigest(file.read).tap { file.rewind } end def md5(file) Digest::MD5.hexdigest(file.read).tap { file.rewind } end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems