From a584d0a7e3536c962f08300526f6436a22d363a4 Mon Sep 17 00:00:00 2001
From: yamadapc <tacla.yamada@gmail.com>
Date: Sun, 18 Jun 2017 11:50:56 -0300
Subject: [PATCH] Split transports into different files

---
 src/api/transports/base.js                  | 33 ++++++++
 src/api/transports/http.js                  | 33 ++++++++
 src/api/transports/index.js                 |  7 ++
 src/api/{transports.js => transports/ws.js} | 85 +++------------------
 4 files changed, 83 insertions(+), 75 deletions(-)
 create mode 100644 src/api/transports/base.js
 create mode 100644 src/api/transports/http.js
 create mode 100644 src/api/transports/index.js
 rename src/api/{transports.js => transports/ws.js} (75%)

diff --git a/src/api/transports/base.js b/src/api/transports/base.js
new file mode 100644
index 0000000..db881a2
--- /dev/null
+++ b/src/api/transports/base.js
@@ -0,0 +1,33 @@
+import Promise from 'bluebird';
+import EventEmitter from 'events';
+import each from 'lodash/each';
+
+export default class Transport extends EventEmitter {
+  constructor(options = {}) {
+    super(options);
+    this.options = options;
+    this.id = 0;
+  }
+
+  setOptions(options) {
+    each(options, (value, key) => this.options.set(key, value));
+    this.stop();
+  }
+
+  listenTo(target, eventName, callback) {
+    if (target.addEventListener) target.addEventListener(eventName, callback);
+    else target.on(eventName, callback);
+
+    return () => {
+      if (target.removeEventListener)
+        target.removeEventListener(eventName, callback);
+      else target.removeListener(eventName, callback);
+    };
+  }
+
+  send() {}
+  start() {}
+  stop() {}
+}
+
+Promise.promisifyAll(Transport.prototype);
diff --git a/src/api/transports/http.js b/src/api/transports/http.js
new file mode 100644
index 0000000..35f813c
--- /dev/null
+++ b/src/api/transports/http.js
@@ -0,0 +1,33 @@
+import fetch from 'isomorphic-fetch';
+import newDebug from 'debug';
+
+import Transport from './base';
+
+const debug = newDebug('steem:http');
+
+export default class HttpTransport extends Transport {
+  send(api, data, callback) {
+    debug('Steem::send', api, data);
+    const id = data.id || this.id++;
+    const payload = {
+      id,
+      method: 'call',
+      params: [api, data.method, data.params],
+    };
+    fetch(this.options.get('uri'), {
+      method: 'POST',
+      body: JSON.stringify(payload),
+    })
+      .then(res => {
+        return res.json();
+      })
+      .then(json => {
+        const err = json.error || '';
+        const result = json.result || '';
+        callback(err, result);
+      })
+      .catch(err => {
+        callback(err, '');
+      });
+  }
+}
diff --git a/src/api/transports/index.js b/src/api/transports/index.js
new file mode 100644
index 0000000..4c88c0c
--- /dev/null
+++ b/src/api/transports/index.js
@@ -0,0 +1,7 @@
+import HttpTransport from './http';
+import WsTransport from './ws';
+
+export default {
+  http: HttpTransport,
+  ws: WsTransport,
+};
diff --git a/src/api/transports.js b/src/api/transports/ws.js
similarity index 75%
rename from src/api/transports.js
rename to src/api/transports/ws.js
index 7c57b20..8589f00 100644
--- a/src/api/transports.js
+++ b/src/api/transports/ws.js
@@ -1,72 +1,9 @@
 import Promise from 'bluebird';
 import defaults from 'lodash/defaults';
-import {camelCase} from '../util';
-import fetch from 'isomorphic-fetch';
 import isNode from 'detect-node';
-import EventEmitter from 'events';
 import newDebug from 'debug';
-import each from 'lodash/each';
 
