Skip to content

Commit cefb13f

Browse files
feat(mediaurls): option to add revision query param to media URLs in Release (#243)
1 parent 6363817 commit cefb13f

4 files changed

Lines changed: 41 additions & 1 deletion

File tree

src/modules/CaaSMapper.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,20 @@ describe('CaaSMapper', () => {
163163
`${url}?prev&rev=5593`
164164
)
165165
})
166+
167+
it('should append the revision as a query param if addRevisionToMediaUrlsInRelease is true and content mode is release', () => {
168+
const api = createApi()
169+
api.contentMode = FSXAContentMode.RELEASE
170+
api.addRevisionToMediaUrlsInRelease = true
171+
const mapper = new CaaSMapper(api, 'de', {addRevisionToMediaUrlsInRelease: true}, createLogger())
172+
const url = 'https://e-spirit.local/some/resource'
173+
expect(mapper.buildMediaUrl(url)).toEqual(url)
174+
expect(mapper.buildMediaUrl(url, 5593)).toEqual(`${url}?rev=5593`)
175+
// check media string construction
176+
expect(mapper.buildMediaUrl(`${url}?prev`, 5593)).toEqual(
177+
`${url}?prev&rev=5593`
178+
)
179+
})
166180
})
167181

168182
describe('mapDataEntry', () => {

src/modules/CaaSMapper.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,17 @@ export class CaaSMapper {
106106
// just started, when we need to keep track of them.
107107
_processedItems: Record<string, true> = {}
108108

109+
// Add Revision query param to media urls in release case
110+
addRevisionToMediaUrlsInRelease: boolean = false
111+
109112
constructor(
110113
api: FSXARemoteApi,
111114
locale: string | undefined,
112115
utils: {
113116
customMapper?: CustomMapper
114117
referenceDepth?: number
115118
maxReferenceDepth?: number
119+
addRevisionToMediaUrlsInRelease?: boolean
116120
},
117121
logger: Logger
118122
) {
@@ -129,6 +133,7 @@ export class CaaSMapper {
129133
utils.maxReferenceDepth ?? DEFAULT_MAX_REFERENCE_DEPTH
130134

131135
this.logger.debug('Created new CaaSMapper')
136+
this.addRevisionToMediaUrlsInRelease = utils.addRevisionToMediaUrlsInRelease ?? false
132137
}
133138

134139
addToResolvedReferences(
@@ -231,7 +236,7 @@ export class CaaSMapper {
231236
}
232237

233238
buildMediaUrl(url: string, rev?: number) {
234-
if (rev && this.api.contentMode === FSXAContentMode.PREVIEW) {
239+
if (rev && (this.api.contentMode === FSXAContentMode.PREVIEW || this.addRevisionToMediaUrlsInRelease)) {
235240
url += `${url.includes('?') ? '&' : '?'}rev=${rev}`
236241
}
237242
return url

src/modules/FSXARemoteApi.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export class FSXARemoteApi implements FSXAApi {
7474
private _caasItemFilter?: CaasItemFilter
7575
private _logLevel: LogLevel
7676
private _enableEventStream: boolean = false
77+
private _addRevisionToMediaUrlsInRelease: boolean = false
7778

7879
/**
7980
* The constructor of this class initializes the configuration for the api.
@@ -90,6 +91,7 @@ export class FSXARemoteApi implements FSXAApi {
9091
* @param config.customMapper optional {@link CustomMapper CustomMapper}
9192
* @param config.filterOptions optional {@link RemoteApiFilterOptions RemoteApiFilterOptions} (EXPERIMENTAL)
9293
* @param config.logLevel the used {@link LogLevel LogLevel} for the API `(default LogLevel.ERROR)` - optional
94+
* @param config.addRevisionToMediaUrlsInRelease sets flag if revision query param should be added to media urls in release.
9395
*/
9496
constructor({
9597
apikey,
@@ -103,6 +105,7 @@ export class FSXARemoteApi implements FSXAApi {
103105
customMapper,
104106
filterOptions,
105107
logLevel = LogLevel.ERROR,
108+
addRevisionToMediaUrlsInRelease = false
106109
}: FSXARemoteApiConfig) {
107110
this.apikey = apikey
108111
this.caasURL = caasURL
@@ -118,6 +121,7 @@ export class FSXARemoteApi implements FSXAApi {
118121
this._queryBuilder = new QueryBuilder(this._logger)
119122
this._navigationItemFilter = filterOptions?.navigationItemFilter
120123
this._caasItemFilter = filterOptions?.caasItemFilter
124+
this._addRevisionToMediaUrlsInRelease = addRevisionToMediaUrlsInRelease
121125

122126
this._logger.debug('FSXARemoteApi created', {
123127
caasURL,
@@ -129,6 +133,7 @@ export class FSXARemoteApi implements FSXAApi {
129133
customMapper: this._customMapper,
130134
navigationItemFilter: this._navigationItemFilter,
131135
caasItemFilter: this._caasItemFilter,
136+
addRevisionToMediaUrlsInRelease
132137
})
133138
}
134139

@@ -636,6 +641,7 @@ export class FSXARemoteApi implements FSXAApi {
636641
{
637642
customMapper: this._customMapper,
638643
maxReferenceDepth: this._maxReferenceDepth,
644+
addRevisionToMediaUrlsInRelease: this._addRevisionToMediaUrlsInRelease
639645
},
640646
new Logger(this._logLevel, 'CaaSMapper')
641647
)
@@ -1043,6 +1049,20 @@ export class FSXARemoteApi implements FSXAApi {
10431049
this._contentMode = value
10441050
}
10451051

1052+
/**
1053+
* gets flag, if revision should be added to media urls in release
1054+
*/
1055+
public get addRevisionToMediaUrlsInRelease() {
1056+
return this._addRevisionToMediaUrlsInRelease
1057+
}
1058+
1059+
/**
1060+
* Sets flag, if revision should be added to media urls in release
1061+
*/
1062+
public set addRevisionToMediaUrlsInRelease(value: boolean) {
1063+
this._addRevisionToMediaUrlsInRelease = value
1064+
}
1065+
10461066
/**
10471067
* @returns the configured log level
10481068
*/

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,7 @@ export type FSXARemoteApiConfig = {
10331033
customMapper?: CustomMapper
10341034
filterOptions?: RemoteApiFilterOptions
10351035
enableEventStream?: boolean
1036+
addRevisionToMediaUrlsInRelease?: boolean
10361037
}
10371038

10381039
export type FilterContextProvider = () => unknown | null

0 commit comments

Comments
 (0)