Class: Mushikago::Http::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/mushikago/http/request.rb

Overview

MushikagoサービスのHTTPリクエストを表すクラス

Direct Known Subclasses

Mushikago::Hotaru::Request, MultipartRequest, Mitsubachi::Request, Tombo::Request

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Request) initialize

A new instance of Request



21
22
23
24
25
26
27
28
# File 'lib/mushikago/http/request.rb', line 21

def initialize
  @headers = {}
  @host = ''
  @port = 80
  @path = '/'
  @params = {} 
  @http_method = new_http_request.method
end

Instance Attribute Details

- (Hash) headers (readonly)

Headers

Returns:

  • (Hash)

    headers



9
10
11
# File 'lib/mushikago/http/request.rb', line 9

def headers
  @headers
end

- (String) host

Host

Returns:

  • (String)

    host



13
14
15
# File 'lib/mushikago/http/request.rb', line 13

def host
  @host
end

- (String) http_method

Http_method

Returns:

  • (String)

    http_method



11
12
13
# File 'lib/mushikago/http/request.rb', line 11

def http_method
  @http_method
end

- (String) params (readonly)

Params

Returns:

  • (String)

    params



19
20
21
# File 'lib/mushikago/http/request.rb', line 19

def params
  @params
end

- (String) path

Path

Returns:

  • (String)

    path



17
18
19
# File 'lib/mushikago/http/request.rb', line 17

def path
  @path
end

- (Integer) port

Port

Returns:

  • (Integer)

    port



15
16
17
# File 'lib/mushikago/http/request.rb', line 15

def port
  @port
end

Class Method Details

+ (Object) add_param(name, options = {}) {|value| ... } Also known as: request_parameter

リクエストパラメータへのアクセサを定義する

Examples:

add_param :price do |v| v.to_i end

Parameters:

  • name (String)

    パラメータ名

Yields:

  • (value)

    アクセサを通して渡された値を変換するブロック

Yield Returns:

  • (Object)

    変換された値



97
98
99
100
101
102
103
104
105
# File 'lib/mushikago/http/request.rb', line 97

def add_param name, options={}, &transform
  attr_accessor name
  define_method("#{name}=") do |value|
    value = value || options[:default]
    value = transform ? transform.call(value) : value
    self[name.to_s] = value
    instance_variable_set("@#{name}".to_sym, value)
  end
end

Instance Method Details

- (String) [](key)

パラメータの値

Parameters:

  • key (String)

    パラメータのキー

Returns:

  • (String)

    パラメータの値



38
39
40
41
# File 'lib/mushikago/http/request.rb', line 38

def [] key
  param = params.detect{|p| p[0] == key}
  param ? param[1] : nil
end

- (Object) []=(key, value)

Parameters:

  • key (String)

    パラメータのキー

  • value (String)

    パラメータの値



32
33
34
# File 'lib/mushikago/http/request.rb', line 32

def []= key, value
  params[key] = value
end

- (Net::HTTPRequest) to_http_request

HTTPリクエストオブジェクトに変換する

Returns:

  • (Net::HTTPRequest)

    HTTPリクエスト



50
51
52
53
54
55
56
57
# File 'lib/mushikago/http/request.rb', line 50

def to_http_request
  http_request = new_http_request
  headers.each do |key, value|
    http_request[key] = value
  end
  http_request.body = url_encoded_params if http_request.request_body_permitted?
  return http_request
end

- (String) url_encoded_params

URLエンコードされ、&で接続されたパラメータの文字列

Returns:

  • (String)

    URLエンコードされ、&で接続されたパラメータの文字列



44
45
46
# File 'lib/mushikago/http/request.rb', line 44

def url_encoded_params
  params.sort.select{|p| p[1].kind_of?(String)}.collect{|pp| pp.map{|p| encode p}.join('=')}.join('&')
end