Sha256: fd5e9b5d84e011bfc258c04eedd49bdfd3f8d2bfb9dda398a53a8ef90a798438

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

class Eco::API::UseCases::OozeSamples::OozeUpdateCase < Eco::API::Common::Loaders::UseCase
  name "single-ooze-case"
  type :other

  attr_reader :session, :options, :usecase

  SAVE_PATCH = "ooze_patch_update.json"

  def main(session, options, usecase)
    @session = session; @options = options; @usecase = usecase
    yield
    end_script!
  end

  private

  def end_script!
    exit_if_no_changes!
    backup_patch!
    launch_request unless options[:simulate]
    exit(0)
  end

  def ooze_id
    options.dig(:source, :ooze_id)
  end

  def ooze
    @ooze ||= apiv2.pages.get(ooze_id).tap do |ooze|
      if ooze
        logger.info("Got ooze '#{ooze_id}': '#{ooze.name}'")
      else
        logger.error("Could not get ooze '#{ooze_id}'")
        exit(1)
      end
    end
  end

  def launch_request
    prompt_to_confirm!

    apiv2.pages.update(ooze).tap do |response|
      if response.success?
        logger.info("All went OK")
      else
        logger.error(response.body)
      end
    end
  end

  def exit_if_no_changes!
    unless changes = !!patch_doc["page"]
      logger.warn "No Changes!!"
      exit(0)
    end
  end

  def apiv2
   @apiv2 ||= session.api(version: :oozes)
  end

  def patch_doc(renew: false)
    return @patch_doc if @patch_doc && !renew
    @patch_doc = apiv2.pages.get_body(ooze)
  end

  def backup_patch!
    # store the request
    File.open(SAVE_PATCH, "w") do |file|
      #file << (patch_doc || {}).to_json
      file << JSON.pretty_generate(patch_doc || {})
    end
    puts "Saved patch at: #{File.expand_path(SAVE_PATCH)}"
  end

  def logger
    session.logger
  end

  def prompt_to_confirm!
    print "\nDo you want to proceed (y/N)?  "
    exit(1) unless $stdin.gets.chomp.to_s.downcase == "y"
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
eco-helpers-2.0.2 lib/eco/api/usecases/ooze_samples/ooze_update_case.rb
eco-helpers-1.5.15 lib/eco/api/usecases/ooze_samples/ooze_update_case.rb