Class: FantasticRobot::Request::Base

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model, ActiveModel::Serialization, ActiveModel::Serializers::JSON, ActiveModel::Validations
Defined in:
lib/fantastic_robot/request/base.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Base

Initializer that assigns the fields received



12
13
14
# File 'lib/fantastic_robot/request/base.rb', line 12

def initialize(attributes = {})
  super(attributes)
end

Instance Attribute Details

#methodObject (readonly)

Returns the value of attribute method.



9
10
11
# File 'lib/fantastic_robot/request/base.rb', line 9

def method
  @method
end

Instance Method Details

#attributesObject

Attribute map for ActiveModel::Serialization.



17
18
19
# File 'lib/fantastic_robot/request/base.rb', line 17

def attributes
  Hash[instance_variables.map{|attrib| [attrib.to_s[1..attrib.to_s.size], nil]}]
end

#send_requestObject

Send request to Telegram API

Raises:

  • (ArgumentError)


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

def send_request
  raise ArgumentError, "Method name not defined" if (self.method.blank?)

  payload = self.to_h
  payload.delete(:method)

  payload.each do |key, value|
    payload[key] = Faraday::UploadIO.new(payload[key], MIME::Types.type_for(payload[key].path).first.content_type) if (value.is_a?(File))
  end

  FantasticRobot.connection.api_call self.method, payload
end

#to_hObject

Proxy to get a serialized version of the object.



22
23
24
# File 'lib/fantastic_robot/request/base.rb', line 22

def to_h
  recursive_serialization(self)
end