Sha256: 7e1aad72400bdbf4aa495e3284d5b67ff9e315b225e931bbb48d3a0ab32fdeb5

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

module Remocon
  module Command
    class Pull
      include Remocon::InterpreterHelper

      attr_reader :config, :cmd_opts

      def initialize(opts)
        @config = Remocon::Config.new(opts)
        @cmd_opts = { validate_only: false }
      end

      def require_parameters_file_path
        config.parameters_file_path
      end

      def require_conditions_file_path
        config.conditions_file_path
      end

      def run
        raw_json, etag = do_request

        raw_hash = JSON.parse(raw_json).with_indifferent_access

        raise "etag cannot be fetched. please try again" unless etag

        conditions = raw_hash[:conditions] || []
        parameters = raw_hash[:parameters] || {}

        File.open(config.conditions_file_path, "w+") do |f|
          f.write(JSON.parse(Remocon::ConditionFileDumper.new(sort_conditions(conditions)).dump.to_json).to_yaml)
          f.flush
        end

        File.open(config.parameters_file_path, "w+") do |f|
          f.write(JSON.parse(Remocon::ParameterFileDumper.new(sort_parameters(parameters)).dump.to_json).to_yaml)
          f.flush
        end

        File.open(config.config_json_file_path, "w+") do |f|
          f.write(JSON.pretty_generate({ conditions: sort_conditions(conditions), parameters: sort_parameters(parameters) }))
          f.flush
        end

        File.open(config.etag_file_path, "w+") do |f|
          f.write(etag)
          f.flush
        end
      end

      private

      def do_request
        raw_json, etag = open(config.endpoint, "Authorization" => "Bearer #{config.token}") do |io|
          [io.read, io.meta["etag"]]
        end

        [raw_json, etag]
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
remocon-0.3.1 lib/remocon/command/pull_command.rb
remocon-0.3.0 lib/remocon/command/pull_command.rb
remocon-0.2.0 lib/remocon/command/pull_command.rb