class Apia::DSLs::Endpoint

Public Instance Methods

action(&block) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 35
def action(&block)
  @definition.action = block
end
argument(*args, **kwargs, &block) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 31
def argument(*args, **kwargs, &block)
  @definition.argument_set.argument(*args, **kwargs, &block)
end
authenticator(klass = nil, &block) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 13
def authenticator(klass = nil, &block)
  if block_given?
    id = "#{@definition.id}/#{Helpers.camelize(klass) || 'Authenticator'}"
    klass = Apia::Authenticator.create(id, &block)
  end

  @definition.authenticator = klass
end
field(name, *args, type: nil, **options, &block) click to toggle source
Calls superclass method Apia::DSLs::Concerns::HasFields#field
# File lib/apia/dsls/endpoint.rb, line 43
def field(name, *args, type: nil, **options, &block)
  if pagination_options = options.delete(:paginate)

    unless @definition.paginated_field.nil?
      raise Apia::RuntimeError, 'Cannot define more than one paginated field per endpoint'
    end

    pagination_options = {} if pagination_options == true
    @definition.paginated_field = name

    argument :page, type: Scalars::Integer, default: 1 do
      validation(:greater_than_zero) { |o| o.positive? }
    end

    argument :per_page, type: Scalars::Integer, default: 30 do
      validation(:greater_than_zero) { |o| o.positive? }
      validation(:less_than_or_equal_to_100) { |o| o <= (pagination_options[:maximum_per_page]&.to_i || 200) }
    end

    field :pagination, type: PaginationObject
  end
  super(name, *args, type: type, **options, &block)
end
http_status(status) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 39
def http_status(status)
  @definition.http_status = status
end
potential_error(klass, &block) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 22
def potential_error(klass, &block)
  if block_given? && klass.is_a?(String)
    id = "#{@definition.id}/#{Helpers.camelize(klass)}"
    klass = Apia::Error.create(id, &block)
  end

  @definition.potential_errors << klass
end
scope(name) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 71
def scope(name)
  return if @definition.scopes.include?(name.to_s)

  @definition.scopes << name.to_s
end
scopes(*names) click to toggle source
# File lib/apia/dsls/endpoint.rb, line 67
def scopes(*names)
  names.each { |name| scope(name) }
end