UNPKG

1.54 kBJavaScriptView Raw
1/*jslint node: true, esversion: 6 */
2"use strict";
3
4var Util = require('util');
5var http = require('follow-redirects').http;
6var Url = require('url');
7
8var debug = require('debug')('upnpserver:contentProvider:Http');
9var logger = require('../logger');
10
11var ContentProvider = require('./contentProvider');
12
13var DIRECTORY_MIME_TYPE = "application/x-directory";
14
15class 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
68module.exports=HttpContentProvider;