class Eco::API::UseCases::OozeSamples::OozeBaseCase
@attr_reader target [Ecoportal::API::V2::Page] current target ooze.
Constants
- DRY_COUNT
- SAVE_PATCH
Attributes
options[R]
session[R]
target[R]
usecase[R]
Public Instance Methods
main(session, options, usecase) { || ... }
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 14 def main(session, options, usecase) options[:end_get] = false raise "You need to inherit from this class ('#{self.class}') and call super with a block" unless block_given? @session = session; @options = options; @usecase = usecase @target = nil yield end
process_ooze(ooze = target) { |ooze| ... }
click to toggle source
Write here your script
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 23 def process_ooze(ooze = target) raise "You need to inherit from this class ('#{self.class}') and call super with a block" unless block_given? yield(ooze) update_ooze(ooze) end
Private Instance Methods
apiv2()
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 133 def apiv2 @apiv2 ||= session.api(version: :oozes) end
backup_patch!(ooze = target)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 108 def backup_patch!(ooze = target) unless patch = (patch_doc(ooze) || {})["page"] logger.info "No changes to update for #{object_reference(ooze)}." return end patch = patch_doc(ooze) # store the request File.open(SAVE_PATCH, "w") do |file| #file << (patch_doc || {}).to_json file << JSON.pretty_generate(patch || {}) end # TODO: ooze_requests folder with subfolders: for each run puts "Saved patch at: #{File.expand_path(SAVE_PATCH)}" end
before_loading_new_target(ooze_id)
click to toggle source
Hook method to use before the target is switched
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 32 def before_loading_new_target(ooze_id) end
dirty?(object)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 104 def dirty?(object) object && patch_doc(object)["page"] end
dry_count()
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 128 def dry_count @dry_count ||= 0 @dry_count += 1 end
exit_error(msg)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 137 def exit_error(msg) logger.error(msg) exit(1) end
new_target(object, warn_pending_changes: true) { |target| ... }
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 92 def new_target(object, warn_pending_changes: true) if dirty?(target) if warn_pending_changes msg = "You you are switching to a new target #{object_reference(object)}" msg += " after doing unsaved changes to #{object_reference(target)}" logger.warn msg end yield(target) if block_given? end @target = object end
ooze(ooze_id = nil, stage_id: nil)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 35 def ooze(ooze_id = nil, stage_id: nil) return target unless ooze_id before_loading_new_target(ooze_id) apiv2.pages.get(ooze_id, stage_id: stage_id).tap do |ooze| if ooze new_target(ooze) logger.info("Got #{object_reference(ooze)}") else exit_error "Could not get ooze '#{ooze_id}'" end end end
patch_doc(ooze = target)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 124 def patch_doc(ooze = target) apiv2.pages.get_body(ooze) end
stage(id_name = nil, ooze: target)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 48 def stage(id_name = nil, ooze: target) if ooze_id = ooze && ooze.id exit_error "#{object_reference(ooze)} does not have stages!" unless ooze.stages? else exit_error "There's no target ooze to get retrieve stages from" end if stg = ooze.stages[id_name] || ooze.stages.get_by_name(id_name) return ooze if ooze.respond_to?(:current_stage_id) && (ooze.current_stage_id == stg.id) before_loading_new_target(ooze_id) return apiv2.pages.get(ooze_id, stage_id: stg.id).tap do |stage| if stage new_target(stage) logger.info("Got #{object_reference(stage)} from #{object_reference(ooze)}") else exit_error "Could not get stage '#{id_name}' in ooze '#{ooze_id}'" end end end exit_error "Stage '#{id_name}' doesn't exist in ooze '#{ooze_id}'" end
update_ooze(ooze = target)
click to toggle source
# File lib/eco/api/usecases/ooze_samples/ooze_base_case.rb, line 70 def update_ooze(ooze = target) if !options[:simulate] return unless dirty?(ooze) apiv2.pages.update(ooze).tap do |response| if response.success? ooze.consolidate! logger.info("Successful update of #{object_reference(ooze)}") else logger.error("Could not update #{object_reference(ooze)} (created_at: #{ooze.created_at}: #{response.body}") end end else unless options.dig(:feedback, :only_stats) if patch = (patch_doc(ooze) || {})["page"] pp patch end end backup_patch!(ooze) exit(0) if dirty?(ooze) && dry_count > DRY_COUNT end end