Skip to content

Commit

Permalink
Release/4.2.12 (#63)
Browse files Browse the repository at this point in the history
* Prep v4.2.12 and merging master back into develop

* [PCM-2343] - Added Genesys-App header. (#59)

* [PCM-2243] - Accept custom headers in logger config.

* prep 4.2.12

---------

Co-authored-by: PureCloud Jenkins <[email protected]>
  • Loading branch information
zservies and PureCloud Jenkins authored Apr 11, 2024
1 parent b925ab5 commit 9cf5c58
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 16 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

# [Unreleased](https://github.com/purecloudlabs/genesys-cloud-client-logger/compare/4.2.11...HEAD)
# [Unreleased](https://github.com/purecloudlabs/genesys-cloud-client-logger/compare/4.2.12...HEAD)

# [4.2.12](https://github.com/purecloudlabs/genesys-cloud-client-logger/compare/v4.2.11...4.2.12)
### Added
* [PCM-2343](https://inindca.atlassian.net/browse/PCM-2343) Added ability to pass in custom headers for telemetry purposes (internal use only).

# [4.2.11](https://github.com/purecloudlabs/genesys-cloud-client-logger/compare/v4.2.10...4.2.11)
### Fixed
Expand Down
3 changes: 2 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@

fetch('https://api.inindca.com/api/v2/tokens/me', {
headers: {
Authorization: `Bearer ${accessToken}`
Authorization: `Bearer ${accessToken}`,
'Genesys-App': 'genesys-cloud-client-logger-webui'
},
method: 'get'
})
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "genesys-cloud-client-logger",
"version": "4.2.11",
"version": "4.2.12",
"description": "Common logger for genesys cloud client application to upload logs server",
"main": "dist/src/index.js",
"module": "dist/es/index.js",
Expand Down
11 changes: 11 additions & 0 deletions src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,13 @@ export interface ILoggerConfig {
* not calling next() at all - don't log the message
*/
formatters?: LogFormatterFn[];
/**
* **** FOR GENESYS INTERNAL USE ****
* These headers are to be provided by internal consuming apps that use a
* built-in OAuth client for telemetry purposes. Headers that are
* provided by non-Genesys apps will be ignored.
*/
customHeaders?: ICustomHeaders;
}

export interface ILogger {
Expand Down Expand Up @@ -207,6 +214,10 @@ export interface ILogMessageOptions {
skipSecondaryLogger?: boolean,
}

export interface ICustomHeaders {
[header: string]: string;
}

export type NextFn = NextFnWithoutParams & NextFnWithParams;
export type NextFnWithoutParams = () => void;
export type NextFnWithParams = (level: LogLevel, message: string | Error, details?: any, options?: ILogMessageOptions) => void;
Expand Down
23 changes: 13 additions & 10 deletions src/log-uploader.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import axios, { AxiosError, AxiosResponse } from 'axios';
import { backOff } from 'exponential-backoff';
import { isAfter, add, differenceInMilliseconds } from 'date-fns';
import { IDeferred, ILogRequest, ISendLogRequest } from './interfaces';
import { ICustomHeaders, IDeferred, ILogRequest, ISendLogRequest } from './interfaces';
import { getDeferred, deepClone } from './utils';

const SAVED_REQUESTS_KEY = 'gc_logger_requests';
Expand All @@ -25,16 +25,16 @@ export interface IQueueItem {

const logUploaderMap = new Map<string, LogUploader>();

export const getOrCreateLogUploader = (url: string, debugMode = false, useUniqueLogUploader?: boolean): LogUploader => {
export const getOrCreateLogUploader = (url: string, debugMode = false, useUniqueLogUploader?: boolean, customHeaders?: ICustomHeaders): LogUploader => {
if (useUniqueLogUploader) {
return new LogUploader(url, debugMode);
return new LogUploader(url, debugMode, customHeaders);
}

let uploader = logUploaderMap.get(url);

/* if we don't have an uploader for this url, create one */
if (!uploader) {
uploader = new LogUploader(url, debugMode);
uploader = new LogUploader(url, debugMode, customHeaders);
logUploaderMap.set(url, uploader);
}

Expand All @@ -46,7 +46,7 @@ export class LogUploader {
private retryAfter?: Date;
private pendingRequest?: IQueueItem;

constructor (private url: string, private debugMode: boolean = false) { }
constructor (private url: string, private debugMode: boolean = false, private customHeaders?: ICustomHeaders) { }

postLogsToEndpoint (requestParams: ISendLogRequest): Promise<any> {
const deferred = getDeferred();
Expand Down Expand Up @@ -250,15 +250,18 @@ export class LogUploader {
const requestBody: Partial<ISendLogRequest> = { ...requestParams };
delete requestBody.accessToken;

const headers = {
'authorization': `Bearer ${requestParams.accessToken}`,
'content-type': 'application/json; charset=UTF-8',
...(this.customHeaders || {}),

}
return axios({
method: 'post',
url: this.url,
responseType: 'text',
headers: {
'authorization': `Bearer ${requestParams.accessToken}`,
'content-type': 'application/json; charset=UTF-8'
},
data: requestBody
data: requestBody,
headers,
});
}

Expand Down
2 changes: 1 addition & 1 deletion src/server-logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export class ServerLogger {

this.isInitialized = true;
this.debounceLogUploadTime = logger.config.uploadDebounceTime || DEFAULT_UPLOAD_DEBOUNCE;
this.logUploader = getOrCreateLogUploader(logger.config.url, logger.config.debugMode, logger.config.useUniqueLogUploader);
this.logUploader = getOrCreateLogUploader(logger.config.url, logger.config.debugMode, logger.config.useUniqueLogUploader, logger.config.customHeaders);

window.addEventListener('unload', this.sendAllLogsInstantly.bind(this));

Expand Down

0 comments on commit 9cf5c58

Please sign in to comment.