* Logs a REST.COPY.OBJECT_GET or REST.COPY.PART_GET entry for the source side of copy operations * @param {object} req - HTTP request object * @param {string} requestID - Request ID from the response * @param {string} operation - Operation name ('REST.COPY.OBJECT_GET' or 'REST.COPY.PART_GET') *
(req, requestID, operation, sourceBucket, sourceObject, objectSize)
| 701 | * @return {undefined} |
| 702 | */ |
| 703 | function logCopySourceAccess(req, requestID, operation, sourceBucket, sourceObject, objectSize) { |
| 704 | if (!req.sourceServerAccessLog || !serverAccessLogger) { |
| 705 | return; |
| 706 | } |
| 707 | |
| 708 | const params = req.sourceServerAccessLog; |
| 709 | const error = params.error; |
| 710 | let httpCode = 200; |
| 711 | let errorCode = undefined; |
| 712 | |
| 713 | if (error) { |
| 714 | httpCode = error.code ? parseInt(error.code, 10) : 500; |
| 715 | errorCode = error.message || 'InternalError'; |
| 716 | } |
| 717 | |
| 718 | // Copy over necessary fields from main serverAccessLog |
| 719 | if (req.serverAccessLog) { |
| 720 | params.authInfo = req.serverAccessLog.authInfo; |
| 721 | params.startTime = req.serverAccessLog.startTime; |
| 722 | params.startTimeUnixMS = req.serverAccessLog.startTimeUnixMS; |
| 723 | params.startTurnAroundTime = req.serverAccessLog.startTurnAroundTime; |
| 724 | params.onFinishEndTime = req.serverAccessLog.onFinishEndTime; |
| 725 | params.analyticsAccountName = req.serverAccessLog.analyticsAccountName; |
| 726 | params.analyticsUserName = req.serverAccessLog.analyticsUserName; |
| 727 | params.analyticsAction = req.serverAccessLog.analyticsAction; |
| 728 | } |
| 729 | |
| 730 | const logEntry = buildLogEntry(req, params, { |
| 731 | operation, |
| 732 | objectKey: sourceObject, |
| 733 | objectSize, |
| 734 | httpCode, |
| 735 | errorCode, |
| 736 | requestID, |
| 737 | aclRequired: params.aclRequired, |
| 738 | }); |
| 739 | |
| 740 | serverAccessLogger.write(`${JSON.stringify(logEntry)}\n`); |
| 741 | } |
| 742 | |
| 743 | module.exports = { |
| 744 | logServerAccess, |
no test coverage detected