fewald-worklog 0.3.21 → 0.3.22

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/lib/github/client.rb +23 -3
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5bd93642e20a12893990ea68f16535293e71c3440d2f9028dacf57d9e783144
4
- data.tar.gz: e0f080998b95a399cddf53ca28ed7fe98b10263990b54aeb8ec065ac0342de02
3
+ metadata.gz: 5041cc83722e99aaa8dcef238da49c06c3412a1af7250accd0b2a6c2bd5ca3df
4
+ data.tar.gz: edb260bf46762b8d1b1cee12fca9f48c9d115e9ba19f7098b1dc7ddad89deeb2
5
5
  SHA512:
6
- metadata.gz: 457e916ceeeddbfba203fd17d9e49862dafaf74fbd40e4b3a56f536a06e35f8d6aa3748f069a51990f2279e49e2164ffed57594cade9b6e0f6c34cb5f97fefbf
7
- data.tar.gz: 0fe4178210f736b08415b460d16e741b84cc3977eb5c4bc4967bb34175fe6e845308d153f70653dc55882b43a28bb5d741c4ee8d6bed20ba2ad92a2c73ee8bf9
6
+ metadata.gz: 1470e30f5a8685c025ffd767741dfc06697c1177a2ef9dad642b77b127ecd885315cd402368a8de6d3ad76afb3d345bb5cbdb0cb07c19f01d239d2159d2b8084
7
+ data.tar.gz: c35f963b4eefd770bea7814d1c0b180d92cbbe9e1532172e889772a8a2e2755502299ead50f1d9aced0b6be22e522b2b48f08f4935cc119d45cd9667b40cd1d2
data/.version CHANGED
@@ -1 +1 @@
1
- 0.3.21
1
+ 0.3.22
data/lib/github/client.rb CHANGED
@@ -20,12 +20,20 @@ module Worklog
20
20
 
21
21
  def initialize(configuration)
22
22
  @configuration = configuration
23
+
24
+ # Cache for events to avoid redundant API calls
25
+ @event_cache = {}
23
26
  end
24
27
 
25
28
  # Fetch events for a given user from Github API
29
+ # @return [Array<PullRequestEvent, PullRequestReviewEvent>] Array of
30
+ # PullRequestEvent and PullRequestReviewEvent objects
26
31
  def fetch_events
27
32
  verify_token!
28
33
 
34
+ # Clear the cache before fetching new events
35
+ @event_cache.clear
36
+
29
37
  WorkLogger.debug 'Fetching most recent GitHub events...'
30
38
  responses = fetch_event_pages
31
39
  responses.filter_map { |event| create_event(event) }
@@ -60,8 +68,10 @@ module Worklog
60
68
  payload = event['payload']
61
69
  repo = event['repo']
62
70
 
63
- # Retrieve details for the specific pull request
64
- pr_details = pull_request_details(repo['name'], payload['number'])
71
+ # Lookup pr_details from cache or fetch from API if not present
72
+ @event_cache[cache_key(repo['name'],
73
+ payload['number'])] ||= pull_request_details(repo['name'], payload['number'])
74
+ pr_details = @event_cache[cache_key(repo['name'], payload['number'])]
65
75
 
66
76
  PullRequestEvent.new(
67
77
  repository: repo['name'],
@@ -80,7 +90,9 @@ module Worklog
80
90
  url = review['html_url']
81
91
  created_at = to_local_time(review['submitted_at'])
82
92
 
83
- pr_details = pull_request_details(repo_name, pr_number)
93
+ # Lookup pr_details from cache or fetch from API if not present
94
+ @event_cache[cache_key(repo_name, pr_number)] ||= pull_request_details(repo_name, pr_number)
95
+ pr_details = @event_cache[cache_key(repo_name, pr_number)]
84
96
 
85
97
  PullRequestReviewEvent.new(
86
98
  repository: repo_name,
@@ -168,6 +180,14 @@ module Worklog
168
180
  raise(GithubAPIError,
169
181
  'GitHub API key is not configured. Please set it in the configuration.')
170
182
  end
183
+
184
+ # Generate a cache key for storing pull request details
185
+ # @param repo [String] Repository name in the format 'owner/repo'
186
+ # @param pr_number [Integer] Pull request number
187
+ # @return [Array] Cache key as an array of repo and pr_number
188
+ def cache_key(repo, pr_number)
189
+ [repo, pr_number]
190
+ end
171
191
  end
172
192
  end
173
193
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fewald-worklog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.21
4
+ version: 0.3.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Friedrich Ewald