Class: Prdigest::Telegram
- Inherits:
-
Object
- Object
- Prdigest::Telegram
- Defined in:
- lib/prdigest/telegram.rb
Defined Under Namespace
Classes: NetHTTPTransport
Constant Summary collapse
- MAX_ATTEMPTS =
3- MAX_RETRY_WAIT =
60- API_ORIGIN =
"https://api.telegram.org"
Instance Method Summary collapse
- #deliver(chunks, digest_date:, checkpoint_store:, scope:) ⇒ Object
-
#initialize(token:, chat_id:, allowlist:, transport: NetHTTPTransport.new, sleeper: ->(seconds) { sleep(seconds) }) ⇒ Telegram
constructor
A new instance of Telegram.
- #inspect ⇒ Object (also: #to_s)
Constructor Details
#initialize(token:, chat_id:, allowlist:, transport: NetHTTPTransport.new, sleeper: ->(seconds) { sleep(seconds) }) ⇒ Telegram
Returns a new instance of Telegram.
28 29 30 31 32 33 34 35 |
# File 'lib/prdigest/telegram.rb', line 28 def initialize(token:, chat_id:, allowlist:, transport: NetHTTPTransport.new, sleeper: ->(seconds) { sleep(seconds) }) @token = token.to_s @chat_id = Integer(chat_id) @allowlist = Array(allowlist).map { |id| Integer(id) }.freeze @transport = transport @sleeper = sleeper @delivered_chunk = false end |
Instance Method Details
#deliver(chunks, digest_date:, checkpoint_store:, scope:) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/prdigest/telegram.rb', line 37 def deliver(chunks, digest_date:, checkpoint_store:, scope:) refuse_unlisted_chat! unless @allowlist.include?(@chat_id) checkpoint_store.with_checkpoint( date: digest_date, chat_id: @chat_id, scope: scope, chunks: chunks ) do |delivery| @delivered_chunk ||= delivery.next_chunk.positive? (delivery.next_chunk...delivery.chunks.length).each do |index| @sleeper.call(1) if @delivered_chunk deliver_chunk(delivery, index) @delivered_chunk = true end delivery.delivery end end |
#inspect ⇒ Object Also known as: to_s
55 56 57 |
# File 'lib/prdigest/telegram.rb', line 55 def inspect "#<#{self.class} chat_id=#{@chat_id} token=[REDACTED]>" end |