|  | package endpoints
import (
	"encoding/json"
	"fmt"
	"net/http"
	. "github.com/imosed/signet/data"
	"github.com/rs/zerolog/log"
	"github.com/stellar/go/clients/horizonclient"
	"github.com/stellar/go/protocols/horizon"
)
var client = horizonclient.DefaultTestNetClient
type SubmitFundRequest struct {
	FundID uint `json:"fundId"`
}
func SubmitFund(w http.ResponseWriter, r *http.Request) {
	var req SubmitFundRequest
	err := json.NewDecoder(r.Body).Decode(&req)
	if err != nil {
		log.Error().Err(err).Msg("Could not decode body in SubmitFund call")
	}
	var fund RewardFund
	Db.Find(&fund, req.FundID)
	// source := keypair.MustParseFull(fund.FundWallet)
	// sourceReq := horizonclient.AccountRequest{AccountID: source.Address()}
	// var sourceAcct horizon.Account
	// sourceAcct, err = client.AccountDetail(sourceReq)
	offerReq := horizonclient.OfferRequest{
		Selling: fmt.Sprintf("%s:%s", fund.Asset, fund.IssuerWallet),
		Seller:  fund.IssuerWallet,
		Cursor:  "0",
	}
	var offers horizon.OffersPage
	offers, err = client.Offers(offerReq)
	for _, o := range offers.Embedded.Records {
		if float64(o.PriceR.N)/float64(o.PriceR.D) == fund.Price {
			fmt.Println(o.PriceR.N)
			fmt.Println(o.Amount)
		}
	}
	// var tx *txnbuild.Transaction
	// tx, err = txnbuild.NewTransaction(
	//	txnbuild.TransactionParams{
	//		SourceAccount:        &sourceAcct,
	//		IncrementSequenceNum: true,
	//		Operations: []txnbuild.Operation{
	//			&txnbuild.ManageBuyOffer{
	//				Selling: txnbuild.NativeAsset{},
	//				Buying: txnbuild.CreditAsset{
	//					Code:   fund.Asset,
	//					Issuer: fund.IssuerWallet,
	//				},
	//				Amount:        fmt.Sprintf("%f", SumContributions(fund.Contributions)),
	//				Price:         xdr.Price{}, // TODO: get price
	//				OfferID:       0,
	//				SourceAccount: "",
	//			},
	//		},
	//		BaseFee: txnbuild.MinBaseFee,
	//		Memo:    txnbuild.Memo(txnbuild.MemoText(strconv.Itoa(int(fund.Model.ID)))),
	//		Preconditions: txnbuild.Preconditions{
	//			TimeBounds: txnbuild.NewInfiniteTimeout(), // TODO: change from infinite
	//		},
	//	})
	// if err != nil {
	//	log.Error().Err(err).Msg("Could not submit reward fund")
	// }
	//
	// tx, err = tx.Sign(network.TestNetworkPassphrase, source)
	// if err != nil {
	//	log.Error().Err(err).Msg("Could not submit fund")
	// }
	//
	// var response horizon.Transaction
	// response, err = client.SubmitTransaction(tx)
	var resp SuccessResponse
	// resp.Success = response.Successful
	err = json.NewEncoder(w).Encode(resp)
	if err != nil {
		log.Error().Err(err).Msg("Could not deliver response in SubmitFund call")
	}
}
 |