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.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/lib/github/client.rb +23 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5041cc83722e99aaa8dcef238da49c06c3412a1af7250accd0b2a6c2bd5ca3df
|
|
4
|
+
data.tar.gz: edb260bf46762b8d1b1cee12fca9f48c9d115e9ba19f7098b1dc7ddad89deeb2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1470e30f5a8685c025ffd767741dfc06697c1177a2ef9dad642b77b127ecd885315cd402368a8de6d3ad76afb3d345bb5cbdb0cb07c19f01d239d2159d2b8084
|
|
7
|
+
data.tar.gz: c35f963b4eefd770bea7814d1c0b180d92cbbe9e1532172e889772a8a2e2755502299ead50f1d9aced0b6be22e522b2b48f08f4935cc119d45cd9667b40cd1d2
|
data/.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
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
|
-
#
|
|
64
|
-
|
|
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
|
|
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
|