first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import metrics from '@overleaf/metrics'
|
||||
import AnalyticsManager from './AnalyticsManager.js'
|
||||
import SessionManager from '../Authentication/SessionManager.js'
|
||||
import GeoIpLookup from '../../infrastructure/GeoIpLookup.js'
|
||||
import Features from '../../infrastructure/Features.js'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import AccountMappingHelper from './AccountMappingHelper.js'
|
||||
|
||||
async function registerSalesforceMapping(req, res, next) {
|
||||
if (!Features.hasFeature('analytics')) {
|
||||
return res.sendStatus(202)
|
||||
}
|
||||
const { createdAt, salesforceId, v1Id } = req.body
|
||||
AnalyticsManager.registerAccountMapping(
|
||||
AccountMappingHelper.generateV1Mapping(v1Id, salesforceId, createdAt)
|
||||
)
|
||||
res.sendStatus(202)
|
||||
}
|
||||
|
||||
async function updateEditingSession(req, res, next) {
|
||||
if (!Features.hasFeature('analytics')) {
|
||||
return res.sendStatus(202)
|
||||
}
|
||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
||||
const { projectId } = req.params
|
||||
const segmentation = req.body.segmentation || {}
|
||||
let countryCode = null
|
||||
|
||||
if (userId) {
|
||||
try {
|
||||
const geoDetails = await GeoIpLookup.promises.getDetails(req.ip)
|
||||
if (geoDetails && geoDetails.country_code) {
|
||||
countryCode = geoDetails.country_code
|
||||
}
|
||||
AnalyticsManager.updateEditingSession(
|
||||
userId,
|
||||
projectId,
|
||||
countryCode,
|
||||
segmentation
|
||||
)
|
||||
} catch (error) {
|
||||
metrics.inc('analytics_geo_ip_lookup_errors')
|
||||
}
|
||||
}
|
||||
res.sendStatus(202)
|
||||
}
|
||||
|
||||
function recordEvent(req, res, next) {
|
||||
if (!Features.hasFeature('analytics')) {
|
||||
return res.sendStatus(202)
|
||||
}
|
||||
delete req.body._csrf
|
||||
AnalyticsManager.recordEventForSession(
|
||||
req.session,
|
||||
req.params.event,
|
||||
req.body
|
||||
)
|
||||
res.sendStatus(202)
|
||||
}
|
||||
|
||||
export default {
|
||||
registerSalesforceMapping: expressify(registerSalesforceMapping),
|
||||
updateEditingSession: expressify(updateEditingSession),
|
||||
recordEvent,
|
||||
}
|
||||
Reference in New Issue
Block a user