telegram-bot 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fd54d434c70a78a128767db94de31a6fbf07ca11
4
- data.tar.gz: 669957947937536ba2257af7362d97c75e82a236
2
+ SHA256:
3
+ metadata.gz: 9d72dfb00c1dab4bf5b80276354ff102737b537a02c1ba40656bb9ab6eb28288
4
+ data.tar.gz: ed15a4fa045c319c035ab4b5ec9b06169b4a7455004de59fbaeac7656de7c795
5
5
  SHA512:
6
- metadata.gz: abaa6ac4240292eb5200fca36b3fc30e9e30a9232a4694cf797ef3754eb8240c728203718b6a29bf8b29792b0e9312b93bfbccc5682cfaef250a12ec95e6e9e6
7
- data.tar.gz: 77715ec8f7cc3f2f9752d1ab3faa821dbbbaf748f8c90dcc450c351e8786150301c84e1d78c87f2ae974b5413e12a49c5617fdec737d5864837ba0cc3fb1ad3a
6
+ metadata.gz: d2cd894d342bb01a901b2c24a243165b580adfd5bcbaef632d3d272693424b5b2f13b7236edcf32dcb897d123f68410c97e0c3235106e31f4de06ace5a712406
7
+ data.tar.gz: cb95a89bcf60e2993d6011203c7f6e4e56f725e2455cbe31e351f60fd72f9e2e40296da284c1147f36f4dcb5f9d004efa2f99aa8791563e3282e8ece64c29499
@@ -1,17 +1,34 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 2.5
5
- - 2.4
6
- - 2.3
4
+ - 2.5
5
+ - 2.4
7
6
  gemfile:
8
- - gemfiles/rails_52.gemfile
9
- - gemfiles/rails_51.gemfile
10
- - gemfiles/rails_50.gemfile
11
- - gemfiles/rails_42.gemfile
7
+ - gemfiles/rails_52.gemfile
8
+ - gemfiles/rails_51.gemfile
9
+ matrix:
10
+ include:
11
+ # old rails
12
+ - rvm: 2.5
13
+ gemfile: gemfiles/rails_50.gemfile
14
+ - rvm: 2.5
15
+ gemfile: gemfiles/rails_42.gemfile
16
+ # old rubies
17
+ - rvm: 2.3
18
+ gemfile: gemfiles/rails_52.gemfile
19
+ # future rails
20
+ - rvm: 2.5
21
+ gemfile: gemfiles/rails_60.gemfile
22
+ # Allow rails 6 to fail while master branch is used
23
+ allow_failures:
24
+ - rvm: 2.5
25
+ gemfile: gemfiles/rails_60.gemfile
12
26
  notifications:
13
27
  email: false
14
28
 
15
- # for 2.5.0 until 2.5.1 is released: https://github.com/travis-ci/travis-ci/issues/8978
29
+ # for 2.5.0 until 2.5.1 is released:
30
+ # https://github.com/travis-ci/travis-ci/issues/8978
31
+ # https://github.com/travis-ci/travis-ci/issues/8969#issuecomment-354135622
16
32
  before_install:
17
33
  - gem update --system
34
+ - gem install bundler
data/Appraisals CHANGED
@@ -1,3 +1,10 @@
1
+ appraise 'rails-60' do
2
+ git 'https://github.com/rails/rails.git' do
3
+ gem 'actionpack', '~> 6.0.0.alpha'
4
+ gem 'railties', '~> 6.0.0.alpha'
5
+ end
6
+ end
7
+
1
8
  appraise 'rails-52' do
2
9
  gem 'actionpack', '~> 5.2.0.beta2'
3
10
  gem 'railties', '~> 5.2.0.beta2'
@@ -1,4 +1,8 @@
1
- # Unreleased
1
+ # 0.13.1
2
+
3
+ - Extracted typed response mappings to telegram-bot-types gem.
4
+ It now provides definitions for all API v3.5 methods.
5
+ - Fix #chat for non-message updates with TypedUpdates enabled
2
6
 
3
7
  # 0.13.0
4
8
 
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ group :development do
8
8
  gem 'pry-byebug', '~> 3.2.0'
9
9
  gem 'sdoc', '~> 0.4.1'
10
10
 
11
- gem 'telegram-bot-types', '~> 0.3.0'
11
+ gem 'telegram-bot-types', '~> 0.6.0'
12
12
 
