Skip to content

Commit

Permalink
Cleanup filtering functions
Browse files Browse the repository at this point in the history
  • Loading branch information
jbmusso committed Apr 16, 2016
1 parent cdefe09 commit ad0fb94
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions src/GremlinClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ import * as Utils from './utils';
import Rx from 'rx';


const hasCode = (filterCode) => ({ status: { code } }) => code === filterCode;

const isErrorMessage = ({ status: { code }}) => [200, 204, 206].indexOf(code) === -1;

class GremlinClient extends EventEmitter {
constructor(port = 8182, host = 'localhost', options = {}) {
super();
Expand Down Expand Up @@ -293,13 +297,11 @@ class GremlinClient extends EventEmitter {
.filter(({ requestId }) => requestId === command.message.requestId);

const successMessage$ = commandMessages$
.filter(({ status: { code } }) => code === 200);

.filter(hasCode(200))
const continuationMessages$ = commandMessages$
.filter(({ status: { code } }) => code === 206);

.filter(hasCode(206))
const noContentMessage$ = commandMessages$
.filter(({ status: { code }}) => code === 204)
.filter(hasCode(204))
// Rewrite these in order to ensure the callback is always fired with an
// Empty Array rather than a null value.
// Mutating is perfectly fine here.
Expand All @@ -313,10 +315,10 @@ class GremlinClient extends EventEmitter {
);

const errorMessages$ = commandMessages$
.filter(({ status: { code }}) => [200, 204, 206].indexOf(code) === -1)
.flatMap(({ status: { code, message } }) => {
return Rx.Observable.throw(new Error(message + ' (Error '+ code +')'))
});
.filter(isErrorMessage)
.flatMap(({ status: { code, message } }) =>
Rx.Observable.throw(new Error(message + ' (Error '+ code +')'))
);

const results$ = Rx.Observable.merge(
successMessage$,
Expand Down

0 comments on commit ad0fb94

Please sign in to comment.