Browse Source

additional fields for ftp

221V 3 years ago
parent
commit
27dd0ab2a9
4 changed files with 17 additions and 4 deletions
  1. 1 1
      include/wf.hrl
  2. 11 1
      priv/ftp.js
  3. 4 1
      priv/n2o.js
  4. 1 1
      src/formatters/wf_convert.erl

+ 1 - 1
include/wf.hrl

@@ -36,7 +36,7 @@
 
 % File Transfer Protocol
 
--record(ftp,     { id, sid, filename, meta, size, offset, block, data, status }).
+-record(ftp,     { id, sid, filename, meta, other1 = <<"">>, other2 = <<"">>, other3 = <<"">>, size, offset, block, data, status }).
 
 % HTTP
 

+ 11 - 1
priv/ftp.js

@@ -8,10 +8,14 @@ var ftp = {
         var item = {
             id:        performance.now().toString(),
             status:    'init',
+            status_block_id: ftp.status_block_id || 'ftp_status',
             autostart: ftp.autostart || false,
             name:      ftp.filename || file.name,
             sid:       ftp.sid || co(session),
             meta:      ftp.meta || bin(''),
+            other1:    ftp.other1 || bin(''),
+            other2:    ftp.other2 || bin(''),
+            other3:    ftp.other3 || bin(''),
             offset:    ftp.offset || 0,
             block:     1,
             total:     file.size,
@@ -34,11 +38,16 @@ var ftp = {
         ftp.start();
     },
     send:  function(item, data) {
+        //console.log('item ', item);
+        //console.log('data ', data);
         ws.send(enc(tuple(atom('ftp'),
             bin(item.id),
             bin(item.sid),
             bin(item.name),
             item.meta,
+            item.other1,
+            item.other2,
+            item.other3,
             number(item.total),
             number(item.offset),
             number(item.block || data.byteLength),
@@ -57,6 +66,7 @@ var ftp = {
 };
 
 $file.do = function(rsp) {
+    //console.log('rsp ', rsp);
     var offset = rsp.v[6].v, block = rsp.v[7].v, status = utf8_dec(rsp.v[9].v);
     switch (status) {
         case 'init':
@@ -68,8 +78,8 @@ $file.do = function(rsp) {
             if(item.autostart) ftp.start(item.id);
             break;
         case 'send':
-            var x = qi('ftp_status'); if(x) x.innerHTML = offset;
             var item = ftp.item(utf8_dec(rsp.v[1].v));
+            var x = qi(item.status_block_id); if(x) x.innerHTML = offset;
             item.offset = offset;
             item.block = block;
             (block > 0 && ftp.active) ? ftp.send_slice(item) : ftp.stop(item.id)

+ 4 - 1
priv/n2o.js

@@ -30,7 +30,10 @@ var $io = {}; $io.on = function onio(r, cb) { if (is(r,3,'io')) {
     eval(utf8_dec(r.v[1].v)); if (typeof cb == 'function') cb(r); return { status: "ok" };
   } catch (e) { console.log(e); return { status: '' }; } } else return { status: '' }; }
 
-var $file = {}; $file.on = function onfile(r, cb) { if (is(r,10,'ftp')) {
+var $file = {}; $file.on = function onfile(r, cb) {
+    //console.log('r ', r);
+    //console.log('is ', is(r,13,'ftp'));
+    if (is(r,13,'ftp')) {
     if (typeof cb == 'function') cb(r); return { status: "ok" }; } else return { status: ''}; }
 
 var $bin = {}; $bin.on = function onbin(r, cb) { if (is(r,2,'bin')) {

+ 1 - 1
src/formatters/wf_convert.erl

@@ -165,7 +165,7 @@ format({bin,Data},    bert) -> wf:info(?MODULE,"BERT {bin,_}: ~tp~n",[Data]),
                                {binary,term_to_binary({bin,Data})};
 format({Atom,Data},   bert) -> wf:info(?MODULE,"BERT {~p,_}: ~tp~n",[Atom,bin(Data)]),
                                {binary,term_to_binary({Atom,bin(Data)})};
-format(#ftp{}=FTP,    bert) -> wf:info(?MODULE,"BERT {ftp,_,_,_,_,_,_,_,_,_,_,_,_}: ~tp~n",[FTP#ftp{data= <<>>}]),
+format(#ftp{}=FTP,    bert) -> wf:info(?MODULE,"BERT {ftp,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_}: ~tp~n",[FTP#ftp{data= <<>>}]),
                                {binary,term_to_binary(FTP)};
 format(Term,          bert) -> {binary,term_to_binary(Term)};