@injectivelabs/exchange-api
Version:
Injective Exchange API client with generated gRPC bindings.
150 lines (137 loc) • 4.15 kB
JavaScript
// package: injective_oracle_rpc
// file: injective_oracle_rpc.proto
var injective_oracle_rpc_pb = require("./injective_oracle_rpc_pb");
var grpc = require("@improbable-eng/grpc-web").grpc;
var InjectiveOracleRPC = (function () {
function InjectiveOracleRPC() {}
InjectiveOracleRPC.serviceName = "injective_oracle_rpc.InjectiveOracleRPC";
return InjectiveOracleRPC;
}());
InjectiveOracleRPC.OracleList = {
methodName: "OracleList",
service: InjectiveOracleRPC,
requestStream: false,
responseStream: false,
requestType: injective_oracle_rpc_pb.OracleListRequest,
responseType: injective_oracle_rpc_pb.OracleListResponse
};
InjectiveOracleRPC.Price = {
methodName: "Price",
service: InjectiveOracleRPC,
requestStream: false,
responseStream: false,
requestType: injective_oracle_rpc_pb.PriceRequest,
responseType: injective_oracle_rpc_pb.PriceResponse
};
InjectiveOracleRPC.StreamPrices = {
methodName: "StreamPrices",
service: InjectiveOracleRPC,
requestStream: false,
responseStream: true,
requestType: injective_oracle_rpc_pb.StreamPricesRequest,
responseType: injective_oracle_rpc_pb.StreamPricesResponse
};
exports.InjectiveOracleRPC = InjectiveOracleRPC;
function InjectiveOracleRPCClient(serviceHost, options) {
this.serviceHost = serviceHost;
this.options = options || {};
}
InjectiveOracleRPCClient.prototype.oracleList = function oracleList(requestMessage, metadata, callback) {
if (arguments.length === 2) {
callback = arguments[1];
}
var client = grpc.unary(InjectiveOracleRPC.OracleList, {
request: requestMessage,
host: this.serviceHost,
metadata: metadata,
transport: this.options.transport,
debug: this.options.debug,
onEnd: function (response) {
if (callback) {
if (response.status !== grpc.Code.OK) {
var err = new Error(response.statusMessage);
err.code = response.status;
err.metadata = response.trailers;
callback(err, null);
} else {
callback(null, response.message);
}
}
}
});
return {
cancel: function () {
callback = null;
client.close();
}
};
};
InjectiveOracleRPCClient.prototype.price = function price(requestMessage, metadata, callback) {
if (arguments.length === 2) {
callback = arguments[1];
}
var client = grpc.unary(InjectiveOracleRPC.Price, {
request: requestMessage,
host: this.serviceHost,
metadata: metadata,
transport: this.options.transport,
debug: this.options.debug,
onEnd: function (response) {
if (callback) {
if (response.status !== grpc.Code.OK) {
var err = new Error(response.statusMessage);
err.code = response.status;
err.metadata = response.trailers;
callback(err, null);
} else {
callback(null, response.message);
}
}
}
});
return {
cancel: function () {
callback = null;
client.close();
}
};
};
InjectiveOracleRPCClient.prototype.streamPrices = function streamPrices(requestMessage, metadata) {
var listeners = {
data: [],
end: [],
status: []
};
var client = grpc.invoke(InjectiveOracleRPC.StreamPrices, {
request: requestMessage,
host: this.serviceHost,
metadata: metadata,
transport: this.options.transport,
debug: this.options.debug,
onMessage: function (responseMessage) {
listeners.data.forEach(function (handler) {
handler(responseMessage);
});
},
onEnd: function (status, statusMessage, trailers) {
listeners.status.forEach(function (handler) {
handler({ code: status, details: statusMessage, metadata: trailers });
});
listeners.end.forEach(function (handler) {
handler({ code: status, details: statusMessage, metadata: trailers });
});
listeners = null;
}
});
return {
on: function (type, handler) {
listeners[type].push(handler);
return this;
},
cancel: function () {
listeners = null;
client.close();
}
};
};
exports.InjectiveOracleRPCClient = InjectiveOracleRPCClient;