1 |
|
2 | "use strict";
|
3 |
|
4 | var Util = require('util');
|
5 | var http = require('follow-redirects').http;
|
6 | var Url = require('url');
|
7 |
|
8 | var debug = require('debug')('upnpserver:contentProvider:Http');
|
9 | var logger = require('../logger');
|
10 |
|
11 | var ContentProvider = require('./contentProvider');
|
12 |
|
13 | var DIRECTORY_MIME_TYPE = "application/x-directory";
|
14 |
|
15 | class HttpContentProvider extends ContentProvider {
|
16 |
|
17 | |
18 |
|
19 |
|
20 | readdir(url, callback) {
|
21 | callback(null, []);
|
22 | }
|
23 |
|
24 | |
25 |
|
26 |
|
27 | stat(url, callback) {
|
28 | callback(null, {});
|
29 | }
|
30 |
|
31 | |
32 |
|
33 |
|
34 | createReadStream(session, url, options, callback) {
|
35 |
|
36 | this._prepareRequestOptions(url, options, (error, requestOptions) => {
|
37 | if (error) {
|
38 | return callback(error);
|
39 | }
|
40 |
|
41 | var request = http.request(requestOptions);
|
42 |
|
43 | request.on('response', function(response) {
|
44 | if (Math.floor(response.statusCode / 100) !== 2) {
|
45 | return callback(new Error("Invalid status '" + response.statusCode +
|
46 | "' message='" + response.statusMessage + "' for url=" + url));
|
47 | }
|
48 |
|
49 | callback(null, response);
|
50 | });
|
51 |
|
52 | request.on('error', (error) => {
|
53 | logger("Error when loading url=",url,error);
|
54 | callback(error);
|
55 | });
|
56 | });
|
57 | }
|
58 |
|
59 | _prepareRequestOptions(url, options, callback) {
|
60 |
|
61 | var uoptions = Url.parse(url);
|
62 | uoptions.keepAlive = true;
|
63 |
|
64 | callback(null, uoptions);
|
65 | }
|
66 | }
|
67 |
|
68 | module.exports=HttpContentProvider;
|