fewald-worklog 0.3.21 → 0.3.23

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
2
  SHA256:
3
- metadata.gz: c5bd93642e20a12893990ea68f16535293e71c3440d2f9028dacf57d9e783144
4
- data.tar.gz: e0f080998b95a399cddf53ca28ed7fe98b10263990b54aeb8ec065ac0342de02
3
+ metadata.gz: 4d49e6018a0b41dab2a34f2c2b41aba97d2daa0c9837fd3114ae82b8d60622e0
4
+ data.tar.gz: bdfc71c9a758f206ad80aa5a8a9d972499522def47c57fd4da6aad4c9d0eb6c4
5
5
  SHA512:
6
- metadata.gz: 457e916ceeeddbfba203fd17d9e49862dafaf74fbd40e4b3a56f536a06e35f8d6aa3748f069a51990f2279e49e2164ffed57594cade9b6e0f6c34cb5f97fefbf
7
- data.tar.gz: 0fe4178210f736b08415b460d16e741b84cc3977eb5c4bc4967bb34175fe6e845308d153f70653dc55882b43a28bb5d741c4ee8d6bed20ba2ad92a2c73ee8bf9
6
+ metadata.gz: 35c7ebb2e6bc4136d6241ef9f7ed56b434eb8ddf52bde5fd33e3fa57406a64c48d1d2c0a61f4f944de38acc4e773c479c7ffacca3289dd5a68c68bb4c145b27d
7
+ data.tar.gz: bb4f5fed41304b80f4a5a85cfd95b90bb9571c8085f807e3b9b5db5398f3987e5cee8111f92844a473f1fddf1e8d01b4e597c301083eb3511e4670b5d34aae03
data/.version CHANGED
@@ -1 +1 @@
1
- 0.3.21
1
+ 0.3.23
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
@@ -56,7 +56,7 @@ module Worklog
56
56
  elsif closed?
57
57
  'Closed PR '
58
58
  else
59
- 'Created PR '
59
+ 'Opened PR '
60
60
  end
61
61
  message += title
62
62
 
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.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Friedrich Ewald