@montevideo-tech/cmcd-validator
Version:
This is a library created to validate CMCD
1,457 lines (1,456 loc) • 94.1 kB
JavaScript
export const genericTestCases = [
// Correct input
{
description: 'Correct input #1',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=sid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Session: sid="6e2fb550-c457-11e9-bb97-0800200c9a66"
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66"}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData:
{
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
},
},
},
{
description: 'Correct input #2',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
{
description: 'Correct input #3',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bs%2Crtp%3D15000%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Status: bs,rtp=15000
CMCD-Session: sid="6e2fb550-c457-11e9-bb97-0800200c9a66"
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bs":true,
"rtp":15000,
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66"
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bs: true,
rtp: 15000,
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
},
},
},
// Correct input nrr = start -
{
description: 'Correct input nrr = start -',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input nrr = - end
{
description: 'Correct input nrr = - end',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%22-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Incorrect input nrr format
{
description: 'Incorrect input nrr format #1',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2248763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: false,
errors: [
{
description: 'Invalid Nrr format',
type: 'incorrect-format',
key: 'nrr',
value: '48763',
},
],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Incorrect input nrr format
{
description: 'Incorrect input nrr format #2',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2248763--1234%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="48763--1234",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "48763--1234",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: false,
errors: [
{
description: 'Invalid Nrr format',
type: 'incorrect-format',
key: 'nrr',
value: '48763--1234',
},
],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '48763--1234',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = a
{
description: 'Correct input bl with ot = a',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Da%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=a,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "a",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'a',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = av
{
description: 'Correct input bl with ot = av',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dav%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=av,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "av",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'av',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = i, with warning for bl key
{
description: 'Correct input bl with ot = i',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Di%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=i,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "i",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'i',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = c
{
description: 'Correct input bl with ot = c',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dc%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=c,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "c",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'c',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = tt
{
description: 'Correct input bl with ot = tt',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dtt%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=tt,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "tt",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'tt',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = k
{
description: 'Correct input bl with ot = k',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dk%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=k,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "k",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'k',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl with ot = o
{
description: 'Correct input bl with ot = o',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Do%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=o,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "o",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'o',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input bl without ot
{
description: 'Correct input bl without ot',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21300,
},
],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Incorrect input bl not round to nearest
{
description: 'Correct input bl without ot',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21301%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21301,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21301,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: false,
errors: [
{
description: 'bl value is not rounded to the nearest 100ms.',
type: 'invalid-value',
key: 'bl',
value: 21301,
},
],
warnings: [
{
description: 'bl key should only be sent with an object type of a, v or av',
key: 'bl',
type: 'bl-with-wrong-ot-value',
value: 21301,
},
],
parsedData: {
bl: 21301,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input sf = h
{
description: 'Correct input sf = h',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dh%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=h,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "h",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'h',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input sf = s
{
description: 'Correct input sf = s',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Ds%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=s,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "s",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 's',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input sf = o
{
description: 'Correct input sf = o',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Do%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=o,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "o",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'o',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Incorrect input sf = m
{
description: 'Incorrect input sf = m',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dm%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dv%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=m,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=v
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "m",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "v",
"su": true,
"tb": 6000
}`,
output:
{
valid: false,
errors: [
{
description: 'sf value does not meet the necessary requirements. Must be one of the following values: d,h,s,o.',
type: 'invalid-value',
key: 'sf',
value: 'm',
},
],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'm',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'v',
su: true,
tb: 6000,
},
},
},
// Correct input st = l
{
description: 'Correct input st = l',
query: 'https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps_3840x2160_12000k/bbb_30fps_3840x2160_12000k_0.m4v?CMCD=bl%3D21300%2Cbr%3D3200%2Cbs%2Ccid%3D%22faec5fc2-ac30-11ea-bb37-0242ac130002%22%2Cd%3D4004%2Cdl%3D18500%2Cmtp%3D48100%2Cnor%3D%22..%252F300kbps%252Ftrack.m4v%22%2Cnrr%3D%2212323-48763%22%2Cot%3Dv%2Cpr%3D1.08%2Crtp%3D12000%2Csf%3Dd%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Cst%3Dl%2Csu%2Ctb%3D6000',
header: `GET /akamai/bbb_30fps/bbb_a64k/bbb_a64k_10.m4a HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
CMCD-Request: bl=21300,dl=18500,mtp=48100,nor="..%2F300kbps%2Ftrack.m4v",nrr="12323-48763",su
CMCD-Object: br=3200,d=4004,ot=v,tb=6000
CMCD-Status: bs,rtp=12000
CMCD-Session: cid="faec5fc2-ac30-11ea-bb37-0242ac130002",pr=1.08,sf=d,sid="6e2fb550-c457-11e9-bb97-0800200c9a66",st=l
Connection: keep-alive
Host: dash.akamaized.net
Origin: https://reference.dashif.org
Referer: https://reference.dashif.org/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"`,
json: `
{
"bl": 21300,
"br": 3200,
"bs": true,
"cid": "faec5fc2-ac30-11ea-bb37-0242ac130002",
"d": 4004,
"dl": 18500,
"mtp": 48100,
"nor": "..%2F300kbps%2Ftrack.m4v",
"nrr": "12323-48763",
"ot": "v",
"pr": 1.08,
"rtp": 12000,
"sf": "d",
"sid": "6e2fb550-c457-11e9-bb97-0800200c9a66",
"st": "l",
"su": true,
"tb": 6000
}`,
output:
{
valid: true,
errors: [],
warnings: [],
parsedData: {
bl: 21300,
br: 3200,
bs: true,
cid: 'faec5fc2-ac30-11ea-bb37-0242ac130002',
d: 4004,
dl: 18500,
mtp: 48100,
nor: '..%2F300kbps%2Ftrack.m4v',
nrr: '12323-48763',
ot: 'v',
pr: 1.08,
rtp: 12000,
sf: 'd',
sid: '6e2fb550-c457-11e9-bb97-0800200c9a66',
st: 'l',
su: true,
tb: 6000,
},
},
},
// Correct input v != 1