Created
September 17, 2021 15:42
-
-
Save coffee-mug/5330673822c28bfa953af206efed2279 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// config holds the required headers (authorization and content-type) to be passed to each request. | |
// To get a working token, just: | |
// 1- Go to oneTrust websites page and open your network | |
// 2- Click "Add Website" | |
// 3- Locate the request to the "token" endpoint in your network | |
// 4- In the Preview tab, locate the "access_token" property and copy/paste its value next to "Bearer" in the "authorization" | |
// header from the config object. Alternatively, if you have already instantiated an OTDomainAPI manager, use the method updateToken. | |
const config = { | |
headers: { | |
"accept": "application/json, text/plain, */*", | |
"authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJwY3MiOiJhNmI1Mjc1MGVmN2FiN2FjOGQwOGVjNTc1NDEzOTg2MTNlOGM1NDhlMTc2NzZlOTYyMWNjMGU3OTQ4OThiYzg0IiwidmlydHVhbFJvbGUiOmZhbHNlLCJyb2xlIjoiU2l0ZSBBZG1pbiIsInVzZXJfbmFtZSI6InJvaGl0LmxvYm9AZmlmdHktZml2ZS5jb20iLCJsYW5ndWFnZUlkIjoxLCJmZ3B0IjoiJDJhJDEwJDRpOGgxT3BnNkpYdGhQT1V0WmpZb2VucWY5ZDJwR1lkdG91U1FYYVQwcHFxZlBLL0NlWHNPIiwic2Vzc2lvbklkIjoiMmM0MjZiY2ItMTVjNi00YjIxLWJhNjMtOTY1YmI2MDY0Y2Q4IiwidGVuYW50R3VpZCI6IjEwNThlMGI5LWVlOTUtNGQ0My04MjkyLTNkYWU0MGNlNWMzYyIsImF1dGhvcml0aWVzIjpbIlNpdGUgQWRtaW4iXSwiY2xpZW50X2lkIjoib25ldHJ1c3QiLCJvcmdHcm91cElkIjoiMSIsIm9yZ0dyb3VwR3VpZCI6IjliNzQ5M2U2LWY2MzgtNDY0Ny05NTliLThjNTljZGY2NjhkYSIsInBlcm1pc3Npb25zIjoiSDRzSUFBQUFBQUFBQUhOZ0FJSjlEQWhnd3NUZ3dKQWd5OURBNEpMQXNLQ0RpWkhSVjUyQkF5ang0ZnZyZnkvRFpmN3d2UXYrL3B6aDRkM2QyMFFZT0ZROG1Ca1l6QmdZR1ZEQkJ3YnNnSW1od1E5TUtUQ0E5QnhnWmtqWTgvLy8vNy84SldEcEgrOTNKemd3TUxBd2RPeHZGS3VYMzFQZ3ovQ0hsY0ZBZ0FVb3g5TGg3OEVBMGdjQ0Rjd0d2QVUvNHA0L2s3N0NVQUExdStJQTI0dS8vK3ZScldRQjJzYkF3QXEwVHdFQU5tUHlsZXdBQUFBPS4iLCJzY29wZSI6WyJyZWFkIl0sInJvb3QiOiI5Yjc0OTNlNi1mNjM4LTQ2NDctOTU5Yi04YzU5Y2RmNjY4ZGEiLCJ0ZW5hbnRJZCI6MjQyMzksImd1aWQiOiJiOWE4YzlmMS0wMWE2LTRhNjItODVhMS0xYjMxM2U2ZjJkMmMiLCJkb05vdERlbGV0ZSI6ZmFsc2UsImV4cCI6MTYzMTg5MjcwNiwiaWF0IjoxNjMxODkyNDA2LCJqdGkiOiI5ZTBiYWZlMC0yZDBlLTRjM2MtYjIxYS03NjJjYWE4MGQxYzIiLCJlbWFpbCI6InJvaGl0LmxvYm9AZmlmdHktZml2ZS5jb20ifQ.iGl5Kbzf6gSj_B3MdKXWf0Utm9Xo6cclyxrTfQ7w4OiutrwFjQFPN22oDh2OWKKIsMDmZb8CYUQCdvnf7atXi9Sz9lgo4Xmngn2M8jIs_5xUHGPOMaWrDNHhRoaiPMocgRhfNJIbiMwHmHom9OQeOtuDgtoNognNPgknfKqZW1kUW4GwAYpFz0bTuetzQ4hk3EfYMI7aWeu66-x5PI2dGzYRg2bmb3ALrJqZW38gX9z-EoC25NdTCw9_hiABE68otkQKs4QfW7IIvlkHXafVblcAKXsM5z8kwOJRluOuQF5ibno_aH77k1k5nh7_rPfGqo0-1jFKDuui0UVVFgvnSg", | |
"content-type": "application/json", | |
}, | |
} | |
function OTDomainAPI(config) { | |
let conf = config; | |
return { | |
// updateToken replaces existing token in headers with newToken | |
updateToken(newToken) { | |
conf.headers.authorization = `Bearer ${newToken}`; | |
}, | |
// newDomainInfos return the JSON body expected by OT for creating a new domain. | |
// For now only the domain name is taken into account, feel free to update the paramaeters list if needed. | |
newDomainInfos(domain) { | |
if (!domain) throw new Error("domain can't be empty") | |
return { | |
"domain": domain, | |
"keepExistingData": true, | |
"numberOfPages": 1000, | |
"independentPaths": false, | |
"includedQueryParams": "", | |
"secondaryUris": "", | |
"isRescan": false, | |
"siteMapsUris": "", | |
"slowScan": false | |
} | |
}, | |
// addDomain performs the API call, using the headers defined in config and the domainInfos passed. | |
// It logs the API call response fro you to check that everything ran fine (expected HTTP status code: 201) | |
addDomain(domainInfos) { | |
fetch("https://app-fr.onetrust.com/api/cookiemanager/v1/websitescans?organization=9b7493e6-f638-4647-959b-8c59cdf668da", { | |
"headers": conf.headers, | |
"body": JSON.stringify(domainInfos), | |
"method": "POST", | |
"mode": "cors", | |
"credentials": "include" | |
}).then(response => console.log(`Response: ${response}`)) | |
}, | |
// batchUpdate performs domainsList.length API call to create domains. | |
async batchUpdate(domainsList) { | |
domainsList.forEach(async function(domainInfos){ | |
await this.addDomain(domainInfos); | |
}.bind(this)) | |
} | |
} | |
} | |
const domainsManager = OTDomainAPI(config); | |
// List of domains to create | |
const domains = [ | |
domainsManager.newDomainInfos("https://fetch2.fr"), | |
domainsManager.newDomainInfos("https://fetch3.fr"), | |
domainsManager.newDomainInfos("https://fetch4.fr"), | |
domainsManager.newDomainInfos("https://fetch5.fr"), | |
] | |
domainsManager.batchUpdate(domains); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment