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