Sha256: 8cd69f1bcc0623d2192f0529778a3c45103de038e20614298838387e44c599e2
Contents?: true
Size: 1.51 KB
Versions: 4
Compression:
Stored size: 1.51 KB
Contents
# frozen_string_literal: true require 'tempfile' require 'fileutils' require 'rubygems/util' module Geminabox module Proxy class Splicer < FileHandler def self.make(file_name) splicer = new(file_name) splicer.create splicer end def create if data = new_content f = Tempfile.create('geminabox') f.binmode begin f.write(data) ensure f.close rescue nil end FileUtils.mv f.path, splice_path end end def new_content if local_file_exists? merge_content else remote_content end end def splice_path proxy_path end def splice_folder_path proxy_folder_path end def splice_file_exists? file_exists? splice_path end def merge_content if gzip? merge_gziped_content else merge_text_content end end def gzip? /\.gz$/ =~ file_name end private def merge_gziped_content if rc = remote_content package(unpackage(local_content) | unpackage(rc)) else local_content end end def unpackage(content) Marshal.load(Gem::Util.gunzip(content)) end def package(content) Gem::Util.gzip(Marshal.dump(content)) end def merge_text_content local_content.to_s + remote_content.to_s end end end end
Version data entries
4 entries across 4 versions & 1 rubygems