Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/modules/CaaSMapper.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,20 @@ describe('CaaSMapper', () => {
`${url}?prev&rev=5593`
)
})

it('should append the revision as a query param if addRevisionToMediaUrlsInRelease is true and content mode is release', () => {
const api = createApi()
api.contentMode = FSXAContentMode.RELEASE
api.addRevisionToMediaUrlsInRelease = true
const mapper = new CaaSMapper(api, 'de', {addRevisionToMediaUrlsInRelease: true}, createLogger())
const url = 'https://e-spirit.local/some/resource'
expect(mapper.buildMediaUrl(url)).toEqual(url)
expect(mapper.buildMediaUrl(url, 5593)).toEqual(`${url}?rev=5593`)
// check media string construction
expect(mapper.buildMediaUrl(`${url}?prev`, 5593)).toEqual(
`${url}?prev&rev=5593`
)
})
})

describe('mapDataEntry', () => {
Expand Down
7 changes: 6 additions & 1 deletion src/modules/CaaSMapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,17 @@ export class CaaSMapper {
// just started, when we need to keep track of them.
_processedItems: Record<string, true> = {}

// Add Revision query param to media urls in release case
addRevisionToMediaUrlsInRelease: boolean = false

constructor(
api: FSXARemoteApi,
locale: string | undefined,
utils: {
customMapper?: CustomMapper
referenceDepth?: number
maxReferenceDepth?: number
addRevisionToMediaUrlsInRelease?: boolean
},
logger: Logger
) {
Expand All @@ -129,6 +133,7 @@ export class CaaSMapper {
utils.maxReferenceDepth ?? DEFAULT_MAX_REFERENCE_DEPTH

this.logger.debug('Created new CaaSMapper')
this.addRevisionToMediaUrlsInRelease = utils.addRevisionToMediaUrlsInRelease ?? false
}

addToResolvedReferences(
Expand Down Expand Up @@ -231,7 +236,7 @@ export class CaaSMapper {
}

buildMediaUrl(url: string, rev?: number) {
if (rev && this.api.contentMode === FSXAContentMode.PREVIEW) {
if (rev && (this.api.contentMode === FSXAContentMode.PREVIEW || this.addRevisionToMediaUrlsInRelease)) {
url += `${url.includes('?') ? '&' : '?'}rev=${rev}`
}
return url
Expand Down
20 changes: 20 additions & 0 deletions src/modules/FSXARemoteApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export class FSXARemoteApi implements FSXAApi {
private _caasItemFilter?: CaasItemFilter
private _logLevel: LogLevel
private _enableEventStream: boolean = false
private _addRevisionToMediaUrlsInRelease: boolean = false

/**
* The constructor of this class initializes the configuration for the api.
Expand All @@ -90,6 +91,7 @@ export class FSXARemoteApi implements FSXAApi {
* @param config.customMapper optional {@link CustomMapper CustomMapper}
* @param config.filterOptions optional {@link RemoteApiFilterOptions RemoteApiFilterOptions} (EXPERIMENTAL)
* @param config.logLevel the used {@link LogLevel LogLevel} for the API `(default LogLevel.ERROR)` - optional
* @param config.addRevisionToMediaUrlsInRelease sets flag if revision query param should be added to media urls in release.
*/
constructor({
apikey,
Expand All @@ -103,6 +105,7 @@ export class FSXARemoteApi implements FSXAApi {
customMapper,
filterOptions,
logLevel = LogLevel.ERROR,
addRevisionToMediaUrlsInRelease = false
}: FSXARemoteApiConfig) {
this.apikey = apikey
this.caasURL = caasURL
Expand All @@ -118,6 +121,7 @@ export class FSXARemoteApi implements FSXAApi {
this._queryBuilder = new QueryBuilder(this._logger)
this._navigationItemFilter = filterOptions?.navigationItemFilter
this._caasItemFilter = filterOptions?.caasItemFilter
this._addRevisionToMediaUrlsInRelease = addRevisionToMediaUrlsInRelease

this._logger.debug('FSXARemoteApi created', {
caasURL,
Expand All @@ -129,6 +133,7 @@ export class FSXARemoteApi implements FSXAApi {
customMapper: this._customMapper,
navigationItemFilter: this._navigationItemFilter,
caasItemFilter: this._caasItemFilter,
addRevisionToMediaUrlsInRelease
})
}

Expand Down Expand Up @@ -636,6 +641,7 @@ export class FSXARemoteApi implements FSXAApi {
{
customMapper: this._customMapper,
maxReferenceDepth: this._maxReferenceDepth,
addRevisionToMediaUrlsInRelease: this._addRevisionToMediaUrlsInRelease
},
new Logger(this._logLevel, 'CaaSMapper')
)
Expand Down Expand Up @@ -1043,6 +1049,20 @@ export class FSXARemoteApi implements FSXAApi {
this._contentMode = value
}

/**
* gets flag, if revision should be added to media urls in release
*/
public get addRevisionToMediaUrlsInRelease() {
return this._addRevisionToMediaUrlsInRelease
}

/**
* Sets flag, if revision should be added to media urls in release
*/
public set addRevisionToMediaUrlsInRelease(value: boolean) {
this._addRevisionToMediaUrlsInRelease = value
}

/**
* @returns the configured log level
*/
Expand Down
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1033,6 +1033,7 @@ export type FSXARemoteApiConfig = {
customMapper?: CustomMapper
filterOptions?: RemoteApiFilterOptions
enableEventStream?: boolean
addRevisionToMediaUrlsInRelease?: boolean
}

export type FilterContextProvider = () => unknown | null
Expand Down
Loading