lib/zold/commands/push.rb in zold-0.0.8 vs lib/zold/commands/push.rb in zold-0.1

- old
+ new

@@ -1,6 +1,6 @@ -# Copyright (c) 2018 Zerocracy, Inc. +# Copyright (c) 2018 Yegor Bugayenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -18,32 +18,32 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. require 'net/http' require_relative '../log.rb' +require_relative '../http.rb' # PUSH command. # Author:: Yegor Bugayenko (yegor256@gmail.com) -# Copyright:: Copyright (c) 2018 Zerocracy, Inc. +# Copyright:: Copyright (c) 2018 Yegor Bugayenko # License:: MIT module Zold # Wallet pushing command class Push - def initialize(wallet:, log: Log::Quiet.new) + def initialize(wallet:, remotes:, log: Log::Quiet.new) @wallet = wallet + @remotes = remotes @log = log end - def run + def run(_ = []) raise 'The wallet is absent' unless @wallet.exists? - request = Net::HTTP::Put.new("/wallets/#{@wallet.id}") - request.body = File.read(@wallet.path) - response = Net::HTTP.new('b1.zold.io', 80).start do |http| - http.request(request) + remote = @remotes.all[0] + uri = URI("#{remote[:home]}/wallet/#{@wallet.id}") + response = Http.new(uri).put(File.read(@wallet.path)) + unless response.code == '200' + raise "Failed to push to #{uri}: #{response.code}/#{response.message}" end - unless response.code.to_i == 200 - raise "Failed to push to the node, code=#{response.code}" - end - @log.info("The #{@wallet.id} pushed to the server") + @log.info("The #{@wallet.id} pushed to #{uri}") end end end