Skip to content

Commit 9574041

Browse files
authored
add Assets.updateMp4Support and Assets.updateMasterAccess API endpoints (#46)
* bump to v2.8.0
1 parent dbed74f commit 9574041

File tree

5 files changed

+143
-1
lines changed

5 files changed

+143
-1
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## 2.8.0
4+
5+
- Add asset mp4-support endpoint (view [docs](https://docs.mux.com/reference#update-mp4-support) for usage)
6+
- Add asset master-access endpoint (view [docs](https://docs.mux.com/reference#update-master-access) for usage)
7+
8+
## 2.7.0
9+
10+
- Add real time api endpoints (view [docs](https://api-docs.mux.com/#real-time-get-1) for usage)
11+
12+
313
## 2.6.0
414

515
- Add Asset text track endpoints (view [docs](https://docs.mux.com/reference#create-a-subtitle-text-track) for usage)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mux/mux-node",
3-
"version": "2.7.0",
3+
"version": "2.8.0",
44
"description": "Mux API wrapper",
55
"keywords": [
66
"mux",

src/video/resources/assets.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,54 @@ class Assets extends Base {
263263
}
264264
return this.http.delete(`${buildBasePath(assetId)}/tracks/${trackId}`);
265265
}
266+
267+
/**
268+
* Update mp4 support for an asset
269+
* @param {Object} params - mp4 support JSON parameters
270+
* @returns {Promise} - Returns a resolved Promise with a response from the Mux API
271+
*
272+
* @example
273+
* const { Video } = new Mux(accessToken, secret);
274+
*
275+
* // Updates mp4 support for an asset
276+
* Video.Assets.updateMp4Support(assetId, {mp4_support: "standard"});
277+
*
278+
* @see https://docs.mux.com/reference#update-mp4-support
279+
*/
280+
updateMp4Support(assetId, params) {
281+
if (!assetId) {
282+
return Promise.reject(new Error('An asset ID is required'));
283+
}
284+
285+
if (!(params && params.mp4_support)) {
286+
return Promise.reject(new Error('params.mp4_support is required'));
287+
}
288+
return this.http.put(`${buildBasePath(assetId)}/mp4-support`, params);
289+
}
290+
291+
/**
292+
* Update master access for an asset
293+
* @param {Object} params - master access JSON parameters
294+
* @returns {Promise} - Returns a resolved Promise with a response from the Mux API
295+
*
296+
* @example
297+
* const { Video } = new Mux(accessToken, secret);
298+
*
299+
* // Delete an asset text track
300+
* Video.Assets.updateMasterAccess(assetId, {mp4_support: "temporary"});
301+
*
302+
* @see https://docs.mux.com/reference#update-master-access
303+
*/
304+
updateMasterAccess(assetId, params) {
305+
if (!assetId) {
306+
return Promise.reject(new Error('An asset ID is required'));
307+
}
308+
309+
if (!(params && params.master_access)) {
310+
return Promise.reject(new Error('params.master_access is required'));
311+
}
312+
return this.http.put(`${buildBasePath(assetId)}/master-access`, params);
313+
}
266314
}
267315

268316
module.exports = Assets;

test/integration/video/assets.spec.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,40 @@ describe('Integration::Assets', () => {
155155
err => expect(err).to.exist
156156
));
157157
});
158+
159+
/** @test {Assets.updateMp4Support} */
160+
describe('Assets.updateMp4Support', () => {
161+
/** @test {Assets.updateMp4Support} */
162+
it('updates the mp4 support for an asset', async () => {
163+
try {
164+
await Video.Assets.updateMp4Support(testAsset.id, {
165+
mp4_support: 'standard',
166+
});
167+
const { mp4_support: updatedMp4Support } = await Video.Assets.get(
168+
testAsset.id
169+
);
170+
expect(updatedMp4Support).to.equal('standard');
171+
} catch (err) {
172+
expect(err.messages && err.messages[0]).to.equal('Asset is not ready');
173+
}
174+
});
175+
});
176+
177+
/** @test {Assets.updateMasterAccess} */
178+
describe('Assets.updateMasterAccess', () => {
179+
/** @test {Assets.updateMasterAccess} */
180+
it('updates the master access for an asset', async () => {
181+
try {
182+
await Video.Assets.updateMasterAccess(testAsset.id, {
183+
master_access: 'temporary',
184+
});
185+
const { master_access: updatedMasterAccess } = await Video.Assets.get(
186+
testAsset.id
187+
);
188+
expect(updatedMasterAccess).to.equal('temporary');
189+
} catch (err) {
190+
expect(err.messages && err.messages[0]).to.equal('Asset is not ready');
191+
}
192+
});
193+
});
158194
});

test/unit/video/resources/assets.spec.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,52 @@ describe('Unit::Assets', () => {
417417
expect(err.message).to.equal('A track ID is required');
418418
}));
419419
});
420+
421+
/** @test {Assets.updateMp4Support} */
422+
describe('Assets.updateMp4Support', () => {
423+
/** @test {Assets.updateMp4Support} */
424+
it('makes a PUT request to update the mp4 support', done => {
425+
moxios.stubRequest(
426+
'https://api.mux.com/video/v1/assets/testAsset/mp4-support',
427+
{
428+
status: 200,
429+
responseText: '{"data": {"update": true}}',
430+
}
431+
);
432+
433+
const onFulfilled = sinon.spy();
434+
testAssets
435+
.updateMp4Support('testAsset', { mp4_support: 'standard' })
436+
.then(onFulfilled);
437+
438+
return moxios.wait(() => {
439+
expect(onFulfilled.getCall(0).args[0].update).to.be.true;
440+
done();
441+
});
442+
});
443+
});
444+
445+
/** @test {Assets.updateMasterAccess} */
446+
describe('Assets.updateMasterAccess', () => {
447+
/** @test {Assets.updateMasterAccess} */
448+
it('makes a PUT request to update the master access', done => {
449+
moxios.stubRequest(
450+
'https://api.mux.com/video/v1/assets/testAsset/master-access',
451+
{
452+
status: 200,
453+
responseText: '{"data": {"update": true}}',
454+
}
455+
);
456+
457+
const onFulfilled = sinon.spy();
458+
testAssets
459+
.updateMasterAccess('testAsset', { master_access: 'temporary' })
460+
.then(onFulfilled);
461+
462+
return moxios.wait(() => {
463+
expect(onFulfilled.getCall(0).args[0].update).to.be.true;
464+
done();
465+
});
466+
});
467+
});
420468
});

0 commit comments

Comments
 (0)