|
1 | 1 | var fs = require("fs"); |
2 | 2 | var Client = require("./client"); |
3 | | -var ORDER_PATH = "orders"; |
| 3 | +var IMPORT_TN_ORDER_PATH = "importTnOrders"; |
| 4 | +var LOAS_PATH = "loas"; |
| 5 | +var st = require("stream"); |
| 6 | +var streamifier = require("streamifier"); |
4 | 7 |
|
5 | | -function Order(){ |
| 8 | +function ImportTnOrder(){ |
6 | 9 | } |
7 | 10 |
|
8 | | -Order.create = function(client, item, callback){ |
| 11 | +ImportTnOrder.create = function(client, item, callback){ |
9 | 12 | if(arguments.length === 2){ |
10 | 13 | callback = item; |
11 | 14 | item = client; |
12 | 15 | client = new Client(); |
13 | 16 | }; |
14 | | - client.makeRequest("post", client.concatAccountPath(ORDER_PATH), {order: item}, function(err, item){ |
| 17 | + client.makeRequest("post", client.concatAccountPath(IMPORT_TN_ORDER_PATH), {importTnOrder: item}, function(err, item){ |
15 | 18 | if(err){ |
16 | | - return callback(err, item); |
| 19 | + return callback(err); |
17 | 20 | } |
18 | | - item.order.client = client; |
19 | | - item.order.__proto__ = Order.prototype; |
| 21 | + item.client = client; |
| 22 | + item.id = item.orderId; |
| 23 | + item.__proto__ = ImportTnOrder.prototype; |
20 | 24 | callback(null, item); |
21 | 25 | }); |
22 | 26 | }; |
23 | 27 |
|
24 | | -Order.get = function(client, id, callback){ |
| 28 | +ImportTnOrder.get = function(client, id, callback){ |
25 | 29 | if(arguments.length === 2){ |
26 | 30 | callback = id; |
27 | 31 | id = client; |
28 | 32 | client = new Client(); |
29 | 33 | }; |
30 | | - client.makeRequest("get", client.concatAccountPath(ORDER_PATH) + "/" + id, function(err, item){ |
31 | | - if(err){ |
32 | | - return callback(err, item); |
33 | | - } |
34 | | - item.order.client = client; |
35 | | - item.order.__proto__ = Order.prototype; |
36 | | - callback(null, item); |
37 | | - }); |
| 34 | + client.makeRequest("get", client.concatAccountPath(IMPORT_TN_ORDER_PATH) + "/" + id, function(err, item){ |
| 35 | + if(err){ |
| 36 | + return callback(err); |
| 37 | + } |
| 38 | + item.client = client; |
| 39 | + item.id = id; |
| 40 | + item.__proto__ = ImportTnOrder.prototype; |
| 41 | + callback(null, item); |
| 42 | + }); |
38 | 43 | }; |
39 | 44 |
|
40 | | -Order.list = function(client, query, callback){ |
41 | | - if(arguments.length === 2){ |
| 45 | +ImportTnOrder.list = function(client, query, callback){ |
| 46 | + if(arguments.length ===2){ |
42 | 47 | callback = query; |
43 | 48 | query = client; |
44 | 49 | client = new Client(); |
45 | 50 | } |
46 | | - client.makeRequest("get", client.concatAccountPath(ORDER_PATH), query, function(err, res){ |
| 51 | + client.makeRequest("get", client.concatAccountPath(IMPORT_TN_ORDER_PATH), query, function(err, res){ |
47 | 52 | if(err){ |
48 | 53 | return callback(err); |
49 | 54 | } |
50 | | - callback(null, res); |
| 55 | + return callback(null, res); |
51 | 56 | }); |
52 | 57 | }; |
53 | 58 |
|
54 | | -Order.prototype.getAreaCodes = function(callback){ |
55 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/areaCodes", function(err,areaCodes){ |
56 | | - if(err){ |
| 59 | +ImportTnOrder.prototype.getHistory = function (callback) { |
| 60 | + this.client.makeRequest("get", this.client.concatAccountPath(IMPORT_TN_ORDER_PATH) + "/" + this.id + "/history", function (err, history) { |
| 61 | + if (err) { |
57 | 62 | return callback(err); |
58 | 63 | } |
59 | | - var items = areaCodes.telephoneDetailsReport; |
60 | | - callback(null, Array.isArray(items)?items:[items]); |
| 64 | + var items = history.orderHistory; |
| 65 | + callback(null, Array.isArray(items) ? items : [items]); |
61 | 66 | }); |
62 | 67 | }; |
63 | 68 |
|
64 | | -Order.prototype.getNpaNxx = function(callback){ |
65 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/npaNxx", function(err,npaNxx){ |
66 | | - if(err){ |
67 | | - return callback(err); |
68 | | - } |
69 | | - var items = npaNxx.telephoneDetailsReport; |
70 | | - callback(null, Array.isArray(items)?items:[items]); |
71 | | - }); |
72 | | -}; |
| 69 | +function sendFile(request, file, mediaType, callback){ |
| 70 | + var stream = null; |
| 71 | + request.buffer().type(mediaType || "application/octet-stream"); |
| 72 | + if(typeof file === "string"){ |
| 73 | + stream = fs.createReadStream(file); |
| 74 | + } |
| 75 | + else if(Buffer.isBuffer(file)){ |
| 76 | + stream = streamifier.createReadStream(file); |
| 77 | + } |
| 78 | + else if(typeof file.pipe === "function" && typeof file.read === "function" && typeof file.on === "function"){ |
| 79 | + stream = file; |
| 80 | + } |
| 81 | + if(stream){ |
| 82 | + request.on("response", callback); |
| 83 | + request.on("error", function(err, result){ |
| 84 | + return err; |
| 85 | + }); |
| 86 | + stream.pipe(request); |
73 | 87 |
|
74 | | -Order.prototype.getTotals = function(callback) { |
75 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/totals", function(err,totals){ |
76 | | - if(err){ |
77 | | - return callback(err); |
78 | | - } |
79 | | - var items = totals.telephoneDetailsReport; |
80 | | - callback(null, Array.isArray(items)?items:[items]); |
81 | | - }); |
82 | | -}; |
| 88 | + return; |
| 89 | + } |
| 90 | + throw new Error("Invalid data to send"); |
| 91 | +} |
83 | 92 |
|
84 | | -Order.prototype.getTns = function(callback){ |
85 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/tns", function(err,tns){ |
86 | | - if(err){ |
87 | | - return callback(err); |
88 | | - } |
89 | | - callback(null, tns); |
| 93 | +ImportTnOrder.prototype.createFile = function(file, mediaType, callback){ |
| 94 | + if(arguments.length === 2){ |
| 95 | + callback = mediaType; |
| 96 | + mediaType = null; |
| 97 | + } |
| 98 | + var client = this.client; |
| 99 | + var request = client.createPostRequest(client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH)); |
| 100 | + sendFile(request, file, mediaType, function(res){ |
| 101 | + client.checkResponse(res, function(err, result){ |
| 102 | + if(err){ |
| 103 | + return callback(err); |
| 104 | + } |
| 105 | + if (typeof result !== 'undefined') { |
| 106 | + return callback(null, result.filename); |
| 107 | + } |
| 108 | + else { |
| 109 | + return callback(null, ""); |
| 110 | + } |
| 111 | + }); |
90 | 112 | }); |
91 | | -} |
| 113 | +}; |
92 | 114 |
|
93 | | -Order.prototype.getHistory = function(callback){ |
94 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/history", function(err,history){ |
95 | | - if(err){ |
96 | | - return callback(err); |
97 | | - } |
98 | | - var items = history.orderHistory; |
99 | | - callback(null, Array.isArray(items)?items:[items]); |
| 115 | +ImportTnOrder.prototype.updateFile = function(fileName, file, mediaType, callback){ |
| 116 | + if(arguments.length === 3){ |
| 117 | + callback = mediaType; |
| 118 | + mediaType = null; |
| 119 | + } |
| 120 | + var request = this.client.createPutRequest(this.client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH + "/" + fileName)); |
| 121 | + var client = this.client; |
| 122 | + sendFile(request, file, mediaType, function(res){ |
| 123 | + client.checkResponse(res, callback); |
100 | 124 | }); |
101 | | -} |
| 125 | +}; |
102 | 126 |
|
103 | | -Order.prototype.update = function(data, callback){ |
104 | | - this.client.makeRequest("put", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id, {order: data}, callback); |
| 127 | +ImportTnOrder.prototype.getFileMetadata = function(fileName, callback){ |
| 128 | + this.client.makeRequest("get", this.client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH + "/" + fileName + "/metadata"), callback); |
105 | 129 | }; |
106 | 130 |
|
| 131 | +ImportTnOrder.prototype.updateFileMetadata = function (fileName, metadata, callback) { |
| 132 | + this.client.makeRequest("put", this.client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH + "/" + fileName + "/metadata"), |
| 133 | + { fileMetaData: metadata }, callback); |
| 134 | +}; |
107 | 135 |
|
108 | | -Order.prototype.getNotes = function(callback){ |
109 | | - this.client.makeRequest("get", this.client.concatAccountPath(ORDER_PATH) + "/" + this.id + "/notes", function(err, notes){ |
| 136 | +ImportTnOrder.prototype.getFiles = function(metadata, callback){ |
| 137 | + if(arguments.length === 1){ |
| 138 | + callback = metadata; |
| 139 | + metadata = false; |
| 140 | + } |
| 141 | + this.client.makeRequest("get", this.client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH), {metadata: metadata}, function(err, result){ |
110 | 142 | if(err){ |
111 | 143 | return callback(err); |
112 | 144 | } |
113 | | - var items = notes.note; |
114 | | - callback(null, Array.isArray(items)?items:[items]); |
| 145 | + callback(null, result.fileData); |
115 | 146 | }); |
116 | 147 | }; |
117 | 148 |
|
118 | | -Order.prototype.addNote = function(note, callback){ |
119 | | - var self = this; |
120 | | - var request = this.client.createPostRequest(this.client.concatAccountPath(ORDER_PATH + "/" + this.id + "/notes"), {note: note}); |
121 | | - request.buffer().then(res => { |
122 | | - if(res.ok && res.headers.location){ |
123 | | - Client.getIdFromLocationHeader(res.headers.location, function(err, id){ |
124 | | - if(err){ |
125 | | - return callback(err); |
126 | | - } |
127 | | - self.getNotes(function(err, notes){ |
128 | | - if(err){ |
129 | | - return callback(err); |
130 | | - } |
131 | | - callback(null, notes.filter(function(n){ return n.id == id;})[0]); |
132 | | - }); |
133 | | - }); |
| 149 | +ImportTnOrder.prototype.getFile = function(fileName, destination){ |
| 150 | + var request = this.client.createGetRequest(this.client.concatAccountPath(IMPORT_TN_ORDER_PATH + "/" + this.id + "/" + LOAS_PATH + "/" + fileName)); |
| 151 | + if(destination){ |
| 152 | + var stream = null; |
| 153 | + if(typeof destination === "string"){ |
| 154 | + stream = fs.createWriteStream(destination); |
134 | 155 | } |
135 | | - else{ |
136 | | - self.client.checkResponse(res, callback); |
| 156 | + else if(typeof destination.write === "function"){ |
| 157 | + stream = destination; |
137 | 158 | } |
138 | | - }).catch(err => { |
139 | | - return callback(err); |
140 | | - }); |
141 | | -}; |
142 | | - |
143 | | -module.exports = Order; |
| 159 | + if(stream){ |
| 160 | + return request.pipe(stream); |
| 161 | + } |
| 162 | + } |
| 163 | + return request; |
| 164 | +} |
| 165 | +module.exports = ImportTnOrder; |
0 commit comments