Skip to content

Commit

Permalink
Merge pull request #6 from performant-software/feature/udcsl114_repla…
Browse files Browse the repository at this point in the history
…ce_media_reverted

UDCSL #114 - Replace media
  • Loading branch information
dleadbetter authored Feb 27, 2023
2 parents 15c59ea + 5210d4e commit 4f7a3ba
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 14 deletions.
8 changes: 8 additions & 0 deletions app/models/concerns/triple_eye_effable/resourceable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,29 @@ module Resourceable
def create_resource
service = TripleEyeEffable::Cloud.new
service.create_resource(self)

throw(:abort) unless self.errors.empty?
end

def delete_resource
service = TripleEyeEffable::Cloud.new
service.delete_resource(self)

throw(:abort) unless self.errors.empty?
end

def load_resource
service = TripleEyeEffable::Cloud.new
service.load_resource(self)

throw(:abort) unless self.errors.empty?
end

def update_resource
service = TripleEyeEffable::Cloud.new
service.update_resource(self)

throw(:abort) unless self.errors.empty?
end
end
end
Expand Down
41 changes: 27 additions & 14 deletions app/services/triple_eye_effable/cloud.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,43 +26,49 @@ def initialize

def create_resource(resourceable)
response = self.class.post(base_url, body: request_body(resourceable), headers: headers)
resource_id, = parse_response(response)
create_description resourceable, resource_id
add_error(resourceable, response) and return unless response.success?

resource_id, data = parse_response(response)
resource_description = ResourceDescription.new(resource_id: resource_id)

populate_description resource_description, data
resourceable.resource_description = resource_description
end

def delete_resource(resourceable)
return if resourceable.resource_description.nil?

id = resourceable.resource_description.resource_id
self.class.delete("#{base_url}/#{id}", headers: headers)
response = self.class.delete("#{base_url}/#{id}", headers: headers)
add_error(resourceable, response) unless response.success?
end

def load_resource(resourceable)
return if resourceable.resource_description.nil?

resource_description = resourceable.resource_description
response = self.class.get("#{base_url}/#{resource_description.resource_id}")
resource_id, data = parse_response(response)
response = self.class.get("#{base_url}/#{resource_description.resource_id}", headers: headers)
add_error(resourceable, response) and return unless response.success?

data&.keys&.each do |key|
next unless resource_description.respond_to?("#{key.to_s}=")
resource_description.send("#{key.to_s}=", data[key])
end
resource_id, data = parse_response(response)
populate_description resource_description, data
end

def update_resource(resourceable)
id = resourceable.resource_description.resource_id
self.class.put("#{base_url}/#{id}", body: request_body(resourceable), headers: headers)
response = self.class.put("#{base_url}/#{id}", body: request_body(resourceable), headers: headers)
add_error(resourceable, response) unless response.success?
end

private

def base_url
"#{@api_url}/public/resources"
def add_error(resourceable, response)
message = response['exception'] || response['message'] || response['errors']
resourceable.errors.add(:base, message)
end

def create_description(resourceable, resource_id)
resourceable.resource_description = ResourceDescription.new(resource_id: resource_id)
def base_url
"#{@api_url}/public/resources"
end

def headers
Expand All @@ -76,6 +82,13 @@ def parse_response(response)
[data[:uuid], data.except(:uuid)]
end

def populate_description(resource_description, data)
data&.keys&.each do |key|
next unless resource_description.respond_to?("#{key.to_s}=")
resource_description.send("#{key.to_s}=", data[key])
end
end

def request_body(resourceable)
name = resourceable.name.force_encoding(Encoding::ASCII_8BIT) if resourceable.respond_to?(:name)
content = resourceable.content if resourceable.respond_to?(:content)
Expand Down

0 comments on commit 4f7a3ba

Please sign in to comment.