Skip to content

Commit dcf7ca3

Browse files
authored
Release TW-1290 (#151)
Merge pull request #151 from madfish-solutions/release-to-prod-1290
2 parents 6d81b97 + 6f5738d commit dcf7ca3

File tree

4 files changed

+141
-65
lines changed

4 files changed

+141
-65
lines changed

src/advertising/slise.ts

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const stylePropsNames = [
6666
'right',
6767
'text-align',
6868
'top',
69+
'vertical-align',
6970
'visibility',
7071
'width',
7172
'z-index'
@@ -87,6 +88,7 @@ export interface SliseAdPlacesRule {
8788
divWrapperStyle?: Record<StylePropName, string>;
8889
};
8990
stylesOverrides?: SliseAdStylesOverrides[];
91+
shouldHideOriginal?: boolean;
9092
}
9193

9294
export interface PermanentSliseAdPlacesRule {
@@ -106,6 +108,7 @@ export interface PermanentSliseAdPlacesRule {
106108
insertAfterSelector?: string;
107109
insertionsCount?: number;
108110
shouldUseDivWrapper: boolean;
111+
elementStyle?: Record<StylePropName, string>;
109112
divWrapperStyle?: Record<StylePropName, string>;
110113
elementToMeasureSelector?: string;
111114
stylesOverrides?: SliseAdStylesOverrides[];
@@ -122,34 +125,29 @@ const SLISE_AD_PROVIDERS_BY_SITES_KEY = 'slise_ad_providers_by_sites';
122125
const SLISE_AD_PROVIDERS_ALL_SITES_KEY = 'slise_ad_providers_all_sites';
123126
const SLISE_AD_PROVIDERS_LIST_KEY = 'slise_ad_providers_list';
124127
const PERMANENT_SLISE_AD_PLACES_RULES_KEY = 'permanent_slise_ad_places_rules';
128+
const PERMANENT_NATIVE_AD_PLACES_RULES_KEY = 'permanent_native_ad_places_rules';
129+
130+
export const sliseAdPlacesRulesMethods = objectStorageMethodsFactory<SliseAdPlacesRule[]>(
131+
SLISE_AD_PLACES_RULES_KEY,
132+
[]
133+
);
125134

126-
export const {
127-
getByKey: getSliseAdPlacesRulesByDomain,
128-
getAllValues: getAllSliseAdPlacesRules,
129-
upsertValues: upsertSliseAdPlacesRules,
130-
removeValues: removeSliseAdPlacesRules
131-
} = objectStorageMethodsFactory<SliseAdPlacesRule[]>(SLISE_AD_PLACES_RULES_KEY, []);
135+
export const sliseAdProvidersByDomainRulesMethods = objectStorageMethodsFactory<SliseAdProvidersByDomainRule[]>(
136+
SLISE_AD_PROVIDERS_BY_SITES_KEY,
137+
[]
138+
);
132139

133-
export const {
134-
getByKey: getSliseAdProvidersByDomain,
135-
getAllValues: getAllSliseAdProvidersBySites,
136-
upsertValues: upsertSliseAdProvidersBySites,
137-
removeValues: removeSliseAdProvidersBySites
138-
} = objectStorageMethodsFactory<SliseAdProvidersByDomainRule[]>(SLISE_AD_PROVIDERS_BY_SITES_KEY, []);
140+
export const sliseAdProvidersMethods = objectStorageMethodsFactory<string[]>(SLISE_AD_PROVIDERS_LIST_KEY, []);
139141

140-
export const {
141-
getByKey: getSelectorsByProviderId,
142-
getAllValues: getAllProviders,
143-
upsertValues: upsertProviders,
144-
removeValues: removeProviders
145-
} = objectStorageMethodsFactory<string[]>(SLISE_AD_PROVIDERS_LIST_KEY, []);
142+
export const permanentSliseAdPlacesMethods = objectStorageMethodsFactory<PermanentSliseAdPlacesRule[]>(
143+
PERMANENT_SLISE_AD_PLACES_RULES_KEY,
144+
[]
145+
);
146146

147-
export const {
148-
getByKey: getPermanentSliseAdPlacesRulesByDomain,
149-
getAllValues: getAllPermanentSliseAdPlacesRules,
150-
upsertValues: upsertPermanentSliseAdPlacesRules,
151-
removeValues: removePermanentSliseAdPlacesRules
152-
} = objectStorageMethodsFactory<PermanentSliseAdPlacesRule[]>(PERMANENT_SLISE_AD_PLACES_RULES_KEY, []);
147+
export const permanentNativeAdPlacesMethods = objectStorageMethodsFactory<PermanentSliseAdPlacesRule[]>(
148+
PERMANENT_NATIVE_AD_PLACES_RULES_KEY,
149+
[]
150+
);
153151

154152
export const getSliseAdProvidersForAllSites = async () => redisClient.smembers(SLISE_AD_PROVIDERS_ALL_SITES_KEY);
155153

src/routers/slise-ad-rules/ad-places.ts

Lines changed: 112 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
import { Router } from 'express';
22

33
import {
4-
getAllPermanentSliseAdPlacesRules,
5-
getAllSliseAdPlacesRules,
6-
getPermanentSliseAdPlacesRulesByDomain,
7-
getSliseAdPlacesRulesByDomain,
8-
removePermanentSliseAdPlacesRules,
9-
removeSliseAdPlacesRules,
10-
upsertPermanentSliseAdPlacesRules,
11-
upsertSliseAdPlacesRules
4+
permanentNativeAdPlacesMethods,
5+
permanentSliseAdPlacesMethods,
6+
sliseAdPlacesRulesMethods
127
} from '../../advertising/slise';
138
import { addObjectStorageMethodsToRouter } from '../../utils/express-helpers';
149
import {
@@ -87,6 +82,10 @@ import {
8782
* type: array
8883
* items:
8984
* $ref: '#/components/schemas/SliseAdStylesOverrides'
85+
* shouldHideOriginal:
86+
* type: boolean
87+
* description: Whether original ads banners should be hidden but not removed
88+
* default: false
9089
* example:
9190
* urlRegexes:
9291
* - '^https://goerli\.etherscan\.io/?$'
@@ -210,6 +209,11 @@ import {
210209
* shouldUseDivWrapper:
211210
* type: boolean
212211
* description: Whether the Slise ads banner should be wrapped in a div
212+
* elementStyle:
213+
* type: object
214+
* description: Style of the new ad banner
215+
* additionalProperties:
216+
* type: string
213217
* divWrapperStyle:
214218
* type: object
215219
* description: Style of the div wrapper
@@ -263,6 +267,104 @@ import {
263267

264268
export const sliseAdPlacesRulesRouter = Router();
265269

270+
/**
271+
* @swagger
272+
* /api/slise-ad-rules/ad-places/permanent-native/{domain}:
273+
* get:
274+
* summary: Get rules for permanent native ads places for the specified domain
275+
* tags:
276+
* - Slise ad places
277+
* parameters:
278+
* - in: path
279+
* name: domain
280+
* required: true
281+
* schema:
282+
* type: string
283+
* format: hostname
284+
* example: 'etherscan.io'
285+
* responses:
286+
* '200':
287+
* description: Rules list
288+
* content:
289+
* application/json:
290+
* schema:
291+
* type: array
292+
* items:
293+
* $ref: '#/components/schemas/PermanentSliseAdPlacesRule'
294+
* '500':
295+
* $ref: '#/components/responses/ErrorResponse'
296+
* /api/slise-ad-rules/ad-places/permanent-native:
297+
* get:
298+
* summary: Get all rules for permanent native ads places
299+
* tags:
300+
* - Slise ad places
301+
* responses:
302+
* '200':
303+
* description: Domain - rules list dictionary
304+
* content:
305+
* application/json:
306+
* schema:
307+
* $ref: '#/components/schemas/PermanentSliseAdPlacesRulesDictionary'
308+
* '500':
309+
* $ref: '#/components/responses/ErrorResponse'
310+
* post:
311+
* summary: Add rules for permanent ads places. If rules for a domain already exist, they will be overwritten
312+
* tags:
313+
* - Slise ad places
314+
* security:
315+
* - basicAuth: []
316+
* requestBody:
317+
* description: Domain - rules list dictionary
318+
* content:
319+
* application/json:
320+
* schema:
321+
* $ref: '#/components/schemas/PermanentSliseAdPlacesRulesDictionary'
322+
* responses:
323+
* '200':
324+
* $ref: '#/components/responses/SuccessResponse'
325+
* '400':
326+
* $ref: '#/components/responses/ErrorResponse'
327+
* '401':
328+
* $ref: '#/components/responses/UnauthorizedError'
329+
* '500':
330+
* $ref: '#/components/responses/ErrorResponse'
331+
* delete:
332+
* summary: Remove rules for permanent ads places
333+
* tags:
334+
* - Slise ad places
335+
* security:
336+
* - basicAuth: []
337+
* requestBody:
338+
* description: List of domain names to remove rules for
339+
* content:
340+
* application/json:
341+
* schema:
342+
* type: array
343+
* items:
344+
* type: string
345+
* format: hostname
346+
* example:
347+
* - 'etherscan.io'
348+
* responses:
349+
* '200':
350+
* $ref: '#/components/responses/SuccessResponse'
351+
* '400':
352+
* $ref: '#/components/responses/ErrorResponse'
353+
* '401':
354+
* $ref: '#/components/responses/UnauthorizedError'
355+
* '500':
356+
* $ref: '#/components/responses/ErrorResponse'
357+
*/
358+
addObjectStorageMethodsToRouter(
359+
sliseAdPlacesRulesRouter,
360+
'/permanent-native',
361+
permanentNativeAdPlacesMethods,
362+
'domain',
363+
permanentSliseAdPlacesRulesDictionarySchema,
364+
hostnamesListSchema,
365+
entriesCount => `${entriesCount} entries have been removed`
366+
);
367+
266368
/**
267369
* @swagger
268370
* /api/slise-ad-rules/ad-places/permanent/{domain}:
@@ -354,12 +456,7 @@ export const sliseAdPlacesRulesRouter = Router();
354456
addObjectStorageMethodsToRouter(
355457
sliseAdPlacesRulesRouter,
356458
'/permanent',
357-
{
358-
getByKey: getPermanentSliseAdPlacesRulesByDomain,
359-
getAllValues: getAllPermanentSliseAdPlacesRules,
360-
upsertValues: upsertPermanentSliseAdPlacesRules,
361-
removeValues: removePermanentSliseAdPlacesRules
362-
},
459+
permanentSliseAdPlacesMethods,
363460
'domain',
364461
permanentSliseAdPlacesRulesDictionarySchema,
365462
hostnamesListSchema,
@@ -457,12 +554,7 @@ addObjectStorageMethodsToRouter(
457554
addObjectStorageMethodsToRouter(
458555
sliseAdPlacesRulesRouter,
459556
'/',
460-
{
461-
getByKey: getSliseAdPlacesRulesByDomain,
462-
getAllValues: getAllSliseAdPlacesRules,
463-
upsertValues: upsertSliseAdPlacesRules,
464-
removeValues: removeSliseAdPlacesRules
465-
},
557+
sliseAdPlacesRulesMethods,
466558
'domain',
467559
sliseAdPlacesRulesDictionarySchema,
468560
hostnamesListSchema,

src/routers/slise-ad-rules/providers.ts

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@ import { Router } from 'express';
22

33
import {
44
addSliseAdProvidersForAllSites,
5-
getAllProviders,
6-
getAllSliseAdProvidersBySites,
7-
getSelectorsByProviderId,
8-
getSliseAdProvidersByDomain,
95
getSliseAdProvidersForAllSites,
10-
removeProviders,
11-
removeSliseAdProvidersBySites,
126
removeSliseAdProvidersForAllSites,
13-
upsertProviders,
14-
upsertSliseAdProvidersBySites
7+
sliseAdProvidersMethods,
8+
sliseAdProvidersByDomainRulesMethods
159
} from '../../advertising/slise';
1610
import { basicAuth } from '../../middlewares/basic-auth.middleware';
1711
import { addObjectStorageMethodsToRouter, withBodyValidation, withExceptionHandler } from '../../utils/express-helpers';
@@ -277,12 +271,7 @@ sliseAdProvidersRouter
277271
addObjectStorageMethodsToRouter(
278272
sliseAdProvidersRouter,
279273
'/by-sites',
280-
{
281-
getAllValues: getAllSliseAdProvidersBySites,
282-
getByKey: getSliseAdProvidersByDomain,
283-
upsertValues: upsertSliseAdProvidersBySites,
284-
removeValues: removeSliseAdProvidersBySites
285-
},
274+
sliseAdProvidersByDomainRulesMethods,
286275
'domain',
287276
sliseAdProvidersByDomainsRulesDictionarySchema,
288277
hostnamesListSchema,
@@ -383,12 +372,7 @@ addObjectStorageMethodsToRouter(
383372
addObjectStorageMethodsToRouter(
384373
sliseAdProvidersRouter,
385374
'/',
386-
{
387-
getAllValues: getAllProviders,
388-
getByKey: getSelectorsByProviderId,
389-
upsertValues: upsertProviders,
390-
removeValues: removeProviders
391-
},
375+
sliseAdProvidersMethods,
392376
'providerId',
393377
sliseAdProvidersDictionarySchema,
394378
adTypesListSchema,

src/utils/schemas.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ const sliseAdPlacesRulesSchema = arraySchema()
115115
divWrapperStyle: styleSchema
116116
})
117117
.required(),
118-
stylesOverrides: arraySchema().of(sliseAdStylesOverridesSchema.clone().required())
118+
stylesOverrides: arraySchema().of(sliseAdStylesOverridesSchema.clone().required()),
119+
shouldHideOriginal: booleanSchema().default(false)
119120
})
120121
.required()
121122
)
@@ -148,6 +149,7 @@ const permanentSliseAdPlacesRulesSchema = arraySchema()
148149
insertAfterSelector: cssSelectorSchema,
149150
insertionsCount: numberSchema().integer().min(1).default(1),
150151
shouldUseDivWrapper: booleanSchema().required(),
152+
elementStyle: styleSchema,
151153
divWrapperStyle: styleSchema,
152154
elementToMeasureSelector: cssSelectorSchema,
153155
stylesOverrides: arraySchema().of(sliseAdStylesOverridesSchema.clone().required()),

0 commit comments

Comments
 (0)