Class: Rubogram::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rubogram/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(token, adapter: Faraday.default_adapter, logging: true, raise_errors: true) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rubogram/client.rb', line 7

def initialize token, adapter: Faraday.default_adapter, logging: true, raise_errors: true
  @faraday = Faraday.new "https://api.telegram.org/bot#{token}/" do |faraday|
    faraday.request :multipart
    faraday.request :url_encoded

    # Logging
    faraday.response :logger, ::Logger.new(STDOUT), bodies: true if logging

    # Enabling error raising
    faraday.use Faraday::Response::RaiseError if raise_errors

    # Enabling json parser
    faraday.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/

    faraday.adapter adapter
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

Using method_missing for catching all the methods



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubogram/client.rb', line 26

def method_missing method, *args, &block
  if args.size > 1
    raise ArgumentError.new "wrong number of arguments (#{args.size} for 0..1)"
  end

  args.push({}) if args.size == 0

  method = method.to_s.split('_').inject([]){ |b,e| b.push(b.empty? ? e : e.capitalize) }.join

  call(method, args[0])
end

Instance Method Details

#call(method, args = {}) ⇒ Object

Call method from telegram api



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/rubogram/client.rb', line 39

def call method, args = {}
  unless args.is_a? Hash
    raise ArgumentError.new "argument must be a Hash"
  end

  args.each_key do |key|
    if args[key].is_a?(Array) || args[key].is_a?(Hash)
      args[key] = JSON.dump(args[key])
    end
  end

  @faraday.post method, args
end