UNPKG

12.4 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
9var _index = require("./index");
10
11var _index2 = _interopRequireDefault(_index);
12
13var _fs = require("fs");
14
15var _fs2 = _interopRequireDefault(_fs);
16
17var _querystring = require("querystring");
18
19var _querystring2 = _interopRequireDefault(_querystring);
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
25var Media = function () {
26 _createClass(Media, null, [{
27 key: "PATH",
28 get: function get() {
29 return "/v3/media";
30 }
31 }]);
32
33 function Media(credentials, options) {
34 _classCallCheck(this, Media);
35
36 this.creds = credentials;
37 this.options = options;
38
39 // Used to facilitate testing of the call to the underlying object
40 this._nexmo = this.options.nexmoOverride || _index2.default;
41
42 this._nexmo.initialize(this.creds.apiKey, this.creds.apiSecret, this.options);
43 }
44
45 _createClass(Media, [{
46 key: "upload",
47 value: function upload(opts, callback) {
48 opts = opts || {};
49 if (!opts.file && !opts.url) {
50 throw new Error("You must provide either 'file' or 'url' to upload a file");
51 }
52
53 if (opts.file) {
54 opts.file = _fs2.default.createReadStream(opts.file);
55 }
56 return this.options.api.postFile(Media.PATH, opts, function (err, response, body) {
57 if (err) {
58 return callback(err);
59 }
60
61 var location = "";
62 if (response && response.headers) {
63 location = response.headers.location;
64 }
65
66 return callback(null, location);
67 }, true);
68 }
69 }, {
70 key: "search",
71 value: function search(options, callback) {
72 if (typeof options == "function" && !callback) {
73 callback = options;
74 options = {};
75 }
76
77 options = options || {};
78
79 return this._makeRequest("GET", Media.PATH, options, {}, callback);
80 }
81
82 // If If-Modified-Since header is provided and the data hasn't changed, the
83 // user will receive an empty body in the callback, NOT an error
84
85 }, {
86 key: "download",
87 value: function download(id, headers, callback) {
88 if (!callback && typeof headers == "function") {
89 callback = headers;
90 headers = {};
91 }
92
93 return this._makeRequest("GET", Media.PATH + "/" + id, {}, headers, callback, true);
94 }
95 }, {
96 key: "delete",
97 value: function _delete(id, callback) {
98 return this._makeRequest("DELETE", Media.PATH + "/" + id, {}, {}, callback);
99 }
100 }, {
101 key: "get",
102 value: function get(id, callback) {
103 return this._makeRequest("GET", Media.PATH + "/" + id + "/info", {}, {}, callback);
104 }
105 }, {
106 key: "update",
107 value: function update(id, opts, callback) {
108 return this._makeRequest("PUT", Media.PATH + "/" + id + "/info", opts, {}, callback);
109 }
110 }, {
111 key: "_makeRequest",
112 value: function _makeRequest(verb, path, options, headers, callback, skipJsonParsing) {
113 headers = Object.assign({
114 "Content-Type": "application/json",
115 Authorization: "Bearer " + this.creds.generateJwt()
116 }, headers);
117
118 var req = {};
119 if (verb.toUpperCase() === "GET") {
120 if (Object.keys(options).length) {
121 path = path + "?" + _querystring2.default.stringify(options);
122 }
123 } else {
124 req["body"] = JSON.stringify(options);
125 }
126
127 req["path"] = path;
128 req["headers"] = headers;
129
130 return this.options.api.request(req, verb, callback, skipJsonParsing);
131 }
132 }]);
133
134 return Media;
135}();
136
137exports.default = Media;
138module.exports = exports["default"];
139//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZWRpYS5qcyJdLCJuYW1lcyI6WyJNZWRpYSIsImNyZWRlbnRpYWxzIiwib3B0aW9ucyIsImNyZWRzIiwiX25leG1vIiwibmV4bW9PdmVycmlkZSIsImluaXRpYWxpemUiLCJhcGlLZXkiLCJhcGlTZWNyZXQiLCJvcHRzIiwiY2FsbGJhY2siLCJmaWxlIiwidXJsIiwiRXJyb3IiLCJjcmVhdGVSZWFkU3RyZWFtIiwiYXBpIiwicG9zdEZpbGUiLCJQQVRIIiwiZXJyIiwicmVzcG9uc2UiLCJib2R5IiwibG9jYXRpb24iLCJoZWFkZXJzIiwiX21ha2VSZXF1ZXN0IiwiaWQiLCJ2ZXJiIiwicGF0aCIsInNraXBKc29uUGFyc2luZyIsIk9iamVjdCIsImFzc2lnbiIsIkF1dGhvcml6YXRpb24iLCJnZW5lcmF0ZUp3dCIsInJlcSIsInRvVXBwZXJDYXNlIiwia2V5cyIsImxlbmd0aCIsInN0cmluZ2lmeSIsIkpTT04iLCJyZXF1ZXN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0lBRU1BLEs7Ozt3QkFDYztBQUNoQixhQUFPLFdBQVA7QUFDRDs7O0FBRUQsaUJBQVlDLFdBQVosRUFBeUJDLE9BQXpCLEVBQWtDO0FBQUE7O0FBQ2hDLFNBQUtDLEtBQUwsR0FBYUYsV0FBYjtBQUNBLFNBQUtDLE9BQUwsR0FBZUEsT0FBZjs7QUFFQTtBQUNBLFNBQUtFLE1BQUwsR0FBYyxLQUFLRixPQUFMLENBQWFHLGFBQWIsbUJBQWQ7O0FBRUEsU0FBS0QsTUFBTCxDQUFZRSxVQUFaLENBQ0UsS0FBS0gsS0FBTCxDQUFXSSxNQURiLEVBRUUsS0FBS0osS0FBTCxDQUFXSyxTQUZiLEVBR0UsS0FBS04sT0FIUDtBQUtEOzs7OzJCQUVNTyxJLEVBQU1DLFEsRUFBVTtBQUNyQkQsYUFBT0EsUUFBUSxFQUFmO0FBQ0EsVUFBSSxDQUFDQSxLQUFLRSxJQUFOLElBQWMsQ0FBQ0YsS0FBS0csR0FBeEIsRUFBNkI7QUFDM0Is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Q0FBZDtBQUNEOztBQUVEOEIsVUFBSSxNQUFKLElBQWNOLElBQWQ7QUFDQU0sVUFBSSxTQUFKLElBQWlCVixPQUFqQjs7QUFFQSxhQUFPLEtBQUtwQixPQUFMLENBQWFhLEdBQWIsQ0FBaUJ1QixPQUFqQixDQUF5Qk4sR0FBekIsRUFBOEJQLElBQTlCLEVBQW9DZixRQUFwQyxFQUE4Q2lCLGVBQTlDLENBQVA7QUFDRDs7Ozs7O2tCQUdZM0IsSyIsImZpbGUiOiJNZWRpYS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbmV4bW8gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBxdWVyeXN0cmluZyBmcm9tIFwicXVlcnlzdHJpbmdcIjtcblxuY2xhc3MgTWVkaWEge1xuICBzdGF0aWMgZ2V0IFBBVEgoKSB7XG4gICAgcmV0dXJuIFwiL3YzL21lZGlhXCI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFscywgb3B0aW9ucykge1xuICAgIHRoaXMuY3JlZHMgPSBjcmVkZW50aWFscztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgLy8gVXNlZCB0byBmYWNpbGl0YXRlIHRlc3Rpbmcgb2YgdGhlIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0XG4gICAgdGhpcy5fbmV4bW8gPSB0aGlzLm9wdGlvbnMubmV4bW9PdmVycmlkZSB8fCBuZXhtbztcblxuICAgIHRoaXMuX25leG1vLmluaXRpYWxpemUoXG4gICAgICB0aGlzLmNyZWRzLmFwaUtleSxcbiAgICAgIHRoaXMuY3JlZHMuYXBpU2VjcmV0LFxuICAgICAgdGhpcy5vcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZChvcHRzLCBjYWxsYmFjaykge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIGlmICghb3B0cy5maWxlICYmICFvcHRzLnVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIllvdSBtdXN0IHByb3ZpZGUgZWl0aGVyICdmaWxlJyBvciAndXJsJyB0byB1cGxvYWQgYSBmaWxlXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZmlsZSkge1xuICAgICAgb3B0cy5maWxlID0gZnMuY3JlYXRlUmVhZFN0cmVhbShvcHRzLmZpbGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFwaS5wb3N0RmlsZShcbiAgICAgIE1lZGlhLlBBVEgsXG4gICAgICBvcHRzLFxuICAgICAgZnVuY3Rpb24oZXJyLCByZXNwb25zZSwgYm9keSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYXRpb24gPSBcIlwiO1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGVhZGVycykge1xuICAgICAgICAgIGxvY2F0aW9uID0gcmVzcG9uc2UuaGVhZGVycy5sb2NhdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBsb2NhdGlvbik7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBzZWFyY2gob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT0gXCJmdW5jdGlvblwiICYmICFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgcmV0dXJuIHRoaXMuX21ha2VSZXF1ZXN0KFwiR0VUXCIsIE1lZGlhLlBBVEgsIG9wdGlvbnMsIHt9LCBjYWxsYmFjayk7XG4gIH1cblxuICAvLyBJZiBJZi1Nb2RpZmllZC1TaW5jZSBoZWFkZXIgaXMgcHJvdmlkZWQgYW5kIHRoZSBkYXRhIGhhc24ndCBjaGFuZ2VkLCB0aGVcbiAgLy8gdXNlciB3aWxsIHJlY2VpdmUgYW4gZW1wdHkgYm9keSBpbiB0aGUgY2FsbGJhY2ssIE5PVCBhbiBlcnJvclxuICBkb3dubG9hZChpZCwgaGVhZGVycywgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrICYmIHR5cGVvZiBoZWFkZXJzID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2FsbGJhY2sgPSBoZWFkZXJzO1xuICAgICAgaGVhZGVycyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tYWtlUmVxdWVzdChcbiAgICAgIFwiR0VUXCIsXG4gICAgICBgJHtNZWRpYS5QQVRIfS8ke2lkfWAsXG4gICAgICB7fSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBjYWxsYmFjayxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlKGlkLCBjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9tYWtlUmVxdWVzdChcIkRFTEVURVwiLCBgJHtNZWRpYS5QQVRIfS8ke2lkfWAsIHt9LCB7fSwgY2FsbGJhY2spO1xuICB9XG5cbiAgZ2V0KGlkLCBjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9tYWtlUmVxdWVzdChcbiAgICAgIFwiR0VUXCIsXG4gICAgICBgJHtNZWRpYS5QQVRIfS8ke2lkfS9pbmZvYCxcbiAgICAgIHt9LFxuICAgICAge30sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICB1cGRhdGUoaWQsIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuX21ha2VSZXF1ZXN0KFxuICAgICAgXCJQVVRcIixcbiAgICAgIGAke01lZGlhLlBBVEh9LyR7aWR9L2luZm9gLFxuICAgICAgb3B0cyxcbiAgICAgIHt9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgX21ha2VSZXF1ZXN0KHZlcmIsIHBhdGgsIG9wdGlvbnMsIGhlYWRlcnMsIGNhbGxiYWNrLCBza2lwSnNvblBhcnNpbmcpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgfSxcbiAgICAgIGhlYWRlcnNcbiAgICApO1xuXG4gICAgbGV0IHJlcSA9IHt9O1xuICAgIGlmICh2ZXJiLnRvVXBwZXJDYXNlKCkgPT09IFwiR0VUXCIpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhvcHRpb25zKS5sZW5ndGgpIHtcbiAgICAgICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVxW1wiYm9keVwiXSA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJlcVtcInBhdGhcIl0gPSBwYXRoO1xuICAgIHJlcVtcImhlYWRlcnNcIl0gPSBoZWFkZXJzO1xuXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hcGkucmVxdWVzdChyZXEsIHZlcmIsIGNhbGxiYWNrLCBza2lwSnNvblBhcnNpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lZGlhO1xuIl19
\No newline at end of file