module Dhis2::Api::Creatable::ClassMethods
Public Instance Methods
create(client, args, raw_input = false)
click to toggle source
# File lib/dhis2/api/creatable.rb, line 11 def create(client, args, raw_input = false) if raw_input client.post(path: resource_name, payload: args, raw_input: true).tap do |response| validate_instance_creation(response) end else args = creation_args(args) with_valid_args(args) do response = client.post(path: resource_name, payload: args) validate_instance_creation(response) new(client, args.merge(id: created_instance_id(response))) end end end
Private Instance Methods
creation_args(args)
click to toggle source
# File lib/dhis2/api/creatable.rb, line 32 def creation_args(args) creation_defaults(args).merge(args).keep_if { |_, v| !v.nil? } end
creation_defaults(_args)
click to toggle source
# File lib/dhis2/api/creatable.rb, line 28 def creation_defaults(_args) {} end
with_valid_args(args) { || ... }
click to toggle source
# File lib/dhis2/api/creatable.rb, line 36 def with_valid_args(args) validator = self::Schema.call(args) if validator.success? yield else raise Dhis2::CreationError, "Validation Error: #{validator.messages}" end end