Class: Immobilienscout24::Api::Request::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/immobilienscout24/api/request/base.rb

Direct Known Subclasses

Json, Xml

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request, configuration = {}) ⇒ Base

Returns a new instance of Base.



10
11
12
13
# File 'lib/immobilienscout24/api/request/base.rb', line 10

def initialize(request, configuration = {})
  @request = request
  @configuration = configuration
end

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



8
9
10
# File 'lib/immobilienscout24/api/request/base.rb', line 8

def configuration
  @configuration
end

#requestObject (readonly)

Returns the value of attribute request.



7
8
9
# File 'lib/immobilienscout24/api/request/base.rb', line 7

def request
  @request
end

Instance Method Details

#configureObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/immobilienscout24/api/request/base.rb', line 27

def configure
  set_accept_header

  return configure_multipart_request if multipart?

  set_content_type

  return configure_get_request if get?
  configure_post_request
end

#configure_get_requestObject



52
53
54
55
# File 'lib/immobilienscout24/api/request/base.rb', line 52

def configure_get_request
  request.url(path, request_data)
  request
end

#configure_multipart_requestObject



46
47
48
49
50
# File 'lib/immobilienscout24/api/request/base.rb', line 46

def configure_multipart_request
  request.path = path
  request.body = prepared_multipart_data
  request
end

#configure_post_requestObject



57
58
59
60
61
62
63
64
65
66
# File 'lib/immobilienscout24/api/request/base.rb', line 57

def configure_post_request
  request.path = path
  if raw_request?
    request.body = request_data
  else
    request.body = serialized_data(request_data) unless request_data.nil?
  end

  request
end

#content_typeObject

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/immobilienscout24/api/request/base.rb', line 19

def content_type
  raise NotImplementedError
end

#extensionObject

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/immobilienscout24/api/request/base.rb', line 23

def extension
  raise NotImplementedError
end

#get?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/immobilienscout24/api/request/base.rb', line 92

def get?
  request_method == :get
end

#multipart?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/immobilienscout24/api/request/base.rb', line 72

def multipart?
  !!request_options[:multipart]
end

#pathObject



68
69
70
# File 'lib/immobilienscout24/api/request/base.rb', line 68

def path
  configuration[:path]
end

#prepared_multipart_dataObject



96
97
98
99
100
101
102
103
104
105
106
# File 'lib/immobilienscout24/api/request/base.rb', line 96

def prepared_multipart_data
  request_data.inject({}) do |memo, (key, value)|
    if !value.is_a?(Faraday::UploadIO)
      io_value  = StringIO.new(serialized_data(value))
      memo[key] = Faraday::UploadIO.new(io_value, content_type, "#{key}.#{extension}")
    else
      memo[key] = value
    end
    memo
  end
end

#raw_request?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/immobilienscout24/api/request/base.rb', line 76

def raw_request?
  !!request_options[:raw_request]
end

#request_dataObject



80
81
82
# File 'lib/immobilienscout24/api/request/base.rb', line 80

def request_data
  configuration[:request_data]
end

#request_methodObject



88
89
90
# File 'lib/immobilienscout24/api/request/base.rb', line 88

def request_method
  configuration[:method]
end

#request_optionsObject



84
85
86
# File 'lib/immobilienscout24/api/request/base.rb', line 84

def request_options
  configuration[:request_options]
end

#serialized_data(data) ⇒ Object

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/immobilienscout24/api/request/base.rb', line 15

def serialized_data(data)
  raise NotImplementedError
end

#set_accept_headerObject



38
39
40
# File 'lib/immobilienscout24/api/request/base.rb', line 38

def set_accept_header
  request.headers['Accept'] = content_type
end

#set_content_typeObject



42
43
44
# File 'lib/immobilienscout24/api/request/base.rb', line 42

def set_content_type
  request.headers['Content-Type'] = "#{content_type};charset=UTF-8"
end