UNPKG

1.9 kBJavaScriptView Raw
1var EventEmitter = require ('events').EventEmitter,
2 fs = require ('fs'),
3 util = require ('util'),
4 urlUtil = require ('url'),
5 task = require ('./base'),
6 io = require ('../io/easy'),
7 urlModel = require ('../model/from-url');
8
9var deliveryTask = module.exports = function (config) {
10
11 this.init (config);
12
13};
14
15util.inherits (deliveryTask, task);
16
17util.extend (deliveryTask.prototype, {
18
19 run: function () {
20
21 var self = this;
22
23 self.activityCheck ('delivery.task run');
24
25 this.originalFileName = this.originUrl.substr (this.originUrl.lastIndexOf ('/') + 1);
26 if (!this.originalFileName) {this.originalFileName = this.srcName;}
27
28 // create model
29
30 if (!self.model) {
31
32 try {
33 self.model = new urlModel (self.url);
34 self.url = self.model.url;
35 self.model.url.protocol.length;
36 } catch (e) {
37 self.emitError(e);
38 return;
39 }
40
41 self.model.timestamp = self.timestamp;
42
43 self.model.on ('data', function (chunk) {
44 self.activityCheck ('ftp.store data' + chunk.length);
45 });
46
47 self.model.on ('error', function (e) {
48 self.emitError(e);
49 });
50
51 self.model.on ('end', function () {
52 self.clearOperationTimeout();
53 self.emit ('log', 'timestamp is: '+self.timestamp);
54 self.completed ();
55 });
56 }
57
58 self.cacheFile = new io (self.cacheFileName);
59
60 self.cacheFile.readStream ({}, function (readStream, stats) {
61
62 if (!readStream) {
63 self.clearOperationTimeout();
64 self.emitError('readStream is undefined');
65 return;
66 }
67
68 self.activityCheck ('ftp.store start');
69 self.model.store ({
70 from: readStream,
71 originalFileName: self.originalFileName,
72 size: stats.size
73 });
74
75 });
76 },
77
78 emitError: function (e) {
79 if (e) {
80 this.state = 5;
81 if (this.model) {
82 this.model.stop ();
83 }
84 this.emit('error', e);
85 this.cancel();
86 return true;
87 } else {
88 return false;
89 }
90 }
91});