-const debugSetup = newDebug('steem:setup');
-const debugWs = newDebug('steem:ws');
-const expectedResponseMs = process.env.EXPECTED_RESPONSE_MS || 2000;
-
-class Transport extends EventEmitter {
-  constructor(options = {}) {
-    super(options);
-    this.options = options;
-    this.id = 0;
-  }
-
-  setOptions(options) {
-    each(options, (value, key) => this.options.set(key, value));
-    this.stop();
-  }
-
-  listenTo(target, eventName, callback) {
-    if (target.addEventListener) target.addEventListener(eventName, callback);
-    else target.on(eventName, callback);
-
-    return () => {
-      if (target.removeEventListener)
-        target.removeEventListener(eventName, callback);
-      else target.removeListener(eventName, callback);
-    };
-  }
-
-  send() {}
-  start() {}
-  stop() {}
-}
-
-Promise.promisifyAll(Transport.prototype);
-
-export class HttpTransport extends Transport {
-  send(api, data, callback) {
-    debugSetup('Steem::send', api, data);
-    const id = data.id || this.id++;
-    const payload = {
-      id,
-      method: 'call',
-      params: [api, data.method, data.params],
-    };
-    fetch(this.options.get('uri'), {
-      method: 'POST',
-      body: JSON.stringify(payload),
-    })
-      .then(res => {
-        return res.json();
-      })
-      .then(json => {
-        const err = json.error || '';
-        const result = json.result || '';
-        callback(err, result);
-      })
-      .catch(err => {
-        callback(err, '');
-      });
-  }
-}
+import Transport from './base';
 
 let WebSocket;
 if (isNode) {
@@ -77,6 +14,9 @@ if (isNode) {
   throw new Error("Couldn't decide on a `WebSocket` class");
 }
 
+const debug = newDebug('steem:ws');
+const expectedResponseMs = process.env.EXPECTED_RESPONSE_MS || 2000;
+
 const DEFAULTS = {
   apiIds: {
     database_api: 0,
@@ -115,14 +55,14 @@ export class WsTransport extends Transport {
       this.ws = new WebSocket(url);
 
       const releaseOpen = this.listenTo(this.ws, 'open', () => {
-        debugWs('Opened WS connection with', url);
+        debug('Opened WS connection with', url);
         this.isOpen = true;
         releaseOpen();
         resolve();
       });
 
       const releaseClose = this.listenTo(this.ws, 'close', () => {
-        debugWs('Closed WS connection with', url);
+        debug('Closed WS connection with', url);
         this.isOpen = false;
         delete this.ws;
         this.stop();
@@ -137,12 +77,12 @@ export class WsTransport extends Transport {
       });
 
       const releaseMessage = this.listenTo(this.ws, 'message', message => {
-        debugWs('Received message', message.data);
+        debug('Received message', message.data);
         const id = JSON.parse(message.data).id;
         const msToRespond = Date.now() - this.requestsTime[id];
         delete this.requestsTime[id];
         if (msToRespond > expectedResponseMs) {
-          debugWs(
+          debug(
             `Message received in ${msToRespond}ms, it's over the expected response time of ${expectedResponseMs}ms`,
             message.data,
           );
@@ -164,7 +104,7 @@ export class WsTransport extends Transport {
   }
 
   stop() {
-    debugSetup('Stopping...');
+    debug('Stopping...');
     if (this.ws) this.ws.close();
     this.apiIdsP = {};
     delete this.startP;
@@ -264,7 +204,7 @@ export class WsTransport extends Transport {
               resolve(message.result);
             });
 
-            debugWs('Sending message', payload);
+            debug('Sending message', payload);
             this.requestsTime[id] = Date.now();
 
             this.inFlight += 1;
@@ -276,8 +216,3 @@ export class WsTransport extends Transport {
     return this.currentP;
   }
 }
-
-export default {
-  http: HttpTransport,
-  ws: WsTransport,
-};
-- 
GitLab