Class: Rubogram::Client
- Inherits:
-
Object
- Object
- Rubogram::Client
- Defined in:
- lib/rubogram/client.rb
Instance Method Summary collapse
-
#call(method, args = {}) ⇒ Object
Call method from telegram api.
-
#initialize(token, adapter: Faraday.default_adapter, logging: true, raise_errors: true, backend: nil) ⇒ Client
constructor
A new instance of Client.
-
#method_missing(method, *args, &block) ⇒ Object
Using method_missing for catching all the methods.
Constructor Details
#initialize(token, adapter: Faraday.default_adapter, logging: true, raise_errors: true, backend: nil) ⇒ Client
Returns a new instance of Client.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rubogram/client.rb', line 7 def initialize token, adapter: Faraday.default_adapter, logging: true, raise_errors: true, backend: nil unless backend && backend.size > 0 backend = 'https://api.telegram.org' end @faraday = Faraday.new "#{backend}/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
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rubogram/client.rb', line 30 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
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rubogram/client.rb', line 43 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 |