frdrpc: add fiat estimate method

This commit is contained in:
carla 2020-04-28 20:59:07 +02:00
parent fdc4f498e2
commit d20545fe8a
No known key found for this signature in database
GPG key ID: 4CA7FE54A6213C91
6 changed files with 618 additions and 65 deletions

71
frdrpc/fiat_estimate.go Normal file
View file

@ -0,0 +1,71 @@
package frdrpc
import (
"fmt"
"time"
"github.com/lightninglabs/faraday/fiat"
"github.com/lightningnetwork/lnd/lnwire"
)
func parseFiatRequest(req *FiatEstimateRequest) (fiat.Granularity,
[]*fiat.PriceRequest, error) {
granularity := fiat.GranularityMinute
switch req.Granularity {
// If granularity is not set, allow it to default to one minute
case FiatEstimateRequest_UNKNOWN:
case FiatEstimateRequest_MINUTE:
granularity = fiat.GranularityMinute
case FiatEstimateRequest_FIVE_MINUTES:
granularity = fiat.Granularity5Minute
case FiatEstimateRequest_FIFTEEN_MINUTES:
granularity = fiat.Granularity15Minute
case FiatEstimateRequest_THIRTY_MINUTES:
granularity = fiat.Granularity30Minute
case FiatEstimateRequest_HOUR:
granularity = fiat.GranularityHour
case FiatEstimateRequest_SIX_HOURS:
granularity = fiat.Granularity6Hour
case FiatEstimateRequest_TWELVE_HOURS:
granularity = fiat.Granularity12Hour
case FiatEstimateRequest_DAY:
granularity = fiat.GranularityDay
default:
return granularity, nil, fmt.Errorf("unknown granularity: %v",
req.Granularity)
}
requests := make([]*fiat.PriceRequest, len(req.Requests))
for i, request := range req.Requests {
requests[i] = &fiat.PriceRequest{
Identifier: request.Id,
Value: lnwire.MilliSatoshi(request.AmountMsat),
Timestamp: time.Unix(request.Timestamp, 0),
}
}
return granularity, requests, nil
}
func fiatEstimateResponse(prices map[string]float64) *FiatEstimateResponse {
fiatVals := make(map[string]float32, len(prices))
for k, v := range prices {
fiatVals[k] = float32(v)
}
return &FiatEstimateResponse{
FiatValues: fiatVals,
}
}

View file

