Sha256: 86ee72f16b31de1f90934a77d4208ca31eba38fb43f1a88384fe2548f8102ffe
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true require 'active_support' class LHS::Item < LHS::Proxy autoload :EndpointLookup, 'lhs/concerns/item/endpoint_lookup' module Save extend ActiveSupport::Concern included do include EndpointLookup end def save(options = nil) save!(options) rescue LHC::Error false end 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 def apply_default_creation_options(options, url, data) options = options.merge(method: :post, url: url, body: data) options[:headers] ||= {} options end 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lhs-26.0.1 | lib/lhs/concerns/item/save.rb |
lhs-26.0.0 | lib/lhs/concerns/item/save.rb |
lhs-25.2.0 | lib/lhs/concerns/item/save.rb |