module LHS::Item::Save
Public Instance Methods
save(options = nil)
click to toggle source
# File lib/lhs/concerns/item/save.rb, line 16 def save(options = nil) save!(options) rescue LHC::Error false end
save!(options = {})
click to toggle source
# File lib/lhs/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 LHC::Error => e self.errors = LHS::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/lhs/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/lhs/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 options.fetch(:followlocation, true) && 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