Class: MailchimpAPI::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/mailchimp-api/request.rb

Overview

Request class for handling Mailchimp API requests

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_method, url:, path:, query: nil, body: nil, headers: nil) ⇒ Request

Initializes a new API request

Examples:

request = MailchimpAPI::Request.new(
  Net::HTTP::Get,
  url: "https://us1.api.mailchimp.com/3.0/",
  path: "/lists",
  query: { count: 10 }
)

Parameters:

  • http_method (Net::HTTP::Request)

    HTTP method class

  • url (String)

    Base URL for the request

  • path (String)

    API endpoint path

  • query (Hash) (defaults to: nil)

    Optional query parameters

  • body (Hash) (defaults to: nil)

    Optional request body

  • headers (Hash) (defaults to: nil)

    Optional request headers



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/mailchimp-api/request.rb', line 39

def initialize(http_method, url:, path:, query: nil, body: nil, headers: nil)
  @init_http_method = http_method
  @init_url = url
  @init_path = path
  @init_query = query
  @init_body = body
  @init_headers = headers

  uri = prepare_uri(url, path, query)
  headers = prepare_headers(headers)
  body = prepare_body(body)
  http_method = prepare_http_method(http_method, headers)

  @http_request = build_http_request(http_method, uri: uri, body: body, headers: headers)
end

Instance Attribute Details

#http_requestNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def http_request
  @http_request
end

#init_base_urlNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_base_url
  @init_base_url
end

#init_bodyNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_body
  @init_body
end

#init_headersNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_headers
  @init_headers
end

#init_http_methodNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_http_method
  @init_http_method
end

#init_pathNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_path
  @init_path
end

#init_queryNet::HTTP::Request, ... (readonly)

Returns:

  • (Net::HTTP::Request)

    The HTTP request object

  • (String)

    The initial HTTP method

  • (String)

    The initial base URL

  • (String)

    The initial path

  • (Hash)

    The initial query parameters

  • (Hash)

    The initial request body

  • (Hash)

    The initial request headers



16
17
18
# File 'lib/mailchimp-api/request.rb', line 16

def init_query
  @init_query
end

Instance Method Details

#bodyString?

Returns HTTP request body.

Examples:

request.body # => '{"name":"New List"}'

Returns:

  • (String, nil)

    HTTP request body



79
80
81
# File 'lib/mailchimp-api/request.rb', line 79

def body
  http_request.body
end

#headersHash

Returns HTTP request headers.

Examples:

request.headers # => { "content-type" => "application/json" }

Returns:

  • (Hash)

    HTTP request headers



93
94
95
# File 'lib/mailchimp-api/request.rb', line 93

def headers
  http_request.each_header.to_h
end

#methodString

Returns HTTP request method name.

Examples:

request.method # => "GET"

Returns:

  • (String)

    HTTP request method name



58
59
60
# File 'lib/mailchimp-api/request.rb', line 58

def method
  http_request.method # "GET", "POST", "PUT", "PATCH", "DELETE"
end

#pathString

Returns HTTP request full path.

Examples:

request.path # => "/lists?count=10"

Returns:

  • (String)

    HTTP request full path



65
66
67
# File 'lib/mailchimp-api/request.rb', line 65

def path
  http_request.path
end

#queryHash

Returns HTTP request query params.

Examples:

request.query # => { count: 10 }

Returns:

  • (Hash)

    HTTP request query params



86
87
88
# File 'lib/mailchimp-api/request.rb', line 86

def query
  @query ||= uri.query ? URI.decode_www_form(uri.query).to_h.transform_keys!(&:to_sym) : {}
end

#uriURI

Returns HTTP request URI.

Examples:

request.uri # => #<URI::HTTPS https://us1.api.mailchimp.com/3.0/lists?count=10>

Returns:

  • (URI)

    HTTP request URI



72
73
74
# File 'lib/mailchimp-api/request.rb', line 72

def uri
  http_request.uri
end