@ -60,6 +60,54 @@ func (CloseRecommendationRequest_Metric) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{0, 0}
}
// Granularity describes the aggregation level at which the Bitcoin price
// is provided.
type FiatEstimateRequest_Granularity int32
const (
FiatEstimateRequest_UNKNOWN FiatEstimateRequest_Granularity = 0
FiatEstimateRequest_MINUTE FiatEstimateRequest_Granularity = 1
FiatEstimateRequest_FIVE_MINUTES FiatEstimateRequest_Granularity = 2
FiatEstimateRequest_FIFTEEN_MINUTES FiatEstimateRequest_Granularity = 3
FiatEstimateRequest_THIRTY_MINUTES FiatEstimateRequest_Granularity = 4
FiatEstimateRequest_HOUR FiatEstimateRequest_Granularity = 5
FiatEstimateRequest_SIX_HOURS FiatEstimateRequest_Granularity = 6
FiatEstimateRequest_TWELVE_HOURS FiatEstimateRequest_Granularity = 7
FiatEstimateRequest_DAY FiatEstimateRequest_Granularity = 8
)
var FiatEstimateRequest_Granularity_name = map[int32]string{
0: "UNKNOWN",
1: "MINUTE",
2: "FIVE_MINUTES",
3: "FIFTEEN_MINUTES",
4: "THIRTY_MINUTES",
5: "HOUR",
6: "SIX_HOURS",
7: "TWELVE_HOURS",
8: "DAY",
}
var FiatEstimateRequest_Granularity_value = map[string]int32{
"UNKNOWN": 0,
"MINUTE": 1,
"FIVE_MINUTES": 2,
"FIFTEEN_MINUTES": 3,
"THIRTY_MINUTES": 4,
"HOUR": 5,
"SIX_HOURS": 6,
"TWELVE_HOURS": 7,
"DAY": 8,
}
func (x FiatEstimateRequest_Granularity) String() string {
return proto.EnumName(FiatEstimateRequest_Granularity_name, int32(x))
}
func (FiatEstimateRequest_Granularity) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{12, 0}
}
type CloseRecommendationRequest struct {
//
//The minimum amount of time in seconds that a channel should have been
@ -795,8 +843,184 @@ func (m *ChannelInsight) GetPrivate() bool {
return false
}
type FiatEstimateRequest struct {
Requests []*FiatEstimateRequest_PriceRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"`
Granularity FiatEstimateRequest_Granularity `protobuf:"varint,2,opt,name=granularity,proto3,enum=frdrpc.FiatEstimateRequest_Granularity" json:"granularity,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FiatEstimateRequest) Reset() { *m = FiatEstimateRequest{} }
func (m *FiatEstimateRequest) String() string { return proto.CompactTextString(m) }
func (*FiatEstimateRequest) ProtoMessage() {}
func (*FiatEstimateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{12}
}
func (m *FiatEstimateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FiatEstimateRequest.Unmarshal(m, b)
}
func (m *FiatEstimateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FiatEstimateRequest.Marshal(b, m, deterministic)
}
func (m *FiatEstimateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_FiatEstimateRequest.Merge(m, src)
}
func (m *FiatEstimateRequest) XXX_Size() int {
return xxx_messageInfo_FiatEstimateRequest.Size(m)
}
func (m *FiatEstimateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_FiatEstimateRequest.DiscardUnknown(m)
}
var xxx_messageInfo_FiatEstimateRequest proto.InternalMessageInfo
func (m *FiatEstimateRequest) GetRequests() []*FiatEstimateRequest_PriceRequest {
if m != nil {
return m.Requests
}
return nil
}
func (m *FiatEstimateRequest) GetGranularity() FiatEstimateRequest_Granularity {
if m != nil {
return m.Granularity
}
return FiatEstimateRequest_UNKNOWN
}
type FiatEstimateRequest_PriceRequest struct {
// id is a unique identifier for the request.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// The amount to be converted to fiat in millisatoshis.
AmountMsat uint64 `protobuf:"varint,2,opt,name=amount_msat,json=amountMsat,proto3" json:"amount_msat,omitempty"`
// The unix timestamp at which the price should be quoted.
Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FiatEstimateRequest_PriceRequest) Reset() { *m = FiatEstimateRequest_PriceRequest{} }
func (m *FiatEstimateRequest_PriceRequest) String() string { return proto.CompactTextString(m) }
func (*FiatEstimateRequest_PriceRequest) ProtoMessage() {}
func (*FiatEstimateRequest_PriceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{12, 0}
}
func (m *FiatEstimateRequest_PriceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FiatEstimateRequest_PriceRequest.Unmarshal(m, b)
}
func (m *FiatEstimateRequest_PriceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FiatEstimateRequest_PriceRequest.Marshal(b, m, deterministic)
}
func (m *FiatEstimateRequest_PriceRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_FiatEstimateRequest_PriceRequest.Merge(m, src)
}
func (m *FiatEstimateRequest_PriceRequest) XXX_Size() int {
return xxx_messageInfo_FiatEstimateRequest_PriceRequest.Size(m)
}
func (m *FiatEstimateRequest_PriceRequest) XXX_DiscardUnknown() {
xxx_messageInfo_FiatEstimateRequest_PriceRequest.DiscardUnknown(m)
}
var xxx_messageInfo_FiatEstimateRequest_PriceRequest proto.InternalMessageInfo
func (m *FiatEstimateRequest_PriceRequest) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *FiatEstimateRequest_PriceRequest) GetAmountMsat() uint64 {
if m != nil {
return m.AmountMsat
}
return 0
}
func (m *FiatEstimateRequest_PriceRequest) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
type PriceResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PriceResponse) Reset() { *m = PriceResponse{} }
func (m *PriceResponse) String() string { return proto.CompactTextString(m) }
func (*PriceResponse) ProtoMessage() {}
func (*PriceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{13}
}
func (m *PriceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PriceResponse.Unmarshal(m, b)
}
func (m *PriceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PriceResponse.Marshal(b, m, deterministic)
}
func (m *PriceResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PriceResponse.Merge(m, src)
}
func (m *PriceResponse) XXX_Size() int {
return xxx_messageInfo_PriceResponse.Size(m)
}
func (m *PriceResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PriceResponse.DiscardUnknown(m)
}
var xxx_messageInfo_PriceResponse proto.InternalMessageInfo
type FiatEstimateResponse struct {
FiatValues map[string]float32 `protobuf:"bytes,1,rep,name=fiat_values,json=fiatValues,proto3" json:"fiat_values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FiatEstimateResponse) Reset() { *m = FiatEstimateResponse{} }
func (m *FiatEstimateResponse) String() string { return proto.CompactTextString(m) }
func (*FiatEstimateResponse) ProtoMessage() {}
func (*FiatEstimateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{14}
}
func (m *FiatEstimateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FiatEstimateResponse.Unmarshal(m, b)
}
func (m *FiatEstimateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FiatEstimateResponse.Marshal(b, m, deterministic)
}
func (m *FiatEstimateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_FiatEstimateResponse.Merge(m, src)
}
func (m *FiatEstimateResponse) XXX_Size() int {
return xxx_messageInfo_FiatEstimateResponse.Size(m)
}
func (m *FiatEstimateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_FiatEstimateResponse.DiscardUnknown(m)
}
var xxx_messageInfo_FiatEstimateResponse proto.InternalMessageInfo
func (m *FiatEstimateResponse) GetFiatValues() map[string]float32 {
if m != nil {
return m.FiatValues
}
return nil
}
func init() {
proto.RegisterEnum("frdrpc.CloseRecommendationRequest_Metric", CloseRecommendationRequest_Metric_name, CloseRecommendationRequest_Metric_value)
proto.RegisterEnum("frdrpc.FiatEstimateRequest_Granularity", FiatEstimateRequest_Granularity_name, FiatEstimateRequest_Granularity_value)
proto.RegisterType((*CloseRecommendationRequest)(nil), "frdrpc.CloseRecommendationRequest")
proto.RegisterType((*OutlierRecommendationsRequest)(nil), "frdrpc.OutlierRecommendationsRequest")
proto.RegisterType((*ThresholdRecommendationsRequest)(nil), "frdrpc.ThresholdRecommendationsRequest")
@ -810,76 +1034,98 @@ func init() {
proto.RegisterType((*ChannelInsightsRequest)(nil), "frdrpc.ChannelInsightsRequest")
proto.RegisterType((*ChannelInsightsResponse)(nil), "frdrpc.ChannelInsightsResponse")
proto.RegisterType((*ChannelInsight)(nil), "frdrpc.ChannelInsight")
proto.RegisterType((*FiatEstimateRequest)(nil), "frdrpc.FiatEstimateRequest")
proto.RegisterType((*FiatEstimateRequest_PriceRequest)(nil), "frdrpc.FiatEstimateRequest.PriceRequest")
proto.RegisterType((*PriceResponse)(nil), "frdrpc.PriceResponse")
proto.RegisterType((*FiatEstimateResponse)(nil), "frdrpc.FiatEstimateResponse")
proto.RegisterMapType((map[string]float32)(nil), "frdrpc.FiatEstimateResponse.FiatValuesEntry")
}
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 1019 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
0x14, 0x67, 0xed, 0xc4, 0x69, 0x9e, 0x6b, 0xc7, 0x9d, 0xfc, 0xc1, 0x84, 0x84, 0x44, 0xab, 0x96,
0xba, 0xb4, 0xd8, 0xad, 0xb9, 0x20, 0x4e, 0x44, 0x91, 0x29, 0x16, 0xb5, 0x1d, 0x6d, 0x9d, 0x70,
0x41, 0x5a, 0x2d, 0xbb, 0x13, 0x67, 0xc0, 0x3b, 0xb3, 0x9d, 0x99, 0xb5, 0x14, 0x21, 0x2e, 0x7c,
0x01, 0x0e, 0xbd, 0x70, 0xe1, 0xcc, 0x57, 0xe0, 0x43, 0x70, 0x41, 0x88, 0x6f, 0xc0, 0x87, 0xe0,
0x88, 0x76, 0x66, 0xf6, 0x9f, 0x71, 0x1a, 0x2e, 0xdc, 0xbc, 0xbf, 0xdf, 0x6f, 0xde, 0xef, 0xcd,
0x7b, 0x33, 0xf3, 0x0c, 0x9b, 0x3c, 0xf2, 0xbb, 0x11, 0x67, 0x92, 0xa1, 0xda, 0x25, 0x0f, 0x78,
0xe4, 0xef, 0x1f, 0xcc, 0x18, 0x9b, 0xcd, 0x71, 0xcf, 0x8b, 0x48, 0xcf, 0xa3, 0x94, 0x49, 0x4f,
0x12, 0x46, 0x85, 0x56, 0xd9, 0x7f, 0x5b, 0xb0, 0x7f, 0x3a, 0x67, 0x02, 0x3b, 0xd8, 0x67, 0x61,
0x88, 0x69, 0xa0, 0x68, 0x07, 0xbf, 0x8a, 0xb1, 0x90, 0xe8, 0x31, 0xdc, 0x0b, 0x09, 0x25, 0x61,
0x1c, 0xba, 0x21, 0xa3, 0x44, 0x32, 0x8e, 0x83, 0xb6, 0x75, 0x6c, 0x75, 0xaa, 0x4e, 0xcb, 0x10,
0xa3, 0x14, 0x47, 0x27, 0x50, 0x0b, 0xb1, 0xe4, 0xc4, 0x6f, 0x57, 0x8e, 0xad, 0x4e, 0xb3, 0xff,
0xa8, 0xab, 0x53, 0xe8, 0xde, 0x6c, 0xd0, 0x1d, 0xa9, 0x05, 0x8e, 0x59, 0x68, 0x7f, 0x03, 0x35,
0x8d, 0xa0, 0x3a, 0x6c, 0x9c, 0x8f, 0xbf, 0x18, 0x4f, 0xbe, 0x1c, 0xb7, 0xde, 0x42, 0x00, 0xb5,
0xf3, 0xb3, 0xe9, 0x70, 0x34, 0x68, 0x59, 0x09, 0xe1, 0x0c, 0x2e, 0x06, 0xe3, 0xf3, 0x41, 0xab,
0x82, 0xb6, 0x61, 0x6b, 0x38, 0x3e, 0x9d, 0x8c, 0x86, 0xe3, 0xe7, 0xee, 0xc5, 0xe4, 0xc5, 0xf9,
0x68, 0xd0, 0xaa, 0x26, 0xe0, 0xe4, 0x7c, 0xfa, 0x7c, 0x52, 0x00, 0xd7, 0x50, 0x0b, 0xee, 0x4e,
0x27, 0xd3, 0x93, 0x17, 0x29, 0xb2, 0x6e, 0xbf, 0xb6, 0xe0, 0x70, 0x12, 0xcb, 0x39, 0xc1, 0xbc,
0x9c, 0x9b, 0x48, 0x77, 0x7f, 0x0a, 0x75, 0x8e, 0x7d, 0x97, 0xeb, 0x4f, 0xb5, 0xef, 0x7a, 0xdf,
0xbe, 0x7d, 0x57, 0x0e, 0x70, 0xec, 0xa7, 0x41, 0x3e, 0x04, 0xc4, 0xb4, 0x8b, 0x1b, 0xc6, 0x73,
0x49, 0xa2, 0xe4, 0xa7, 0xaa, 0x50, 0xc5, 0xb9, 0x67, 0x98, 0x51, 0x46, 0xd8, 0x3f, 0x5a, 0x70,
0x34, 0xbd, 0xe2, 0x58, 0x5c, 0xb1, 0x79, 0xf0, 0x7f, 0xe6, 0xf5, 0x10, 0xb6, 0x64, 0xea, 0xe3,
0x2e, 0xbc, 0x79, 0x8c, 0x4d, 0x52, 0xcd, 0x0c, 0xbe, 0x48, 0x50, 0xfb, 0x57, 0x0b, 0x0e, 0x56,
0xc4, 0x14, 0x0e, 0x16, 0x11, 0xa3, 0x02, 0xa3, 0x07, 0xd0, 0x94, 0x4c, 0x7a, 0x73, 0xd7, 0xbf,
0xf2, 0x28, 0xc5, 0x73, 0xa1, 0x32, 0x5a, 0x77, 0x1a, 0x0a, 0x3d, 0x35, 0x20, 0xea, 0xc1, 0xb6,
0xcf, 0xa8, 0x20, 0x01, 0xe6, 0x38, 0xc8, 0xb5, 0x15, 0xa5, 0x45, 0x39, 0x95, 0x2d, 0xf8, 0x14,
0xb6, 0x78, 0xd9, 0xb2, 0x5d, 0x3d, 0xae, 0x76, 0xea, 0xfd, 0xbd, 0x74, 0xab, 0x4b, 0xbb, 0x5c,
0x96, 0xdb, 0x14, 0x9a, 0x65, 0x09, 0x3a, 0x04, 0x48, 0x9c, 0xdd, 0x88, 0x11, 0xaa, 0x2b, 0xb7,
0xe9, 0x6c, 0x26, 0xc8, 0x59, 0x02, 0xa0, 0x1d, 0x58, 0x2f, 0x96, 0x42, 0x7f, 0x24, 0xa5, 0xca,
0x22, 0xbb, 0x7e, 0x52, 0x8a, 0x76, 0xf5, 0xd8, 0xea, 0xdc, 0x71, 0x9a, 0x19, 0xac, 0x0a, 0x64,
0xbf, 0x82, 0x1d, 0x07, 0x2f, 0x30, 0x8d, 0xb1, 0x83, 0x23, 0xc6, 0x65, 0x5a, 0xeb, 0x23, 0xa8,
0xe7, 0xae, 0x49, 0x79, 0xaa, 0x9d, 0x4d, 0x07, 0x32, 0x5b, 0x91, 0xa4, 0x25, 0xa4, 0xc7, 0xa5,
0x2b, 0x49, 0xa8, 0xcd, 0xd7, 0x9c, 0x4d, 0x85, 0x4c, 0x49, 0x88, 0xd1, 0x3b, 0x70, 0x27, 0xb1,
0x56, 0x64, 0x55, 0x91, 0x1b, 0x98, 0x06, 0x09, 0x65, 0x7f, 0x0e, 0xbb, 0x4b, 0x96, 0xa6, 0x2b,
0x3d, 0xd8, 0xe0, 0x0a, 0xd1, 0x7e, 0xf5, 0xfe, 0x6e, 0x5e, 0xb5, 0xa2, 0x3e, 0x55, 0xd9, 0x7f,
0x5a, 0xd0, 0x28, 0x51, 0xaa, 0xb1, 0x1e, 0x9f, 0x61, 0x99, 0x76, 0xcb, 0x14, 0xac, 0xa1, 0x51,
0xd3, 0x28, 0x34, 0x84, 0xbb, 0x91, 0x47, 0xb8, 0x9b, 0xda, 0x55, 0x94, 0xdd, 0xfb, 0x2b, 0xed,
0xba, 0x67, 0x1e, 0xe1, 0xfa, 0xa7, 0x18, 0x50, 0xc9, 0xaf, 0x9d, 0x7a, 0x94, 0x23, 0xfb, 0x0e,
0xb4, 0x96, 0x05, 0xa8, 0x05, 0xd5, 0x6f, 0xf1, 0xb5, 0xb1, 0x4e, 0x7e, 0xa2, 0x4e, 0xb1, 0x4b,
0xf5, 0x3e, 0x4a, 0x9d, 0xf2, 0xa5, 0xa6, 0x73, 0x9f, 0x54, 0x3e, 0xb6, 0xec, 0xdf, 0x2c, 0x80,
0x9c, 0x41, 0x4f, 0x61, 0xc7, 0x0b, 0x59, 0x4c, 0xa5, 0xcb, 0x62, 0x39, 0x63, 0x84, 0xce, 0xdc,
0x50, 0x78, 0xd2, 0xbc, 0x6a, 0x48, 0x73, 0x13, 0x43, 0x8d, 0x84, 0x27, 0xd1, 0x13, 0x40, 0x97,
0x18, 0x8b, 0x25, 0x7d, 0x45, 0xbf, 0x82, 0x09, 0x53, 0x52, 0xe7, 0xf1, 0x09, 0xf5, 0x59, 0x98,
0xe9, 0xab, 0xc5, 0xf8, 0x43, 0x43, 0x95, 0xe2, 0x97, 0xf5, 0x6b, 0x79, 0xfc, 0xa2, 0xda, 0x6e,
0xc3, 0x9e, 0x29, 0xfc, 0x90, 0x0a, 0x32, 0xbb, 0x92, 0xe9, 0xb3, 0x60, 0x7f, 0x05, 0x6f, 0xff,
0x8b, 0x31, 0x87, 0xe1, 0x04, 0x5a, 0xa6, 0x85, 0x2e, 0x31, 0x9c, 0x39, 0x15, 0xd9, 0x5d, 0x2a,
0x2f, 0x75, 0xb6, 0xfc, 0x72, 0x28, 0xfb, 0xf7, 0x0a, 0x34, 0xcb, 0x9a, 0xdb, 0x2e, 0x53, 0x32,
0x3c, 0xd2, 0xe1, 0xe0, 0x0a, 0xec, 0x33, 0x1a, 0x08, 0x73, 0xb6, 0x5b, 0x19, 0xf1, 0x52, 0xe3,
0xc9, 0x59, 0x8b, 0xa3, 0xe4, 0x80, 0x67, 0x4a, 0x7d, 0xd0, 0x1b, 0x1a, 0x4d, 0x65, 0x4f, 0x61,
0x67, 0xc1, 0xe6, 0x71, 0x88, 0x57, 0x56, 0x0b, 0x69, 0xae, 0x54, 0xdd, 0x7c, 0x45, 0xb9, 0x7f,
0xeb, 0xc5, 0x15, 0xa5, 0x0e, 0x76, 0x40, 0x55, 0xdd, 0xc5, 0x1e, 0xa7, 0x38, 0xd0, 0xea, 0x9a,
0x52, 0x37, 0x13, 0x7c, 0xa0, 0x60, 0xa5, 0xbc, 0x0f, 0x0d, 0x9f, 0xd1, 0x4b, 0xc2, 0x43, 0xf3,
0x3e, 0x6d, 0x1c, 0x5b, 0x9d, 0x86, 0x53, 0x06, 0x51, 0x1b, 0x36, 0x22, 0x4e, 0x16, 0x9e, 0xc4,
0xed, 0x3b, 0xea, 0xd9, 0x48, 0x3f, 0xfb, 0xbf, 0xac, 0x41, 0xe3, 0x33, 0x8f, 0x7b, 0x81, 0x77,
0xfd, 0x12, 0xf3, 0x05, 0xe6, 0xe8, 0x27, 0x0b, 0xf6, 0x56, 0x0f, 0x25, 0xf4, 0x20, 0xed, 0xd4,
0x1b, 0x87, 0xd6, 0xfe, 0xfd, 0x37, 0xcc, 0x81, 0xec, 0x40, 0xd8, 0xcf, 0x7e, 0xf8, 0xe3, 0xaf,
0xd7, 0x95, 0xc7, 0xe8, 0x51, 0x6f, 0xf1, 0xac, 0x77, 0xa9, 0x53, 0xe8, 0x99, 0x69, 0x24, 0x7a,
0xdf, 0x15, 0xc6, 0x4b, 0x57, 0x8f, 0xe6, 0xef, 0xd1, 0xcf, 0x16, 0xb4, 0x6f, 0x9a, 0x4c, 0xe8,
0x61, 0xea, 0x7a, 0xcb, 0xec, 0xfa, 0x8f, 0xe9, 0xf5, 0x55, 0x7a, 0x4f, 0xd0, 0x07, 0xc5, 0xf4,
0xb2, 0xb9, 0xb4, 0x3a, 0x3f, 0xb2, 0xfc, 0x7c, 0x1d, 0xac, 0x7e, 0xf0, 0x4c, 0x22, 0x87, 0x37,
0xb0, 0x26, 0x83, 0x77, 0x55, 0x06, 0xbb, 0x68, 0xbb, 0x98, 0x01, 0xd7, 0x52, 0x14, 0xc1, 0xd6,
0xd2, 0x4d, 0x43, 0xef, 0xad, 0xbe, 0x47, 0xd9, 0xbe, 0x8f, 0x6e, 0xe4, 0x8d, 0xe1, 0x81, 0x32,
0xdc, 0x43, 0x3b, 0x45, 0xc3, 0xf4, 0xb2, 0x7e, 0x5d, 0x53, 0x7f, 0xd7, 0x3e, 0xfa, 0x27, 0x00,
0x00, 0xff, 0xff, 0x49, 0xe9, 0x31, 0xd3, 0xe1, 0x09, 0x00, 0x00,
// 1287 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x4f, 0x6f, 0x1b, 0xc5,
0x1b, 0xfe, 0xad, 0x9d, 0xd8, 0xf1, 0xeb, 0xd8, 0xde, 0x4e, 0xd2, 0xfc, 0x8c, 0x9b, 0xd2, 0x68,
0xd5, 0x52, 0x97, 0x16, 0xbb, 0x35, 0x17, 0x84, 0x84, 0x44, 0x94, 0x6e, 0x5a, 0x8b, 0xda, 0x8e,
0x36, 0x76, 0x4a, 0x25, 0xd0, 0x6a, 0x59, 0x4f, 0x9c, 0x01, 0xef, 0x9f, 0xce, 0x8e, 0x23, 0x45,
0x88, 0x0b, 0x67, 0x24, 0x0e, 0x15, 0x12, 0x97, 0xde, 0xf8, 0x10, 0x7c, 0x08, 0x2e, 0x08, 0xf1,
0x0d, 0xf8, 0x10, 0x1c, 0xd1, 0xfc, 0xd9, 0x7f, 0xae, 0x93, 0x72, 0xe1, 0xe6, 0x7d, 0x9e, 0x67,
0xe6, 0x79, 0xe7, 0x7d, 0x67, 0xde, 0x19, 0x43, 0x85, 0x86, 0x6e, 0x27, 0xa4, 0x01, 0x0b, 0x50,
0xe9, 0x94, 0x4e, 0x69, 0xe8, 0xb6, 0x76, 0x67, 0x41, 0x30, 0x9b, 0xe3, 0xae, 0x13, 0x92, 0xae,
0xe3, 0xfb, 0x01, 0x73, 0x18, 0x09, 0xfc, 0x48, 0xaa, 0x8c, 0xbf, 0x35, 0x68, 0x1d, 0xcc, 0x83,
0x08, 0x5b, 0xd8, 0x0d, 0x3c, 0x0f, 0xfb, 0x53, 0x41, 0x5b, 0xf8, 0xe5, 0x02, 0x47, 0x0c, 0xdd,
0x87, 0x6b, 0x1e, 0xf1, 0x89, 0xb7, 0xf0, 0x6c, 0x2f, 0xf0, 0x09, 0x0b, 0x28, 0x9e, 0x36, 0xb5,
0x3d, 0xad, 0x5d, 0xb4, 0x74, 0x45, 0x0c, 0x62, 0x1c, 0xed, 0x43, 0xc9, 0xc3, 0x8c, 0x12, 0xb7,
0x59, 0xd8, 0xd3, 0xda, 0xf5, 0xde, 0xbd, 0x8e, 0x0c, 0xa1, 0x73, 0xb9, 0x41, 0x67, 0x20, 0x06,
0x58, 0x6a, 0xa0, 0xf1, 0x35, 0x94, 0x24, 0x82, 0xaa, 0x50, 0x9e, 0x0c, 0x3f, 0x1b, 0x8e, 0x9e,
0x0f, 0xf5, 0xff, 0x21, 0x80, 0xd2, 0xe4, 0x68, 0xdc, 0x1f, 0x98, 0xba, 0xc6, 0x09, 0xcb, 0x3c,
0x31, 0x87, 0x13, 0x53, 0x2f, 0xa0, 0x2d, 0x68, 0xf4, 0x87, 0x07, 0xa3, 0x41, 0x7f, 0xf8, 0xc4,
0x3e, 0x19, 0x3d, 0x9b, 0x0c, 0x4c, 0xbd, 0xc8, 0xc1, 0xd1, 0x64, 0xfc, 0x64, 0x94, 0x01, 0xd7,
0x90, 0x0e, 0x9b, 0xe3, 0xd1, 0x78, 0xff, 0x59, 0x8c, 0xac, 0x1b, 0xaf, 0x34, 0xb8, 0x39, 0x5a,
0xb0, 0x39, 0xc1, 0x34, 0x1f, 0x5b, 0x14, 0xaf, 0xfe, 0x00, 0xaa, 0x14, 0xbb, 0x36, 0x95, 0x9f,
0x62, 0xdd, 0xd5, 0x9e, 0xf1, 0xf6, 0x55, 0x59, 0x40, 0xb1, 0x1b, 0x4f, 0xf2, 0x01, 0xa0, 0x40,
0xba, 0xd8, 0xde, 0x62, 0xce, 0x48, 0xc8, 0x7f, 0x8a, 0x0c, 0x15, 0xac, 0x6b, 0x8a, 0x19, 0x24,
0x84, 0xf1, 0xa3, 0x06, 0xb7, 0xc6, 0x67, 0x14, 0x47, 0x67, 0xc1, 0x7c, 0xfa, 0x5f, 0xc6, 0x75,
0x17, 0x1a, 0x2c, 0xf6, 0xb1, 0xcf, 0x9d, 0xf9, 0x02, 0xab, 0xa0, 0xea, 0x09, 0x7c, 0xc2, 0x51,
0xe3, 0x57, 0x0d, 0x76, 0x57, 0xcc, 0x19, 0x59, 0x38, 0x0a, 0x03, 0x3f, 0xc2, 0xe8, 0x0e, 0xd4,
0x59, 0xc0, 0x9c, 0xb9, 0xed, 0x9e, 0x39, 0xbe, 0x8f, 0xe7, 0x91, 0x88, 0x68, 0xdd, 0xaa, 0x09,
0xf4, 0x40, 0x81, 0xa8, 0x0b, 0x5b, 0x6e, 0xe0, 0x47, 0x64, 0x8a, 0x29, 0x9e, 0xa6, 0xda, 0x82,
0xd0, 0xa2, 0x94, 0x4a, 0x06, 0x7c, 0x0a, 0x0d, 0x9a, 0xb7, 0x6c, 0x16, 0xf7, 0x8a, 0xed, 0x6a,
0x6f, 0x27, 0x5e, 0xea, 0xd2, 0x2a, 0x97, 0xe5, 0x86, 0x0f, 0xf5, 0xbc, 0x04, 0xdd, 0x04, 0xe0,
0xce, 0x76, 0x18, 0x10, 0x5f, 0x66, 0xae, 0x62, 0x55, 0x38, 0x72, 0xc4, 0x01, 0xb4, 0x0d, 0xeb,
0xd9, 0x54, 0xc8, 0x0f, 0x9e, 0xaa, 0x64, 0x66, 0xdb, 0xe5, 0xa9, 0x68, 0x16, 0xf7, 0xb4, 0xf6,
0x86, 0x55, 0x4f, 0x60, 0x91, 0x20, 0xe3, 0x25, 0x6c, 0x5b, 0xf8, 0x1c, 0xfb, 0x0b, 0x6c, 0xe1,
0x30, 0xa0, 0x2c, 0xce, 0xf5, 0x2d, 0xa8, 0xa6, 0xae, 0x3c, 0x3d, 0xc5, 0x76, 0xc5, 0x82, 0xc4,
0x36, 0xe2, 0x61, 0x45, 0xcc, 0xa1, 0xcc, 0x66, 0xc4, 0x93, 0xe6, 0x6b, 0x56, 0x45, 0x20, 0x63,
0xe2, 0x61, 0xf4, 0x0e, 0x6c, 0x70, 0x6b, 0x41, 0x16, 0x05, 0x59, 0xc6, 0xfe, 0x94, 0x53, 0xc6,
0x53, 0xb8, 0xbe, 0x64, 0xa9, 0xaa, 0xd2, 0x85, 0x32, 0x15, 0x88, 0xf4, 0xab, 0xf6, 0xae, 0xa7,
0x59, 0xcb, 0xea, 0x63, 0x95, 0xf1, 0xa7, 0x06, 0xb5, 0x1c, 0x25, 0x0a, 0xeb, 0xd0, 0x19, 0x66,
0x71, 0xb5, 0x54, 0xc2, 0x6a, 0x12, 0x55, 0x85, 0x42, 0x7d, 0xd8, 0x0c, 0x1d, 0x42, 0xed, 0xd8,
0xae, 0x20, 0xec, 0xde, 0x5b, 0x69, 0xd7, 0x39, 0x72, 0x08, 0x95, 0x3f, 0x23, 0xd3, 0x67, 0xf4,
0xc2, 0xaa, 0x86, 0x29, 0xd2, 0xb2, 0x40, 0x5f, 0x16, 0x20, 0x1d, 0x8a, 0xdf, 0xe0, 0x0b, 0x65,
0xcd, 0x7f, 0xa2, 0x76, 0xb6, 0x4a, 0xd5, 0x1e, 0x8a, 0x9d, 0xd2, 0xa1, 0xaa, 0x72, 0x1f, 0x17,
0x3e, 0xd2, 0x8c, 0xdf, 0x34, 0x80, 0x94, 0x41, 0x0f, 0x61, 0xdb, 0xf1, 0x82, 0x85, 0xcf, 0xec,
0x60, 0xc1, 0x66, 0x01, 0xf1, 0x67, 0xb6, 0x17, 0x39, 0x4c, 0x75, 0x35, 0x24, 0xb9, 0x91, 0xa2,
0x06, 0x91, 0xc3, 0xd0, 0x03, 0x40, 0xa7, 0x18, 0x47, 0x4b, 0xfa, 0x82, 0xec, 0x82, 0x9c, 0xc9,
0xa9, 0xd3, 0xf9, 0x89, 0xef, 0x06, 0x5e, 0xa2, 0x2f, 0x66, 0xe7, 0xef, 0x2b, 0x2a, 0x37, 0x7f,
0x5e, 0xbf, 0x96, 0xce, 0x9f, 0x55, 0x1b, 0x4d, 0xd8, 0x51, 0x89, 0xef, 0xfb, 0x11, 0x99, 0x9d,
0xb1, 0xb8, 0x2d, 0x18, 0x5f, 0xc0, 0xff, 0xdf, 0x60, 0xd4, 0x66, 0xd8, 0x07, 0x5d, 0x95, 0xd0,
0x26, 0x8a, 0x53, 0xbb, 0x22, 0x39, 0x4b, 0xf9, 0xa1, 0x56, 0xc3, 0xcd, 0x4f, 0x65, 0xfc, 0x5e,
0x80, 0x7a, 0x5e, 0xf3, 0xb6, 0xc3, 0xc4, 0x2f, 0x8f, 0xf8, 0x72, 0xb0, 0x23, 0xec, 0x06, 0xfe,
0x34, 0x52, 0x7b, 0x5b, 0x4f, 0x88, 0x63, 0x89, 0xf3, 0xbd, 0xb6, 0x08, 0xf9, 0x06, 0x4f, 0x94,
0x72, 0xa3, 0xd7, 0x24, 0x1a, 0xcb, 0x1e, 0xc2, 0xf6, 0x79, 0x30, 0x5f, 0x78, 0x78, 0x65, 0xb6,
0x90, 0xe4, 0x72, 0xd9, 0x4d, 0x47, 0xe4, 0xeb, 0xb7, 0x9e, 0x1d, 0x91, 0xab, 0x60, 0x1b, 0x44,
0xd6, 0x6d, 0xec, 0x50, 0x1f, 0x4f, 0xa5, 0xba, 0x24, 0xd4, 0x75, 0x8e, 0x9b, 0x02, 0x16, 0xca,
0xdb, 0x50, 0x73, 0x03, 0xff, 0x94, 0x50, 0x4f, 0xf5, 0xa7, 0xf2, 0x9e, 0xd6, 0xae, 0x59, 0x79,
0x10, 0x35, 0xa1, 0x1c, 0x52, 0x72, 0xee, 0x30, 0xdc, 0xdc, 0x10, 0x6d, 0x23, 0xfe, 0x34, 0x5e,
0x17, 0x61, 0xeb, 0x90, 0x38, 0xcc, 0x8c, 0x18, 0xf1, 0x1c, 0x86, 0xe3, 0x7e, 0xf1, 0x18, 0x36,
0x54, 0x73, 0x8f, 0xcb, 0xd4, 0x8e, 0xcb, 0xb4, 0x42, 0xde, 0x39, 0xa2, 0xc4, 0x8d, 0x3f, 0xac,
0x64, 0x24, 0xea, 0x43, 0x75, 0x46, 0x1d, 0x7f, 0x31, 0x77, 0x28, 0x61, 0x17, 0xea, 0x52, 0xbe,
0x7b, 0xd5, 0x44, 0x4f, 0x52, 0xb9, 0x95, 0x1d, 0xdb, 0xfa, 0x12, 0x36, 0xb3, 0x26, 0xa8, 0x0e,
0x05, 0x32, 0x55, 0x15, 0x2f, 0x90, 0x29, 0x6f, 0x70, 0x6a, 0xd3, 0x27, 0x67, 0x63, 0xcd, 0x02,
0x09, 0x89, 0x4c, 0xed, 0x42, 0x85, 0x97, 0x31, 0x62, 0x8e, 0x17, 0xaa, 0xa3, 0x90, 0x02, 0xc6,
0x4f, 0x1a, 0x54, 0x33, 0xde, 0x6f, 0x5c, 0xfe, 0x83, 0xfe, 0x70, 0x32, 0xe6, 0x97, 0xbf, 0x0e,
0x9b, 0x87, 0xfd, 0x13, 0xd3, 0x96, 0xc0, 0xb1, 0x7c, 0x01, 0x1c, 0xf6, 0x0f, 0xc7, 0xa6, 0x39,
0x4c, 0xc0, 0x22, 0x42, 0x50, 0x1f, 0x3f, 0xed, 0x5b, 0xe3, 0x17, 0x09, 0xb6, 0x86, 0x36, 0x60,
0xed, 0xe9, 0x68, 0x62, 0xe9, 0xeb, 0xa8, 0x06, 0x95, 0xe3, 0xfe, 0xe7, 0x36, 0xff, 0x3a, 0xd6,
0x4b, 0xe2, 0x65, 0xf0, 0xdc, 0x7c, 0x76, 0x62, 0x2a, 0xa4, 0x8c, 0xca, 0x50, 0x7c, 0xbc, 0xff,
0x42, 0xdf, 0x30, 0x1a, 0x50, 0x53, 0xcb, 0x96, 0xe7, 0xc8, 0xf8, 0x45, 0x83, 0xed, 0x7c, 0xe2,
0xd4, 0x01, 0x1b, 0x40, 0xf5, 0x94, 0x38, 0x4c, 0x5e, 0xa4, 0x71, 0xd1, 0x1e, 0xac, 0xce, 0xb5,
0x1c, 0x22, 0x40, 0x71, 0xc3, 0xaa, 0x46, 0x08, 0xa7, 0x09, 0xd0, 0xfa, 0x04, 0x1a, 0x4b, 0xf4,
0x8a, 0x36, 0xb8, 0xf2, 0xb2, 0xe2, 0x2d, 0xaf, 0xf7, 0xc3, 0x3a, 0xd4, 0x0e, 0x1d, 0xea, 0x4c,
0x9d, 0x8b, 0x63, 0x4c, 0xcf, 0x31, 0x45, 0x3f, 0x6b, 0xb0, 0xb3, 0xfa, 0xb1, 0x83, 0xee, 0xc4,
0x51, 0x5e, 0xf9, 0x18, 0x6a, 0xdd, 0xbe, 0xe2, 0x7d, 0x91, 0x34, 0x1a, 0xe3, 0xd1, 0xf7, 0x7f,
0xfc, 0xf5, 0xaa, 0x70, 0x1f, 0xdd, 0xeb, 0x9e, 0x3f, 0xea, 0x9e, 0xca, 0x10, 0xba, 0xea, 0x95,
0x13, 0x75, 0xbf, 0xcd, 0x3c, 0x5b, 0x3a, 0xf2, 0xc9, 0xf7, 0x1d, 0x7a, 0xad, 0x41, 0xf3, 0xb2,
0x17, 0x0f, 0x4a, 0xb6, 0xeb, 0x5b, 0xde, 0x44, 0xff, 0x32, 0xbc, 0x9e, 0x08, 0xef, 0x01, 0x7a,
0x3f, 0x1b, 0x5e, 0xf2, 0xde, 0x59, 0x1d, 0x1f, 0x59, 0xbe, 0x16, 0x77, 0x57, 0x5f, 0xa4, 0x2a,
0x90, 0x9b, 0x97, 0xb0, 0x2a, 0x82, 0x1b, 0x22, 0x82, 0xeb, 0x68, 0x2b, 0x1b, 0x01, 0x95, 0x52,
0x14, 0x42, 0x63, 0xa9, 0x83, 0xa3, 0x77, 0x57, 0xf7, 0xe7, 0x64, 0xdd, 0xb7, 0x2e, 0xe5, 0x95,
0xe1, 0xae, 0x30, 0xdc, 0x41, 0xdb, 0x59, 0xc3, 0xf8, 0x12, 0x40, 0x2e, 0x6c, 0x66, 0x37, 0x27,
0xba, 0x71, 0x45, 0x7b, 0x68, 0xed, 0x5e, 0xb5, 0x9f, 0x8d, 0xa6, 0x30, 0x42, 0x48, 0xcf, 0x1a,
0xf1, 0x3d, 0xfd, 0x55, 0x49, 0xfc, 0xd7, 0xf8, 0xf0, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a,
0xcb, 0x78, 0xd5, 0x9e, 0x0c, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -920,6 +1166,12 @@ type FaradayServerClient interface {
//Example request:
//http://localhost:8466/v1/faraday/insights
ChannelInsights(ctx context.Context, in *ChannelInsightsRequest, opts ...grpc.CallOption) (*ChannelInsightsResponse, error)
//* frcli:
//Get fiat prices for btc.
//
//Example request:
//http://localhost:8466/v1/faraday/fiat
FiatEstimate(ctx context.Context, in *FiatEstimateRequest, opts ...grpc.CallOption) (*FiatEstimateResponse, error)
}
type faradayServerClient struct {
@ -966,6 +1218,15 @@ func (c *faradayServerClient) ChannelInsights(ctx context.Context, in *ChannelIn
return out, nil
}
func (c *faradayServerClient) FiatEstimate(ctx context.Context, in *FiatEstimateRequest, opts ...grpc.CallOption) (*FiatEstimateResponse, error) {
out := new(FiatEstimateResponse)
err := c.cc.Invoke(ctx, "/frdrpc.FaradayServer/FiatEstimate", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// FaradayServerServer is the server API for FaradayServer service.
type FaradayServerServer interface {
//* frcli: `outliers`
@ -994,6 +1255,12 @@ type FaradayServerServer interface {
//Example request:
//http://localhost:8466/v1/faraday/insights
ChannelInsights(context.Context, *ChannelInsightsRequest) (*ChannelInsightsResponse, error)
//* frcli:
//Get fiat prices for btc.
//
//Example request:
//http://localhost:8466/v1/faraday/fiat
FiatEstimate(context.Context, *FiatEstimateRequest) (*FiatEstimateResponse, error)
}
func RegisterFaradayServerServer(s *grpc.Server, srv FaradayServerServer) {
@ -1072,6 +1339,24 @@ func _FaradayServer_ChannelInsights_Handler(srv interface{}, ctx context.Context
return interceptor(ctx, in, info, handler)
}
func _FaradayServer_FiatEstimate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FiatEstimateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FaradayServerServer).FiatEstimate(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/frdrpc.FaradayServer/FiatEstimate",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FaradayServerServer).FiatEstimate(ctx, req.(*FiatEstimateRequest))
}
return interceptor(ctx, in, info, handler)
}
var _FaradayServer_serviceDesc = grpc.ServiceDesc{
ServiceName: "frdrpc.FaradayServer",
HandlerType: (*FaradayServerServer)(nil),
@ -1092,6 +1377,10 @@ var _FaradayServer_serviceDesc = grpc.ServiceDesc{
MethodName: "ChannelInsights",
Handler: _FaradayServer_ChannelInsights_Handler,
},
{
MethodName: "FiatEstimate",
Handler: _FaradayServer_FiatEstimate_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "rpc.proto",

View file

@ -130,6 +130,23 @@ func request_FaradayServer_ChannelInsights_0(ctx context.Context, marshaler runt
}
var (
filter_FaradayServer_FiatEstimate_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_FaradayServer_FiatEstimate_0(ctx context.Context, marshaler runtime.Marshaler, client FaradayServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq FiatEstimateRequest
var metadata runtime.ServerMetadata
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_FaradayServer_FiatEstimate_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.FiatEstimate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
// RegisterFaradayServerHandlerFromEndpoint is same as RegisterFaradayServerHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterFaradayServerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
@ -248,6 +265,26 @@ func RegisterFaradayServerHandlerClient(ctx context.Context, mux *runtime.ServeM
})
mux.Handle("GET", pattern_FaradayServer_FiatEstimate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_FaradayServer_FiatEstimate_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_FaradayServer_FiatEstimate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -259,6 +296,8 @@ var (
pattern_FaradayServer_RevenueReport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "faraday", "revenue"}, ""))
pattern_FaradayServer_ChannelInsights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "faraday", "insights"}, ""))
pattern_FaradayServer_FiatEstimate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "faraday", "fiat"}, ""))
)
var (
@ -269,4 +308,6 @@ var (
forward_FaradayServer_RevenueReport_0 = runtime.ForwardResponseMessage
forward_FaradayServer_ChannelInsights_0 = runtime.ForwardResponseMessage
forward_FaradayServer_FiatEstimate_0 = runtime.ForwardResponseMessage
)

View file

@ -57,6 +57,18 @@ service FaradayServer {
get: "/v1/faraday/insights"
};
}
/** frcli:
Get fiat prices for btc.
Example request:
http://localhost:8466/v1/faraday/fiat
*/
rpc FiatEstimate (FiatEstimateRequest) returns (FiatEstimateResponse) {
option (google.api.http) = {
get: "/v1/faraday/fiat"
};
}
}
message CloseRecommendationRequest {
@ -294,3 +306,38 @@ message ChannelInsight {
// True if the channel is private.
bool private = 8;
}
message FiatEstimateRequest {
message PriceRequest {
// id is a unique identifier for the request.
string id = 1;
// The amount to be converted to fiat in millisatoshis.
uint64 amount_msat = 2;
// The unix timestamp at which the price should be quoted.
int64 timestamp = 3;
}
repeated PriceRequest requests = 1;
// Granularity describes the aggregation level at which the Bitcoin price
// is provided.
enum Granularity {
UNKNOWN = 0;
MINUTE = 1;
FIVE_MINUTES = 2;
FIFTEEN_MINUTES = 3;
THIRTY_MINUTES = 4;
HOUR = 5;
SIX_HOURS = 6;
TWELVE_HOURS = 7;
DAY = 8;
}
Granularity granularity = 2;
}
message FiatEstimateResponse {
map<string, float> fiat_values = 1;
}

View file

@ -15,6 +15,44 @@
"application/json"
],
"paths": {
"/v1/faraday/fiat": {
"get": {
"summary": "* frcli:\nGet fiat prices for btc.",
"description": "Example request:\nhttp://localhost:8466/v1/faraday/fiat",
"operationId": "FiatEstimate",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/frdrpcFiatEstimateResponse"
}
}
},
"parameters": [
{
"name": "granularity",
"in": "query",
"required": false,
"type": "string",
"enum": [
"UNKNOWN",
"MINUTE",
"FIVE_MINUTES",
"FIFTEEN_MINUTES",
"THIRTY_MINUTES",
"HOUR",
"SIX_HOURS",
"TWELVE_HOURS",
"DAY"
],
"default": "UNKNOWN"
}
],
"tags": [
"FaradayServer"
]
}
},
"/v1/faraday/insights": {
"get": {
"summary": "* frcli: `insights`\nList currently open channel with routing and uptime information.",
@ -196,6 +234,41 @@
],
"default": "UNKNOWN"
},
"FiatEstimateRequestGranularity": {
"type": "string",
"enum": [
"UNKNOWN",
"MINUTE",
"FIVE_MINUTES",
"FIFTEEN_MINUTES",
"THIRTY_MINUTES",
"HOUR",
"SIX_HOURS",
"TWELVE_HOURS",
"DAY"
],
"default": "UNKNOWN",
"description": "Granularity describes the aggregation level at which the Bitcoin price\nis provided."
},
"FiatEstimateRequestPriceRequest": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "id is a unique identifier for the request."
},
"amount_msat": {
"type": "string",
"format": "uint64",
"description": "The amount to be converted to fiat in millisatoshis."
},
"timestamp": {
"type": "string",
"format": "int64",
"description": "The unix timestamp at which the price should be quoted."
}
}
},
"frdrpcChannelInsight": {
"type": "object",
"properties": {
@ -288,6 +361,18 @@
}
}
},
"frdrpcFiatEstimateResponse": {
"type": "object",
"properties": {
"fiat_values": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "float"
}
}
}
},
"frdrpcPairReport": {
"type": "object",
"properties": {

View file

@ -17,6 +17,8 @@ import (
"sync"
"sync/atomic"
"github.com/lightninglabs/faraday/fiat"
proxy "github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/lightninglabs/faraday/recommend"
"github.com/lightninglabs/faraday/revenue"
@ -276,6 +278,24 @@ func (s *RPCServer) ChannelInsights(ctx context.Context,
return rpcChannelInsightsResponse(insights), nil
}
// FiatEstimate provides a fiat estimate for a set of timestamped bitcoin
// prices.
func (s *RPCServer) FiatEstimate(ctx context.Context,
req *FiatEstimateRequest) (*FiatEstimateResponse, error) {
granularity, reqs, err := parseFiatRequest(req)
if err != nil {
return nil, err
}
prices, err := fiat.GetPrices(ctx, reqs, granularity)
if err != nil {
return nil, err
}
return fiatEstimateResponse(prices), nil
}
// allowCORS wraps the given http.Handler with a function that adds the
// Access-Control-Allow-Origin header to the response.
func allowCORS(handler http.Handler, origin string) http.Handler {