Sha256: a8a1b6074bd1cb9c2efb236b7a15a066fd9ea3ae54476e6253aeb5f50bf151b7
Contents?: true
Size: 1.61 KB
Versions: 3
Compression:
Stored size: 1.61 KB
Contents
## # This file handles all communication to the Upto servers ## require 'colorize' require 'rex/text' require 'uri' require 'json' require 'http' module Rise module Transport # Handles uploading files class Uploader attr_reader :folder_path, :total_files, :include_folder, :uuid, :current_file attr_accessor :files def initialize(folder_path, include_folder=true) @folder_path = folder_path @files = Dir.glob("#{File.absolute_path(folder_path)}/**/*") @total_files = @files.length @include_folder = include_folder @uuid = "#{File.basename(File.absolute_path(folder_path))}-#{Rex::Text::rand_text_alphanumeric(8)}" # Structure: foldername-8RNDLTRS end def upload!(*) upload_uri_base = "http://rise.sh:8080/api/v1/#{@uuid}" access_uri = "http://rise.sh/#{@uuid}" uri = '' # This sorts the files by (file path) length. # It is supposed to make the server make the first layer of files # before the rest of the layers. ordered_files = files.sort_by(&:length) ordered_files.each do |f| isdir = File.directory?(f) final_path = File.absolute_path(f).gsub(File.expand_path(folder_path), '') uri = URI.parse("#{upload_uri_base}/#{final_path}?dir=#{isdir}") begin HTTP.put(uri.to_s, :body => File.read(f)) rescue Errno::EISDIR HTTP.put(uri.to_s, :body => '') next end end return access_uri end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rise-cli-0.1.4 | lib/core/transport.rb |
rise-cli-0.1.2 | lib/core/transport.rb |
rise-cli-0.1.0 | lib/core/transport.rb |