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