• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / blurts-server / #13066

pending completion
#13066

push

circleci

Vinnl
<a href="https://github.com/mozilla/blurts-server/commit/<a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/<a class="double-link" href="https://git"><a class=hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">7a9d21547">&lt;a href=&quot;https://github.com/mozilla/blurts-server/commit/</a><a class="double-link" href="https://github.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">7a9d21547</a><a href="https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d">&lt;a href=&quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&quot;&gt;&amp;quot;&amp;gt;&amp;amp;lt;a href=&amp;amp;quot;https://github.com/mozilla/blurts-server/commit/&amp;lt;/a&amp;gt;&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;quot;https://github.com/mozilla/blurts-server/commit/&amp;amp;lt;a class=&amp;amp;quot;double-link&amp;amp;quot; href=&amp;amp;quot;https://git&amp;quot;&amp;gt;&amp;amp;lt;a class=&amp;lt;/a&amp;gt;hub.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;quot;&amp;gt;7a9d21547&amp;lt;/a&amp;gt;&amp;lt;a href=&amp;quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;quot;&amp;gt;&amp;amp;lt;a href=&amp;amp;quot;https://github.com/mozilla/blurts-server/commit/7a9d215474a0334e43c421e3b8b509052c80054d&amp;amp;quot;&amp;amp;gt;&amp;amp;amp;quot;&amp;amp;amp;gt;Revert &amp;amp;amp;amp;quot;fixup! Add a bunch of initial type annotatio&amp;lt;/a&amp;</a>gt;ns&amp;amp;quot;

This reverts commit &amp;lt;/a&amp;gt;&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;qu... (continued)

282 of 1621 branches covered (17.4%)

Branch coverage included in aggregate %.

2 of 2 new or added lines in 2 files covered. (100.0%)

959 of 4334 relevant lines covered (22.13%)

1.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/controllers/ip-location.js
1
// IP location data includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com.
2
// For testing, you can compare IPs to the corresponding json, eg: https://github.com/maxmind/MaxMind-DB/blob/main/source-data/GeoLite2-City-Test.json
3

4
'use strict'
5

6
const AppConstants = require('../app-constants')
×
7
const { readLocationData } = require('../ip-location-service')
×
8

9
async function getIpLocation (req, res) {
10
  let clientIp
11

12
  switch (AppConstants.NODE_ENV) {
×
13
    case 'dev':
14
      clientIp = req.headers['test-ip'] || '216.160.83.56' // fallback an IP that exists in limited/local GeoLite2 test DB
×
15
      break
×
16
    case 'heroku':
17
    case 'stage':
18
      clientIp = req.headers['test-ip'] || req.ip // Use "test-ip" header if available, fallback to original IP
×
19
      break
×
20
    default:
21
      clientIp = req.ip
×
22
  }
23

24
  if (clientIp === req.session.locationData?.clientIp) {
×
25
    return res.status(200).json(req.session.locationData) // return cached data
×
26
  }
27

28
  const locationData = await readLocationData(clientIp, req.supportedLocales)
×
29

30
  if (locationData) {
×
31
    req.session.locationData = Object.assign(locationData, { clientIp }) // cache new location data, adding clientIP key
×
32
    return res.status(200).json(req.session.locationData)
×
33
  }
34

35
  return res.status(200).json({ clientIp })
×
36
}
37

38
module.exports = {
×
39
  getIpLocation
40
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc