module DHS::Item::Save

Public Instance Methods

save(options = nil) click to toggle source
# File lib/dhs/concerns/item/save.rb, line 16
def save(options = nil)
  save!(options)
rescue DHC::Error
  false
end
save!(options = {}) click to toggle source
# File lib/dhs/concerns/item/save.rb, line 22
def save!(options = {})
  options = options.present? ? options.dup : {}
  data = _data._raw.dup
  url = url_for_persistance!(data, options)
  create_and_merge_data!(
    apply_default_creation_options(options, url, data)
  )
rescue DHC::Error => e
  self.errors = DHS::Problems::Errors.new(e.response, record)
  raise e
end

Private Instance Methods

apply_default_creation_options(options, url, data) click to toggle source
# File lib/dhs/concerns/item/save.rb, line 36
def apply_default_creation_options(options, url, data)
  options = options.merge(method: :post, url: url, body: data)
  options[:headers] ||= {}
  options
end
create_and_merge_data!(options) click to toggle source
# File lib/dhs/concerns/item/save.rb, line 42
def create_and_merge_data!(options)
  response_data = record.request(options)
  if response_data.present?
    _data.merge_raw!(response_data.unwrap(:item_created_key))
    response_headers = response_data._request.response.headers
  end
  if response_headers && response_headers['Location']
    location_data = record.request(options.merge(url: response_headers['Location'], method: :get, body: nil))
    _data.merge_raw!(location_data.unwrap(:item_created_key))
  end
  true
end