class DiscourseApi::API::Params

Public Class Methods

new(args) click to toggle source
# File lib/discourse_api/api/params.rb, line 9
def initialize(args)
  raise ArgumentError.new("Required to be initialized with a Hash") unless args.is_a? Hash
  @args = args
  @required = []
  @optional = []
  @defaults = {}
end

Public Instance Methods

default(args) click to toggle source
# File lib/discourse_api/api/params.rb, line 30
def default(args)
  args.each { |k, v| @defaults[k] = v }
  self
end
optional(*keys) click to toggle source
# File lib/discourse_api/api/params.rb, line 25
def optional(*keys)
  @optional.concat(keys)
  self
end
required(*keys) click to toggle source
# File lib/discourse_api/api/params.rb, line 17
def required(*keys)
  @required.concat(keys)
  @required.each do |k|
    raise ArgumentError.new("#{k} is required but not specified") unless @args.key?(k)
  end
  self
end
to_h() click to toggle source
# File lib/discourse_api/api/params.rb, line 35
def to_h
  h = {}

  @required.each { |k| h[k] = @args[k] }

  @optional.each { |k| h[k] = @args[k] if @args.include?(k) }

  @defaults.each { |k, v| @args.key?(k) ? h[k] = @args[k] : h[k] = v }

  h
end