13
13
  gem 'rspec', '~> 3.5.0'
14
14
  gem 'rspec-its', '~> 1.1.0'
data/README.md CHANGED
@@ -11,7 +11,7 @@ in development, but you can use poller in production if you want.
11
11
 
12
12
  Package contains:
13
13
 
14
- - Ligthweight client for bot API (with fast and thread-safe
14
+ - Lightweight client for bot API (with fast and thread-safe
15
15
  [httpclient](https://github.com/nahi/httpclient) under the hood).
16
16
  - Controller with message parser: define methods for commands, not `case` branches.
17
17
  - Middleware and routes helpers for production env.
@@ -10,7 +10,7 @@ group :development do
10
10
  gem "pry", "~> 0.10.1"
11
11
  gem "pry-byebug", "~> 3.2.0"
12
12
  gem "sdoc", "~> 0.4.1"
13
- gem "telegram-bot-types", "~> 0.3.0"
13
+ gem "telegram-bot-types", "~> 0.6.0"
14
14
  gem "rspec", "~> 3.5.0"
15
15
  gem "rspec-its", "~> 1.1.0"
16
16
  gem "rspec-rails", "~> 3.5.0"
@@ -10,7 +10,7 @@ group :development do
10
10
  gem "pry", "~> 0.10.1"
11
11
  gem "pry-byebug", "~> 3.2.0"
12
12
  gem "sdoc", "~> 0.4.1"
13
- gem "telegram-bot-types", "~> 0.3.0"
13
+ gem "telegram-bot-types", "~> 0.6.0"
14
14
  gem "rspec", "~> 3.5.0"
15
15
  gem "rspec-its", "~> 1.1.0"
16
16
  gem "rspec-rails", "~> 3.5.0"
@@ -10,7 +10,7 @@ group :development do
10
10
  gem "pry", "~> 0.10.1"
11
11
  gem "pry-byebug", "~> 3.2.0"
12
12
  gem "sdoc", "~> 0.4.1"
13
- gem "telegram-bot-types", "~> 0.3.0"
13
+ gem "telegram-bot-types", "~> 0.6.0"
14
14
  gem "rspec", "~> 3.5.0"
15
15
  gem "rspec-its", "~> 1.1.0"
16
16
  gem "rspec-rails", "~> 3.5.0"
@@ -10,7 +10,7 @@ group :development do
10
10
  gem "pry", "~> 0.10.1"
11
11
  gem "pry-byebug", "~> 3.2.0"
12
12
  gem "sdoc", "~> 0.4.1"
13
- gem "telegram-bot-types", "~> 0.3.0"
13
+ gem "telegram-bot-types", "~> 0.6.0"
14
14
  gem "rspec", "~> 3.5.0"
15
15
  gem "rspec-its", "~> 1.1.0"
16
16
  gem "rspec-rails", "~> 3.5.0"
@@ -0,0 +1,23 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ git "https://github.com/rails/rails.git" do
6
+ gem "actionpack", "~> 6.0.0.alpha"
7
+ gem "railties", "~> 6.0.0.alpha"
8
+ end
9
+
10
+ group :development do
11
+ gem "appraisal", "~> 2.2"
12
+ gem "pry", "~> 0.10.1"
13
+ gem "pry-byebug", "~> 3.2.0"
14
+ gem "sdoc", "~> 0.4.1"
15
+ gem "telegram-bot-types", "~> 0.6.0"
16
+ gem "rspec", "~> 3.5.0"
17
+ gem "rspec-its", "~> 1.1.0"
18
+ gem "rspec-rails", "~> 3.5.0"
19
+ gem "rubocop", "~> 0.52.1"
20
+ gem "coveralls", "~> 0.8.2", require: false
21
+ end
22
+
23
+ gemspec path: "../"
@@ -1,35 +1,23 @@
1
+ require 'telegram/bot/client/api_helper'
2
+ require 'active_support/core_ext/string/inflections'
3
+
1
4
  module Telegram
2
5
  module Bot
3
6
  class Client
4
7
  # Actions with type-casted results. Install `telegram-bot-types` gem first.
5
8
  module TypedResponse
6
- {
7
- getFile: :File,
8
- getMe: :User,
9
- getUpdates: [:Update],
10
- getUserProfilePhotos: :UserProfilePhotos,
9
+ # First we define methods for every available api method to return `result`
10
+ # field instead of object.
11
+ ApiHelper.methods_list.each do |method|
12
+ define_method(method.to_s.underscore) do |*args|
13
+ super(*args)['result']
14
+ end
15
+ end
11
16
 
12
- forwardMessage: :Message,
13
- sendAudio: :Message,
14
- sendDocument: :Message,
15
- sendLocation: :Message,
16
- sendMessage: :Message,
17
- sendPhoto: :Message,
18
- sendSticker: :Message,
19
- sendVideo: :Message,
20
- sendVoice: :Message,
21
- }.each do |method, type|
22
- next unless type
23
- if type.is_a?(Array)
24
- type_class = Types.const_get(type.first)
25
- define_method(method.to_s.underscore) do |*args|
26
- request(method, *args)['result'].map { |x| type_class.new(x) }
27
- end
28
- else
29
- type_class = Types.const_get(type)
30
- define_method(method.to_s.underscore) do |*args|
31
- type_class.new request(method, *args)['result']
32
- end
17
+ # And then override some of them which has castable results.
18
+ Types::Response::WRAPPED_METHODS.each do |method, type|
19
+ define_method(method.to_s.underscore) do |*args|
20
+ Types::Response.wrap(super(*args)['result'], type)
33
21
  end
34
22
  end
35
23
  end
@@ -1,5 +1,4 @@
1
1
  require 'active_support/core_ext/hash/keys'
2
- require 'active_support/core_ext/hash/transform_values'
3
2
  require 'active_support/core_ext/hash/indifferent_access'
4
3
 
5
4
  module Telegram
@@ -43,7 +42,7 @@ module Telegram
43
42
 
44
43
  # Hash of botan clients made from #bots.
45
44
  def botans
46
- @botans ||= bots.transform_values(&:botan)
45
+ @botans ||= bots.map { |k, v| [k, v.botan] }.to_h
47
46
  end
48
47
 
49
48
  # Returns config for .bots method. By default uses `telegram['bots']` section
@@ -157,7 +157,14 @@ module Telegram
157
157
  #
158
158
  # Can be overriden with `chat` option for #initialize.
159
159
  def chat
160
- @_chat ||= payload.try! { |x| x['chat'] || x['message'] && x['message']['chat'] }
160
+ @_chat ||=
161
+ if payload
162
+ if payload.is_a?(Hash)
163
+ payload['chat'] || payload['message'] && payload['message']['chat']
164
+ else
165
+ payload.try(:chat) || payload.try(:message).try!(:chat)
166
+ end
167
+ end
161
168
  end
162
169
 
163
170
  # Accessor to `'from'` field of payload. Can be overriden with `from` option
@@ -35,7 +35,7 @@ RSpec.shared_context 'telegram/bot/updates_controller' do
35
35
  def deep_stringify(input)
36
36
  case input
37
37
  when Array then input.map(&method(__callee__))
38
- when Hash then input.transform_keys(&:to_s).transform_values(&method(__callee__))
38
+ when Hash then input.map { |k, v| [k.to_s, deep_stringify(v)] }.to_h
39
39
  else input
40
40
  end
41
41
  end
@@ -1,6 +1,6 @@
1
1
  module Telegram
2
2
  module Bot
3
- VERSION = '0.13.0'.freeze
3
+ VERSION = '0.13.1'.freeze
4
4
 
5
5
  def self.gem_version
6
6
  Gem::Version.new VERSION
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegram-bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Melentiev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-02 00:00:00.000000000 Z
11
+ date: 2018-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -119,6 +119,7 @@ files:
119
119
  - gemfiles/rails_50.gemfile
120
120
  - gemfiles/rails_51.gemfile
121
121
  - gemfiles/rails_52.gemfile
122
+ - gemfiles/rails_60.gemfile
122
123
  - lib/tasks/telegram-bot.rake
123
124
  - lib/telegram/bot.rb
124
125
  - lib/telegram/bot/async.rb
@@ -173,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
174
  version: '0'
174
175
  requirements: []
175
176
  rubyforge_project:
176
- rubygems_version: 2.6.14
177
+ rubygems_version: 2.7.6
177
178
  signing_key:
178
179
  specification_version: 4
179
180
  summary: Library for building Telegram Bots with Rails integration