module Collins::Api::AssetState

Public Class Methods

state_test() click to toggle source
# File lib/collins/api/asset_state.rb, line 4
def state_test; @state_test end
state_test=(v;) click to toggle source
# File lib/collins/api/asset_state.rb, line 5
def state_test= v; @state_test = v end

Public Instance Methods

state_create!(name, label, description, status = nil) click to toggle source
# File lib/collins/api/asset_state.rb, line 8
def state_create! name, label, description, status = nil
  name = validate_state_name name
  parameters = {
    :label => label,
    :description => description,
    :status => status
  }

  if not ::Collins::Api::AssetState.state_test then
    parameters = select_non_empty_parameters parameters
  end

  logger.debug("Creating state with name #{name}")
  http_put("/api/state/#{name}", parameters) do |r|
    parse_response r, :expects => 201, :as => :status, :raise => strict?, :default => false
  end
end
state_delete!(state) click to toggle source
# File lib/collins/api/asset_state.rb, line 26
def state_delete! state
  name = validate_state_name case state.class
  when ::Collins::AssetState
    state.name
  else
    state
  end

  logger.debug("Deleting state with name #{name}")
  http_delete("/api/state/#{name}") do |r|
    parse_response r, :expects => 202, :as => :data, :raise => strict?, :default => 0 do |js|
      js["DELETED"].to_s.to_i
    end
  end
end
state_get(name) click to toggle source
# File lib/collins/api/asset_state.rb, line 65
def state_get name
  name = validate_state_name name
  logger.debug("Fetching state with name #{name}")
  http_get("/api/state/#{name}") do |r|
    empty = ::Collins::AssetState.new({})
    parse_response r, :expects => 200, :as => :data, :default => empty, :raise => false do |js|
      ::Collins::AssetState.from_json(js)
    end
  end
end
state_get_all() click to toggle source
# File lib/collins/api/asset_state.rb, line 76
def state_get_all
  http_get("/api/states") do |r|
    parse_response r, :expects => 200, :as => :data, :default => [], :raise => false do |js|
      js.map do |state|
        ::Collins::AssetState.from_json(state)
      end
    end
  end
end
state_update!(state, options = {}) click to toggle source
# File lib/collins/api/asset_state.rb, line 42
def state_update! state, options = {}
  name = validate_state_name case state.class
  when ::Collins::AssetState
    state.name
  else
    state
  end

  parameters = {
    :label => options[:label],
    :description => options[:description],
    :name => options[:name],
    :status => options[:status]
  }
  if not ::Collins::Api::AssetState.state_test then
    parameters = select_non_empty_parameters parameters
  end
  logger.debug("Updating state with name #{name} params #{parameters}")
  http_post("/api/state/#{name}", parameters) do |r|
    parse_response r, :expects => 200, :as => :status, :raise => strict?, :default => false
  end
end

Private Instance Methods

state_test() click to toggle source
# File lib/collins/api/asset_state.rb, line 4
def state_test; @state_test end
state_test=(v;) click to toggle source
# File lib/collins/api/asset_state.rb, line 5
def state_test= v; @state_test = v end
validate_state_name(name) click to toggle source
# File lib/collins/api/asset_state.rb, line 87
def validate_state_name name
  if ::Collins::Api::AssetState.state_test then
    return name
  end
  name_opt = ::Collins::Option(name).map {|x| x.to_s.strip}.filter_not {|x| x.empty?}.filter {|x|
    x.size > 1 && x.size <= 32
  }
  if name_opt.empty? then
    raise ::Collins::ExpectationFailedError.new("name must be between 2 and 32 characters")
  else
    name_opt.get
  end
end