module Rubeetup::RequestBuilder

Allows a Requester object to compose a Request instance with the passed data

Public Class Methods

compose_request(name, args) click to toggle source

Creates an instance of the chosen request type @note only preliminary error checking on the request is performed here. @param [Symbol] name the request’s name @param [Hash{Symbol=>String}] args holds the request’s options @return [Rubeetup::Request] the newly created Request instance

# File lib/rubeetup/request_builder.rb, line 14
def compose_request(name, args)
  verb = get_verb(name)
  validate_verb(verb)
  request_type.new(
      name: name,
      http_verb: infer_http_verb(verb),
      options: args.first
  )
end

Private Class Methods

error_message(verb, valid_verbs) click to toggle source
# File lib/rubeetup/request_builder.rb, line 53
      def error_message(verb, valid_verbs)
        <<-DOC.gsub(/^ {10}/, '')
          '#{verb}' is an invalid method.
          The only available requests must begin with any of:
          #{valid_verbs.join(', ')}
          Followed by underscore, and a Meetup request name.
          Consult the documentation for a complete list of available requests.
        DOC
      end
get_verb(name) click to toggle source

Parses the request name, and attempts to split it around the leftmost underscore char. If the name is properly formed, then the left half is the verb of the request @param [Symbol] name the request name @return [Symbol] if name contains the required underscore char @return [nil] if name is invalid

# File lib/rubeetup/request_builder.rb, line 42
def get_verb(name)
  pos = (name =~ /_/)
  pos ? name[0...pos].to_sym : nil
end
infer_http_verb(verb) click to toggle source
# File lib/rubeetup/request_builder.rb, line 63
def infer_http_verb(verb)
  verbs[verb]
end
request_type() click to toggle source
# File lib/rubeetup/request_builder.rb, line 26
def request_type
  Rubeetup::Request
end
validate_verb(verb) click to toggle source
# File lib/rubeetup/request_builder.rb, line 47
def validate_verb(verb)
  valid_verbs = verbs.keys
  fail Rubeetup::RequestError, error_message(verb, valid_verbs) unless
    valid_verbs.include? verb
end
verbs() click to toggle source
# File lib/rubeetup/request_builder.rb, line 30
def verbs
  { create: :post, get: :get, edit: :post, delete: :delete }
end