Mercurial > rsstweet
comparison app/lib/cached_fetch.rb @ 264:4f86037f6e6a
Identifiable rate limited client
author | nanaya <me@nanaya.net> |
---|---|
date | Sun, 09 Feb 2025 03:48:26 +0900 |
parents | c800506ae799 |
children |
comparison
equal
deleted
inserted
replaced
263:2fc76c51e184 | 264:4f86037f6e6a |
---|---|
1 module CachedFetch | 1 module CachedFetch |
2 def self.timeline(user_id) | 2 def self.timeline(user_id) |
3 cached("timeline:#{user_id}") { LegitClient.timeline(user_id)&.[](:timeline) } | 3 cached("timeline:#{user_id}") { LegitClient.new.timeline(user_id)&.[](:timeline) } |
4 end | 4 end |
5 | 5 |
6 def self.user_by_id(user_id) | 6 def self.user_by_id(user_id) |
7 cached("user_by_id:#{user_id}") { LegitClient.user_by_id(user_id)&.[](:user) } | 7 cached("user_by_id:#{user_id}") { LegitClient.new.user_by_id(user_id)&.[](:user) } |
8 end | 8 end |
9 | 9 |
10 def self.user_by_username(username) | 10 def self.user_by_username(username) |
11 cached("user_by_username:#{username}") { LegitClient.user_by_username(username)&.[](:user) } | 11 cached("user_by_username:#{username}") { LegitClient.new.user_by_username(username)&.[](:user) } |
12 end | 12 end |
13 | 13 |
14 def self.cached(key, &block) | 14 def self.cached(key, &block) |
15 Rails.cache.fetch(key, expires_in: (15 + rand(60)).minutes, &block) | 15 Rails.cache.fetch(key, expires_in: (15 + rand(60)).minutes, &block) |
16 end | 16 end |