add getMarketPrices call and tests

This commit is contained in:
premek 2021-11-19 23:29:44 +01:00 committed by woodser
parent d33c3227e0
commit ee9cbda667
6 changed files with 650 additions and 18 deletions

View File

@ -238,6 +238,8 @@ message GetCryptoCurrencyPaymentMethodsReply {
service Price {
rpc GetMarketPrice (MarketPriceRequest) returns (MarketPriceReply) {
}
rpc GetMarketPrices (MarketPricesRequest) returns (MarketPricesReply) {
}
}
message MarketPriceRequest {
@ -248,6 +250,18 @@ message MarketPriceReply {
double price = 1;
}
message MarketPricesRequest {
}
message MarketPricesReply {
repeated MarketPriceInfo market_price = 1;
}
message MarketPriceInfo {
string currency_code = 1;
double price = 2;
}
///////////////////////////////////////////////////////////////////////////////////////////
// GetTradeStatistics
///////////////////////////////////////////////////////////////////////////////////////////

View File

@ -2,7 +2,7 @@
// import haveno types
import {HavenoDaemon} from "./HavenoDaemon";
import {XmrBalanceInfo, OfferInfo, TradeInfo} from './protobuf/grpc_pb'; // TODO (woodser): better names; haveno_grpc_pb, haveno_pb
import {XmrBalanceInfo, OfferInfo, TradeInfo, MarketPriceInfo} from './protobuf/grpc_pb'; // TODO (woodser): better names; haveno_grpc_pb, haveno_pb
import {PaymentAccount, Offer} from './protobuf/pb_pb';
// import monero-javascript
@ -51,11 +51,11 @@ const WALLET_SYNC_PERIOD = 5000;
const MAX_TIME_PEER_NOTICE = 3000;
const TEST_CRYPTO_ACCOUNTS = [ // TODO (woodser): test other cryptos, fiat
{
currencyCode: "eth",
currencyCode: "ETH",
address: "0xdBdAb835Acd6fC84cF5F9aDD3c0B5a1E25fbd99f"
},
{
currencyCode: "btc",
currencyCode: "BTC",
address: "bcrt1q6j90vywv8x7eyevcnn2tn2wrlg3vsjlsvt46qz"
}
];
@ -88,18 +88,35 @@ test("Can get the version", async () => {
test("Can get market prices", async () => {
// test crypto prices
for (let testAccount of TEST_CRYPTO_ACCOUNTS) {
let price = await alice.getPrice(testAccount.currencyCode);
console.log(testAccount.currencyCode + " price: " + price);
expect(price).toBeGreaterThan(0);
await GenUtils.waitFor(1000); // wait before next request // TODO (woodser): disable price throttle?
// get all market prices
let prices: MarketPriceInfo[] = await alice.getPrices();
expect(prices.length).toBeGreaterThan(1);
for (let price of prices) {
expect(price.getCurrencyCode().length).toBeGreaterThan(0);
expect(price.getPrice()).toBeGreaterThanOrEqual(0);
}
// test fiat price
let price = await alice.getPrice("USD");
console.log("usd price: " + price);
// get market prices of specific currencies
for (let testAccount of TEST_CRYPTO_ACCOUNTS) {
let price = await alice.getPrice(testAccount.currencyCode);
expect(price).toBeGreaterThan(0);
}
// test that prices are reasonable
let usd = await alice.getPrice("USD");
expect(usd).toBeGreaterThan(50);
expect(usd).toBeLessThan(5000);
let doge = await alice.getPrice("DOGE");
expect(doge).toBeGreaterThan(200)
expect(doge).toBeLessThan(20000);
let btc = await alice.getPrice("BTC");
expect(btc).toBeGreaterThan(0.0004)
expect(btc).toBeLessThan(0.4);
// test invalid currency
await expect(async () => {await alice.getPrice("INVALID_CURRENCY")})
.rejects
.toThrow('Currency not found: INVALID_CURRENCY');
});
test("Can get balances", async () => {

View File

@ -1,6 +1,6 @@
import * as grpcWeb from 'grpc-web';
import {GetVersionClient, PriceClient, WalletsClient, OffersClient, PaymentAccountsClient, TradesClient} from './protobuf/GrpcServiceClientPb';
import {GetVersionRequest, GetVersionReply, MarketPriceRequest, MarketPriceReply, GetBalancesRequest, GetBalancesReply, XmrBalanceInfo, GetOffersRequest, GetOffersReply, OfferInfo, GetPaymentAccountsRequest, GetPaymentAccountsReply, CreateCryptoCurrencyPaymentAccountRequest, CreateCryptoCurrencyPaymentAccountReply, CreateOfferRequest, CreateOfferReply, CancelOfferRequest, TakeOfferRequest, TakeOfferReply, TradeInfo, GetTradeRequest, GetTradeReply, GetNewDepositSubaddressRequest, GetNewDepositSubaddressReply, ConfirmPaymentStartedRequest, ConfirmPaymentReceivedRequest} from './protobuf/grpc_pb';
import {GetVersionRequest, GetVersionReply, MarketPriceRequest, MarketPriceReply, MarketPricesRequest, MarketPricesReply, MarketPriceInfo, GetBalancesRequest, GetBalancesReply, XmrBalanceInfo, GetOffersRequest, GetOffersReply, OfferInfo, GetPaymentAccountsRequest, GetPaymentAccountsReply, CreateCryptoCurrencyPaymentAccountRequest, CreateCryptoCurrencyPaymentAccountReply, CreateOfferRequest, CreateOfferReply, CancelOfferRequest, TakeOfferRequest, TakeOfferReply, TradeInfo, GetTradeRequest, GetTradeReply, GetNewDepositSubaddressRequest, GetNewDepositSubaddressReply, ConfirmPaymentStartedRequest, ConfirmPaymentReceivedRequest} from './protobuf/grpc_pb';
import {PaymentAccount, AvailabilityResult} from './protobuf/pb_pb';
/**
@ -51,10 +51,10 @@ class HavenoDaemon {
}
/**
* Get the current market price of the given currency code as a ratio, e.g. ETH/XMR.
* Get the current market price per 1 XMR in the given currency.
*
* @param {string} currencyCode - currency code to get the price of
* @return {number} the current market price of the given currency code as a ratio, e.g. XMR/ETH
* @param {string} currencyCode - currency code (fiat or crypto) to get the price of
* @return {number} the current market price per 1 XMR in the given currency
*/
async getPrice(currencyCode: string): Promise<number> {
let that = this;
@ -66,6 +66,21 @@ class HavenoDaemon {
});
}
/**
* Get the current market prices of all the currencies.
*
* @return {MarketPrice[]} price per 1 XMR in all supported currencies (fiat & crypto)
*/
async getPrices(): Promise<MarketPriceInfo[]> {
let that = this;
return new Promise(function(resolve, reject) {
that._priceClient.getMarketPrices(new MarketPricesRequest(), {password: that._password}, function(err: grpcWeb.RpcError, response: MarketPricesReply) {
if (err) reject(err);
else resolve(response.getMarketPriceList());
});
});
}
/**
* Get the user's balances.
*

View File

@ -764,6 +764,49 @@ export class PriceClient {
this.methodInfoGetMarketPrice);
}
methodInfoGetMarketPrices = new grpcWeb.MethodDescriptor(
'/io.bisq.protobuffer.Price/GetMarketPrices',
grpcWeb.MethodType.UNARY,
grpc_pb.MarketPricesRequest,
grpc_pb.MarketPricesReply,
(request: grpc_pb.MarketPricesRequest) => {
return request.serializeBinary();
},
grpc_pb.MarketPricesReply.deserializeBinary
);
getMarketPrices(
request: grpc_pb.MarketPricesRequest,
metadata: grpcWeb.Metadata | null): Promise<grpc_pb.MarketPricesReply>;
getMarketPrices(
request: grpc_pb.MarketPricesRequest,
metadata: grpcWeb.Metadata | null,
callback: (err: grpcWeb.RpcError,
response: grpc_pb.MarketPricesReply) => void): grpcWeb.ClientReadableStream<grpc_pb.MarketPricesReply>;
getMarketPrices(
request: grpc_pb.MarketPricesRequest,
metadata: grpcWeb.Metadata | null,
callback?: (err: grpcWeb.RpcError,
response: grpc_pb.MarketPricesReply) => void) {
if (callback !== undefined) {
return this.client_.rpcCall(
this.hostname_ +
'/io.bisq.protobuffer.Price/GetMarketPrices',
request,
metadata || {},
this.methodInfoGetMarketPrices,
callback);
}
return this.client_.unaryCall(
this.hostname_ +
'/io.bisq.protobuffer.Price/GetMarketPrices',
request,
metadata || {},
this.methodInfoGetMarketPrices);
}
}
export class GetTradeStatisticsClient {

View File

@ -727,6 +727,62 @@ export namespace MarketPriceReply {
}
}
export class MarketPricesRequest extends jspb.Message {
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): MarketPricesRequest.AsObject;
static toObject(includeInstance: boolean, msg: MarketPricesRequest): MarketPricesRequest.AsObject;
static serializeBinaryToWriter(message: MarketPricesRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): MarketPricesRequest;
static deserializeBinaryFromReader(message: MarketPricesRequest, reader: jspb.BinaryReader): MarketPricesRequest;
}
export namespace MarketPricesRequest {
export type AsObject = {
}
}
export class MarketPricesReply extends jspb.Message {
getMarketPriceList(): Array<MarketPriceInfo>;
setMarketPriceList(value: Array<MarketPriceInfo>): MarketPricesReply;
clearMarketPriceList(): MarketPricesReply;
addMarketPrice(value?: MarketPriceInfo, index?: number): MarketPriceInfo;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): MarketPricesReply.AsObject;
static toObject(includeInstance: boolean, msg: MarketPricesReply): MarketPricesReply.AsObject;
static serializeBinaryToWriter(message: MarketPricesReply, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): MarketPricesReply;
static deserializeBinaryFromReader(message: MarketPricesReply, reader: jspb.BinaryReader): MarketPricesReply;
}
export namespace MarketPricesReply {
export type AsObject = {
marketPriceList: Array<MarketPriceInfo.AsObject>,
}
}
export class MarketPriceInfo extends jspb.Message {
getCurrencyCode(): string;
setCurrencyCode(value: string): MarketPriceInfo;
getPrice(): number;
setPrice(value: number): MarketPriceInfo;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): MarketPriceInfo.AsObject;
static toObject(includeInstance: boolean, msg: MarketPriceInfo): MarketPriceInfo.AsObject;
static serializeBinaryToWriter(message: MarketPriceInfo, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): MarketPriceInfo;
static deserializeBinaryFromReader(message: MarketPriceInfo, reader: jspb.BinaryReader): MarketPriceInfo;
}
export namespace MarketPriceInfo {
export type AsObject = {
currencyCode: string,
price: number,
}
}
export class GetTradeStatisticsRequest extends jspb.Message {
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): GetTradeStatisticsRequest.AsObject;

View File

@ -74,8 +74,11 @@ goog.exportSymbol('proto.io.bisq.protobuffer.KeepFundsReply', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.KeepFundsRequest', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.LockWalletReply', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.LockWalletRequest', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.MarketPriceInfo', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.MarketPriceReply', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.MarketPriceRequest', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.MarketPricesReply', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.MarketPricesRequest', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.OfferInfo', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.PaymentAccountPayloadInfo', null, global);
goog.exportSymbol('proto.io.bisq.protobuffer.RegisterDisputeAgentReply', null, global);
@ -774,6 +777,69 @@ if (goog.DEBUG && !COMPILED) {
*/
proto.io.bisq.protobuffer.MarketPriceReply.displayName = 'proto.io.bisq.protobuffer.MarketPriceReply';
}
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.io.bisq.protobuffer.MarketPricesRequest = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.io.bisq.protobuffer.MarketPricesRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
/**
* @public
* @override
*/
proto.io.bisq.protobuffer.MarketPricesRequest.displayName = 'proto.io.bisq.protobuffer.MarketPricesRequest';
}
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.io.bisq.protobuffer.MarketPricesReply = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, proto.io.bisq.protobuffer.MarketPricesReply.repeatedFields_, null);
};
goog.inherits(proto.io.bisq.protobuffer.MarketPricesReply, jspb.Message);
if (goog.DEBUG && !COMPILED) {
/**
* @public
* @override
*/
proto.io.bisq.protobuffer.MarketPricesReply.displayName = 'proto.io.bisq.protobuffer.MarketPricesReply';
}
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
* server response, or constructed directly in Javascript. The array is used
* in place and becomes part of the constructed object. It is not cloned.
* If no data is provided, the constructed object will be empty, but still
* valid.
* @extends {jspb.Message}
* @constructor
*/
proto.io.bisq.protobuffer.MarketPriceInfo = function(opt_data) {
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.io.bisq.protobuffer.MarketPriceInfo, jspb.Message);
if (goog.DEBUG && !COMPILED) {
/**
* @public
* @override
*/
proto.io.bisq.protobuffer.MarketPriceInfo.displayName = 'proto.io.bisq.protobuffer.MarketPriceInfo';
}
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
@ -7270,6 +7336,427 @@ proto.io.bisq.protobuffer.MarketPriceReply.prototype.setPrice = function(value)
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
* JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @return {!Object}
*/
proto.io.bisq.protobuffer.MarketPricesRequest.prototype.toObject = function(opt_includeInstance) {
return proto.io.bisq.protobuffer.MarketPricesRequest.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
* the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.io.bisq.protobuffer.MarketPricesRequest} msg The msg instance to transform.
* @return {!Object}
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPricesRequest.toObject = function(includeInstance, msg) {
var f, obj = {
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.io.bisq.protobuffer.MarketPricesRequest}
*/
proto.io.bisq.protobuffer.MarketPricesRequest.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.io.bisq.protobuffer.MarketPricesRequest;
return proto.io.bisq.protobuffer.MarketPricesRequest.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.io.bisq.protobuffer.MarketPricesRequest} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.io.bisq.protobuffer.MarketPricesRequest}
*/
proto.io.bisq.protobuffer.MarketPricesRequest.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.io.bisq.protobuffer.MarketPricesRequest.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
proto.io.bisq.protobuffer.MarketPricesRequest.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
* Serializes the given message to binary data (in protobuf wire
* format), writing to the given BinaryWriter.
* @param {!proto.io.bisq.protobuffer.MarketPricesRequest} message
* @param {!jspb.BinaryWriter} writer
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPricesRequest.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
};
/**
* List of repeated fields within this message type.
* @private {!Array<number>}
* @const
*/
proto.io.bisq.protobuffer.MarketPricesReply.repeatedFields_ = [1];
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
* JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @return {!Object}
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.toObject = function(opt_includeInstance) {
return proto.io.bisq.protobuffer.MarketPricesReply.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
* the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.io.bisq.protobuffer.MarketPricesReply} msg The msg instance to transform.
* @return {!Object}
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPricesReply.toObject = function(includeInstance, msg) {
var f, obj = {
marketPriceList: jspb.Message.toObjectList(msg.getMarketPriceList(),
proto.io.bisq.protobuffer.MarketPriceInfo.toObject, includeInstance)
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.io.bisq.protobuffer.MarketPricesReply}
*/
proto.io.bisq.protobuffer.MarketPricesReply.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.io.bisq.protobuffer.MarketPricesReply;
return proto.io.bisq.protobuffer.MarketPricesReply.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.io.bisq.protobuffer.MarketPricesReply} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.io.bisq.protobuffer.MarketPricesReply}
*/
proto.io.bisq.protobuffer.MarketPricesReply.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = new proto.io.bisq.protobuffer.MarketPriceInfo;
reader.readMessage(value,proto.io.bisq.protobuffer.MarketPriceInfo.deserializeBinaryFromReader);
msg.addMarketPrice(value);
break;
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
proto.io.bisq.protobuffer.MarketPricesReply.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
* Serializes the given message to binary data (in protobuf wire
* format), writing to the given BinaryWriter.
* @param {!proto.io.bisq.protobuffer.MarketPricesReply} message
* @param {!jspb.BinaryWriter} writer
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPricesReply.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
f = message.getMarketPriceList();
if (f.length > 0) {
writer.writeRepeatedMessage(
1,
f,
proto.io.bisq.protobuffer.MarketPriceInfo.serializeBinaryToWriter
);
}
};
/**
* repeated MarketPriceInfo market_price = 1;
* @return {!Array<!proto.io.bisq.protobuffer.MarketPriceInfo>}
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.getMarketPriceList = function() {
return /** @type{!Array<!proto.io.bisq.protobuffer.MarketPriceInfo>} */ (
jspb.Message.getRepeatedWrapperField(this, proto.io.bisq.protobuffer.MarketPriceInfo, 1));
};
/**
* @param {!Array<!proto.io.bisq.protobuffer.MarketPriceInfo>} value
* @return {!proto.io.bisq.protobuffer.MarketPricesReply} returns this
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.setMarketPriceList = function(value) {
return jspb.Message.setRepeatedWrapperField(this, 1, value);
};
/**
* @param {!proto.io.bisq.protobuffer.MarketPriceInfo=} opt_value
* @param {number=} opt_index
* @return {!proto.io.bisq.protobuffer.MarketPriceInfo}
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.addMarketPrice = function(opt_value, opt_index) {
return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.io.bisq.protobuffer.MarketPriceInfo, opt_index);
};
/**
* Clears the list making it empty but non-null.
* @return {!proto.io.bisq.protobuffer.MarketPricesReply} returns this
*/
proto.io.bisq.protobuffer.MarketPricesReply.prototype.clearMarketPriceList = function() {
return this.setMarketPriceList([]);
};
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
* Field names that are reserved in JavaScript and will be renamed to pb_name.
* Optional fields that are not set will be set to undefined.
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
* For the list of reserved names please see:
* net/proto2/compiler/js/internal/generator.cc#kKeyword.
* @param {boolean=} opt_includeInstance Deprecated. whether to include the
* JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @return {!Object}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.toObject = function(opt_includeInstance) {
return proto.io.bisq.protobuffer.MarketPriceInfo.toObject(opt_includeInstance, this);
};
/**
* Static version of the {@see toObject} method.
* @param {boolean|undefined} includeInstance Deprecated. Whether to include
* the JSPB instance for transitional soy proto support:
* http://goto/soy-param-migration
* @param {!proto.io.bisq.protobuffer.MarketPriceInfo} msg The msg instance to transform.
* @return {!Object}
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPriceInfo.toObject = function(includeInstance, msg) {
var f, obj = {
currencyCode: jspb.Message.getFieldWithDefault(msg, 1, ""),
price: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0)
};
if (includeInstance) {
obj.$jspbMessageInstance = msg;
}
return obj;
};
}
/**
* Deserializes binary data (in protobuf wire format).
* @param {jspb.ByteSource} bytes The bytes to deserialize.
* @return {!proto.io.bisq.protobuffer.MarketPriceInfo}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.deserializeBinary = function(bytes) {
var reader = new jspb.BinaryReader(bytes);
var msg = new proto.io.bisq.protobuffer.MarketPriceInfo;
return proto.io.bisq.protobuffer.MarketPriceInfo.deserializeBinaryFromReader(msg, reader);
};
/**
* Deserializes binary data (in protobuf wire format) from the
* given reader into the given message object.
* @param {!proto.io.bisq.protobuffer.MarketPriceInfo} msg The message object to deserialize into.
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
* @return {!proto.io.bisq.protobuffer.MarketPriceInfo}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.deserializeBinaryFromReader = function(msg, reader) {
while (reader.nextField()) {
if (reader.isEndGroup()) {
break;
}
var field = reader.getFieldNumber();
switch (field) {
case 1:
var value = /** @type {string} */ (reader.readString());
msg.setCurrencyCode(value);
break;
case 2:
var value = /** @type {number} */ (reader.readDouble());
msg.setPrice(value);
break;
default:
reader.skipField();
break;
}
}
return msg;
};
/**
* Serializes the message to binary data (in protobuf wire format).
* @return {!Uint8Array}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.serializeBinary = function() {
var writer = new jspb.BinaryWriter();
proto.io.bisq.protobuffer.MarketPriceInfo.serializeBinaryToWriter(this, writer);
return writer.getResultBuffer();
};
/**
* Serializes the given message to binary data (in protobuf wire
* format), writing to the given BinaryWriter.
* @param {!proto.io.bisq.protobuffer.MarketPriceInfo} message
* @param {!jspb.BinaryWriter} writer
* @suppress {unusedLocalVariables} f is only used for nested messages
*/
proto.io.bisq.protobuffer.MarketPriceInfo.serializeBinaryToWriter = function(message, writer) {
var f = undefined;
f = message.getCurrencyCode();
if (f.length > 0) {
writer.writeString(
1,
f
);
}
f = message.getPrice();
if (f !== 0.0) {
writer.writeDouble(
2,
f
);
}
};
/**
* optional string currency_code = 1;
* @return {string}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.getCurrencyCode = function() {
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};
/**
* @param {string} value
* @return {!proto.io.bisq.protobuffer.MarketPriceInfo} returns this
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.setCurrencyCode = function(value) {
return jspb.Message.setProto3StringField(this, 1, value);
};
/**
* optional double price = 2;
* @return {number}
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.getPrice = function() {
return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0));
};
/**
* @param {number} value
* @return {!proto.io.bisq.protobuffer.MarketPriceInfo} returns this
*/
proto.io.bisq.protobuffer.MarketPriceInfo.prototype.setPrice = function(value) {
return jspb.Message.setProto3FloatField(this, 2, value);
};
if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.