Sha256: 1d8c08eec199bdf4a5b9097ce89f63ca2baaf7c65ea465af39573b1f93ccdda9
Contents?: true
Size: 1.17 KB
Versions: 2
Compression:
Stored size: 1.17 KB
Contents
require "digest" 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
artifactory-gem_import-0.2.0 | lib/artifactory/gem_import/gems/uploader.rb |
artifactory-gem_import-0.1.4 | lib/artifactory/gem_import/gems/uploader.rb |