@@ -3,7 +3,7 @@ const path = require('path');
3
3
const axios = require ( 'axios' ) ;
4
4
const markdownit = require ( 'markdown-it' ) ;
5
5
const md = new markdownit ( ) ;
6
- // const fs = require('fs');
6
+ const fs = require ( 'fs' ) ;
7
7
const app = express ( ) ;
8
8
9
9
const PORT = 3000 ;
@@ -124,6 +124,19 @@ function processResponse(eventsData) {
124
124
} ) ;
125
125
}
126
126
127
+ function getCacheResponse ( username ) {
128
+ const filename = `temp.cache.${ username } .json` ;
129
+ if ( fs . existsSync ( filename ) ) {
130
+ const data = fs . readFileSync ( filename ) ;
131
+ return JSON . parse ( data ) ;
132
+ }
133
+ return null ;
134
+ }
135
+
136
+ function saveCacheResponse ( username , data ) {
137
+ const filename = `temp.cache.${ username } .json` ;
138
+ fs . writeFileSync ( filename , JSON . stringify ( data ) ) ;
139
+ }
127
140
// Serve the static HTML page
128
141
app . use ( express . static ( path . join ( __dirname , 'public' ) ) ) ;
129
142
@@ -132,18 +145,25 @@ app.get('/api/events/:username', async (req, res) => {
132
145
const { username } = req . params ;
133
146
134
147
try {
135
- // Fetching event data from GitHub API
136
- // /received_events for event user sees, /events for event user triggers
137
- const response = await axios . get ( `https://api.github.com/users/${ username } /received_events?page=1&per_page=100` ) ;
138
- const response2 = await axios . get ( `https://api.github.com/users/${ username } /received_events?page=2&per_page=100` ) ;
139
- const eventsData = [ ...response . data , ...response2 . data ] ;
140
-
141
- // await fs.promises.writeFile('received_events.json', JSON.stringify(eventsData));
142
-
143
- // const fileContent = await fs.promises.readFile('received_events.json', 'utf8');
144
- // const eventsData = JSON.parse(fileContent);
148
+ const cache = getCacheResponse ( username ) ;
149
+ let eventsData ;
150
+ if ( cache ) {
151
+ eventsData = cache ;
152
+ } else {
153
+ // Fetching event data from GitHub API
154
+ // /received_events for event user sees, /events for event user triggers
155
+ const response = await axios . get ( `https://api.github.com/users/${ username } /received_events?page=1&per_page=100` ) ;
156
+ const response2 = await axios . get ( `https://api.github.com/users/${ username } /received_events?page=2&per_page=100` ) ;
157
+ eventsData = [ ...response . data , ...response2 . data ] ;
158
+ console . log ( `Fetched ${ eventsData . length } received events for ${ username } ` ) ;
159
+ saveCacheResponse ( username , eventsData ) ;
160
+
161
+ // await fs.promises.writeFile('received_events.json', JSON.stringify(eventsData));
162
+
163
+ // const fileContent = await fs.promises.readFile('received_events.json', 'utf8');
164
+ // const eventsData = JSON.parse(fileContent);
165
+ }
145
166
146
- console . log ( `Fetched ${ eventsData . length } received events for ${ username } ` ) ;
147
167
148
168
const processedEvents = processResponse ( eventsData ) ;
149
169
res . json ( processedEvents ) ;
0 commit comments