Selaa lähdekoodia

Add logging and control flow

master
Jared 1 vuosi sitten
vanhempi
commit
484e25aa68
19 muutettua tiedostoa jossa 125 lisäystä ja 98 poistoa
  1. +4
    -4
      data/context.go
  2. +6
    -3
      endpoints/closerewardfund.go
  3. +13
    -7
      endpoints/contribute.go
  4. +10
    -7
      endpoints/contributionstream.go
  5. +4
    -2
      endpoints/createqueue.go
  6. +19
    -13
      endpoints/createrewardfund.go
  7. +5
    -3
      endpoints/escalateprivileges.go
  8. +8
    -4
      endpoints/getbalance.go
  9. +4
    -2
      endpoints/getqueuemembers.go
  10. +2
    -1
      endpoints/getqueues.go
  11. +10
    -9
      endpoints/getrewardfund.go
  12. +5
    -4
      endpoints/getrewardfunds.go
  13. +11
    -4
      endpoints/login.go
  14. +9
    -5
      endpoints/register.go
  15. +5
    -4
      endpoints/submitfund.go
  16. +2
    -1
      endpoints/users.go
  17. +1
    -7
      go.mod
  18. +1
    -16
      go.sum
  19. +6
    -2
      main.go

+ 4
- 4
data/context.go Näytä tiedosto

@@ -4,6 +4,7 @@ import (
"fmt"
"time"

"github.com/rs/zerolog/log"
"github.com/spf13/viper"
"gorm.io/driver/postgres"
"gorm.io/gorm"
@@ -39,9 +40,8 @@ type RewardFund struct {
Price float64 `gorm:"type:decimal(19,7)" json:"price"`
AmountAvailable float64 `gorm:"type:decimal(19,7)" json:"amountAvailable"`
MinContribution float64 `gorm:"type:decimal(19,7)" json:"minContribution"`
TelegramLink string `json:"telegramLink"`
Contributions []Contribution `json:"contributions"`
Title string `gorm:"type:varchar(50)" json:"title"`
Description string `gorm:"type:text" json:"description"`
Bonuses []Bonus `json:"bonuses"`
QueueOrder QueueOrder `json:"queueOrder"`
}
@@ -81,10 +81,10 @@ func InitializeDatabase() {
viper.GetString("database.ssl"))
Db, err = gorm.Open(postgres.Open(dcs), &gorm.Config{})
if err != nil {
panic("Could not open database")
log.Error().Err(err).Msg("Could not open database")
}
err = Db.AutoMigrate(User{}, Queue{}, RewardFund{}, QueueOrder{}, Contribution{}, Bonus{})
if err != nil {
panic("Could not migrate database")
log.Error().Err(err).Msg("Could not migrate database")
}
}

+ 6
- 3
endpoints/closerewardfund.go Näytä tiedosto

@@ -6,6 +6,7 @@ import (

"github.com/imosed/signet/auth"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

type CloseRewardFundRequest struct {
@@ -17,13 +18,15 @@ func CloseRewardFund(w http.ResponseWriter, r *http.Request) {
var req CloseRewardFundRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in CloseRewardFund call")
return
}

var claims *auth.Claims
claims, err = auth.GetUserClaims(r)
if err != nil {
panic("Could not determine if user is authenticated")
log.Error().Err(err).Msg("Could not determine if user is authenticated")
return
}

var fund RewardFund
@@ -38,6 +41,6 @@ func CloseRewardFund(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in CloseRewardFund call")
}
}

+ 13
- 7
endpoints/contribute.go Näytä tiedosto

@@ -7,6 +7,7 @@ import (
"strings"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/stellar/go/clients/horizonclient"
"github.com/stellar/go/keypair"
"github.com/stellar/go/network"
@@ -24,7 +25,8 @@ func Contribute(resp http.ResponseWriter, req *http.Request) {
var cont ContributeRequest
err := json.NewDecoder(req.Body).Decode(&cont)
if err != nil {
panic("Could not read in contribution")
log.Error().Err(err).Msg("Could not read in contribution")
return
}

var fund RewardFund
@@ -34,7 +36,7 @@ func Contribute(resp http.ResponseWriter, req *http.Request) {
if cont.Amount < fund.MinContribution || !strings.HasPrefix(cont.PrivateKey, "S") || !fund.DeletedAt.Time.IsZero() {
err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: false})
if err != nil {
panic("Could not deliver unsuccessful contribution response")
log.Error().Err(err).Msg("Could not deliver unsuccessful contribution response")
}
return
}
@@ -44,7 +46,8 @@ func Contribute(resp http.ResponseWriter, req *http.Request) {
var sourceAcct horizon.Account
sourceAcct, err = client.AccountDetail(sourceReq)
if err != nil {
panic("Horizon client: could not get account details")
log.Error().Err(err).Msg("Could not get account details from Horizon client")
return
}

tx, err := txnbuild.NewTransaction(
@@ -66,18 +69,21 @@ func Contribute(resp http.ResponseWriter, req *http.Request) {
},
})
if err != nil {
panic("Could not create contribution transaction")
log.Error().Err(err).Msg("Could not create contribution transaction")
return
}

tx, err = tx.Sign(network.TestNetworkPassphrase, source)
if err != nil {
panic("Could not sign contribution transaction")
log.Error().Err(err).Msg("Could not sign contribution transaction")
return
}

var response horizon.Transaction
response, err = client.SubmitTransaction(tx)
if err != nil {
panic("Could not submit contribution transaction")
log.Error().Err(err).Msg("Could not submit contribution transaction")
return
}

fmt.Println("Successful Transaction:")
@@ -89,6 +95,6 @@ func Contribute(resp http.ResponseWriter, req *http.Request) {

err = json.NewEncoder(resp).Encode(&result)
if err != nil {
panic("Could not create response for new contribution")
log.Error().Err(err).Msg("Could not create response for new contribution")
}
}

+ 10
- 7
endpoints/contributionstream.go Näytä tiedosto

@@ -1,13 +1,13 @@
package endpoints

import (
"fmt"
"net/http"
"strconv"
"strings"

"github.com/gorilla/websocket"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
"github.com/stellar/go/clients/horizonclient"
"github.com/stellar/go/protocols/horizon"
@@ -36,7 +36,8 @@ func ContributorStream(resp http.ResponseWriter, req *http.Request) {
var err error
wsConn, err = upgrader.Upgrade(resp, req, nil)
if err != nil {
panic("Could not establish websocket connection")
log.Error().Err(err).Msg("Could not establish websocket connection")
return
}
}

@@ -59,11 +60,13 @@ func InitializeContributionStreams() {

tx, err = client.TransactionDetail(payment.GetTransactionHash())
if err != nil {
panic("Could not get transaction from hash")
log.Error().Err(err).Msg("Could not get transaction from hash")
return
}
amt, err = strconv.ParseFloat(payment.Amount, 64)
if err != nil {
panic("Could not convert payment to float")
log.Error().Err(err).Msg("Could not convert payment to float")
return
}

if tx.Memo == "" {
@@ -83,10 +86,10 @@ func InitializeContributionStreams() {
if wsConn != nil {
err = wsConn.WriteJSON(contribution)
if err != nil {
panic("Unable to write json to contribution stream")
log.Error().Err(err).Msg("Unable to write json to contribution stream")
}
} else {
fmt.Println("No websocket connections")
log.Info().Msg("No websocket connections")
}

Db.Table("contributions").Create(&contribution)
@@ -103,7 +106,7 @@ func InitializeContributionStreams() {
cancellations = append(cancellations, cancellation)
err = client.StreamOperations(ctx, opReq, contributionUpdateHandler)
if err != nil {
panic(err.Error())
log.Error().Err(err).Msg("Failed to stream contributions from Horizon client")
}
}
}

+ 4
- 2
endpoints/createqueue.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

type CreateQueueRequest struct {
@@ -19,7 +20,8 @@ func CreateQueue(w http.ResponseWriter, r *http.Request) {
var req CreateQueueRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in CreateQueue call")
return
}

var specificQueue Queue
@@ -41,6 +43,6 @@ func CreateQueue(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in CreateQueue call")
}
}

+ 19
- 13
endpoints/createrewardfund.go Näytä tiedosto

@@ -8,6 +8,7 @@ import (

"github.com/imosed/signet/auth"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/stellar/go/clients/horizonclient"
"github.com/stellar/go/protocols/horizon"
)
@@ -19,8 +20,7 @@ type CreateRewardFundRequest struct {
IssuerWallet string `json:"issuerWallet"`
Memo string `json:"memo"`
MinContribution float64 `gorm:"type:decimal(19,7)" json:"minContribution"`
Title string `gorm:"type:varchar(50)" json:"title"`
Description string `gorm:"type:text" json:"description"`
TelegramLink string `json:"telegramLink"`
QueueID uint `json:"queueID"`
Bonuses []Bonus `json:"bonuses"`
}
@@ -34,7 +34,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
dec := json.NewDecoder(req.Body)
err := dec.Decode(&fund)
if err != nil {
panic("Could not read submitted reward fund")
log.Error().Err(err).Msg("Could not read submitted reward fund")
return
}

var bonuses []Bonus
@@ -48,8 +49,7 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
Price: 0,
AmountAvailable: 0,
MinContribution: fund.MinContribution,
Title: fund.Title,
Description: fund.Description,
TelegramLink: fund.TelegramLink,
Contributions: nil,
}

@@ -70,7 +70,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {

op, err := client.Offers(offerReq)
if err != nil {
panic("Could not get offers")
log.Error().Err(err).Msg("Could not get offers")
return
}
offers := op.Embedded.Records
var price float64
@@ -78,11 +79,13 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
if len(offers) == 1 {
price, err = strconv.ParseFloat(op.Embedded.Records[0].Price, 64)
if err != nil {
panic("Could not parse price to float")
log.Error().Err(err).Msg("Could not parse price to float")
return
}
amt, err = strconv.ParseFloat(op.Embedded.Records[0].Amount, 64)
if err != nil {
panic("Could not parse amount to float")
log.Error().Err(err).Msg("Could not parse amount to float")
return
}
rewardFund.Price = price
rewardFund.AmountAvailable = amt
@@ -92,7 +95,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
for _, o := range op.Embedded.Records {
parsedAmt, err := strconv.ParseFloat(o.Amount, 64)
if err != nil {
panic("Could not parse amount to float")
log.Error().Err(err).Msg("Could not parse amount to float")
return
}
if parsedAmt > maxOffers {
correctOffer = o
@@ -101,13 +105,14 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
}
price, err = strconv.ParseFloat(correctOffer.Price, 64)
if err != nil {
panic("Could not parse price to float")
log.Error().Err(err).Msg("Could not parse price to float")
return
}
rewardFund.Price = price

amt, err = strconv.ParseFloat(correctOffer.Amount, 64)
if err != nil {
panic("Could not parse amount to float")
log.Error().Err(err).Msg("Could not parse amount to float")
}
rewardFund.AmountAvailable = amt
} else {
@@ -118,7 +123,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {
var claims *auth.Claims
claims, err = auth.GetUserClaims(req)
if err != nil {
panic("Could not determine if user is authenticated")
log.Error().Err(err).Msg("Could not determine if user is authenticated")
return
}

if claims.Privileges <= Admin {
@@ -138,7 +144,7 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) {

err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: true})
if err != nil {
panic("Could not create response for created reward fund")
log.Error().Err(err).Msg("Could not create response for created reward fund")
}
} else {
resp.WriteHeader(403)


+ 5
- 3
endpoints/escalateprivileges.go Näytä tiedosto

@@ -6,6 +6,7 @@ import (

"github.com/imosed/signet/auth"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

type EscalatePrivilegesRequest struct {
@@ -16,7 +17,8 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) {
var req EscalatePrivilegesRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in EscalatePrivileges call")
return
}

var resp SuccessResponse
@@ -32,7 +34,7 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver failed escalate privileges response")
log.Error().Err(err).Msg("Could not deliver failed escalate privileges response")
}
return
}
@@ -45,6 +47,6 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver successful escalate privileges response")
log.Error().Err(err).Msg("Could not deliver successful escalate privileges response")
}
}

+ 8
- 4
endpoints/getbalance.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"
"strconv"

"github.com/rs/zerolog/log"
"github.com/stellar/go/clients/horizonclient"
"github.com/stellar/go/keypair"
"github.com/stellar/go/protocols/horizon"
@@ -22,7 +23,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) {
var req GetBalanceRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in GetBalance call")
return
}

var kp keypair.KP
@@ -38,7 +40,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) {
var acct horizon.Account
acct, err = client.AccountDetail(acctReq)
if err != nil {
panic("Could not get account data from public key")
log.Error().Err(err).Msg("Could not get account data from public key")
return
}

var blnce = -1.0
@@ -49,7 +52,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) {
}

if blnce == -1.0 {
panic("Could not get XLM balance")
log.Error().Err(err).Msg("Could not get XLM balance")
return
}

var resp GetBalanceResponse
@@ -57,6 +61,6 @@ func GetBalance(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in GetBalance call")
}
}

+ 4
- 2
endpoints/getqueuemembers.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

type QueueMember struct {
@@ -26,7 +27,8 @@ func GetQueueMembers(w http.ResponseWriter, r *http.Request) {
var req GetQueueMembersRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in GetQueueMembers call")
return
}

var members []QueueMember
@@ -40,6 +42,6 @@ func GetQueueMembers(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in GetQueueMembers call")
}
}

+ 2
- 1
endpoints/getqueues.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

type GetQueuesResponse struct {
@@ -18,6 +19,6 @@ func GetQueues(w http.ResponseWriter, _ *http.Request) {

err := json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in GetQueues call")
}
}

+ 10
- 9
endpoints/getrewardfund.go Näytä tiedosto

@@ -6,6 +6,7 @@ import (
"time"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"gorm.io/gorm/clause"
)

@@ -33,7 +34,7 @@ func GetRewardFund(resp http.ResponseWriter, req *http.Request) {
dec := json.NewDecoder(req.Body)
err := dec.Decode(&requestedFund)
if err != nil {
panic("Could not read requested fund")
log.Error().Err(err).Msg("Could not read requested fund")
}

found := Db.Preload(clause.Associations).Find(&fund, requestedFund.ID).RowsAffected
@@ -65,8 +66,7 @@ func GetRewardFund(resp http.ResponseWriter, req *http.Request) {
Price: fund.Price,
AmountAvailable: fund.AmountAvailable,
MinContribution: fund.MinContribution,
Title: fund.Title,
Description: fund.Description,
TelegramLink: fund.TelegramLink,
Bonuses: fund.Bonuses,
},
Contributions: contribs,
@@ -75,7 +75,7 @@ func GetRewardFund(resp http.ResponseWriter, req *http.Request) {

err = json.NewEncoder(resp).Encode(r)
if err != nil {
panic("Could not deliver requested fund")
log.Error().Err(err).Msg("Could not deliver requested fund")
}
}

@@ -98,7 +98,8 @@ func GetContributions(w http.ResponseWriter, r *http.Request) {
var req GetContributionsRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in GetContributions call")
return
}

var resp GetContributionsResponse
@@ -120,7 +121,8 @@ func GetContributions(w http.ResponseWriter, r *http.Request) {
t, err = time.Parse("2006-Jan-02", req.ForDate)
t = t.Add(time.Hour * 24)
if err != nil {
panic("Could not interpret time")
log.Error().Err(err).Msg("Could not interpret time")
return
}
if req.ConsolidateContributions {
baseQuery.Select("wallet, sum(amount) amount").Where("created_at < ?", t).Group("wallet").Scan(&resp.List)
@@ -133,7 +135,7 @@ func GetContributions(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in GetContributions call")
}
}

@@ -147,7 +149,6 @@ type FundInfo struct {
Price float64 `json:"price"`
AmountAvailable float64 `json:"amountAvailable"`
MinContribution float64 `json:"minContribution"`
Title string `json:"title"`
Description string `json:"description"`
TelegramLink string `json:"telegramLink"`
Bonuses []Bonus `json:"bonuses"`
}

+ 5
- 4
endpoints/getrewardfunds.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

func getQualifiedRewardFunds() []RewardFund {
@@ -71,7 +72,8 @@ func GetRewardFunds(w http.ResponseWriter, r *http.Request) {
var req GetRewardFundsRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in GetRewardFunds call")
return
}

var resp GetRewardFundsResponse
@@ -88,15 +90,14 @@ func GetRewardFunds(w http.ResponseWriter, r *http.Request) {
Memo: f.Memo,
AmountAvailable: f.AmountAvailable,
MinContribution: f.MinContribution,
Title: f.Title,
Description: f.Description,
TelegramLink: f.TelegramLink,
Bonuses: f.Bonuses,
})
}

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in GetRewardFunds call")
}
}



+ 11
- 4
endpoints/login.go Näytä tiedosto

@@ -8,6 +8,7 @@ import (
"github.com/golang-jwt/jwt/v4"
"github.com/imosed/signet/auth"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
)

@@ -19,7 +20,8 @@ func Login(w http.ResponseWriter, r *http.Request) {
var req AuthenticationRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Failed to decode body in login attempt")
return
}

var userData struct {
@@ -34,11 +36,15 @@ func Login(w http.ResponseWriter, r *http.Request) {
var passwordMatches bool
passwordMatches, err = ComparePasswordAndHash(req.Password, userData.Password)
if err != nil {
panic("Could not compare password to hash")
log.Error().Err(err).Msg("Could not compare password to hash in login attempt")
return
}
if !passwordMatches {
resp.Token = nil
err = json.NewEncoder(w).Encode(resp)
if err != nil {
log.Error().Err(err).Msg("Failed to deliver failed login attempt response")
}
return
}

@@ -53,12 +59,13 @@ func Login(w http.ResponseWriter, r *http.Request) {
secret := viper.GetString("app.secretKey")
tokenString, err := token.SignedString([]byte(secret))
if err != nil {
panic("Could not generate JWT token")
log.Error().Err(err).Msg("Could not generate JWT token")
return
}
resp.Token = &tokenString

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in Login call")
}
}

+ 9
- 5
endpoints/register.go Näytä tiedosto

@@ -12,6 +12,7 @@ import (

"github.com/imosed/signet/auth"
. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
"golang.org/x/crypto/argon2"
)
@@ -127,13 +128,15 @@ func Register(w http.ResponseWriter, r *http.Request) {
var req AuthenticationRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in Register call")
return
}

var claims *auth.Claims
claims, err = auth.GetUserClaims(r)
if err != nil {
panic("Could not determine if user is authenticated")
log.Error().Err(err).Msg("Could not determine if user is authenticated")
return
}

if noUsersRegistered() || claims.Privileges <= AdminPlus {
@@ -145,7 +148,8 @@ func Register(w http.ResponseWriter, r *http.Request) {
KeyLength: uint32(viper.GetInt("hashing.keyLength")),
})
if err != nil {
panic("Could not generate hash for registration")
log.Error().Err(err).Msg("Could not generate hash for registration")
return
}

Db.Create(&User{
@@ -156,12 +160,12 @@ func Register(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(SuccessResponse{Success: true})
if err != nil {
panic("Could not deliver successful account creation response")
log.Error().Err(err).Msg("Could not deliver successful account creation response")
}
} else if !noUsersRegistered() {
err = json.NewEncoder(w).Encode(SuccessResponse{Success: false})
if err != nil {
panic("Could not deliver unsuccessful account creation response")
log.Error().Err(err).Msg("Could not deliver unsuccessful account creation response")
}
} else if claims.Privileges > SuperUser {
w.WriteHeader(403)


+ 5
- 4
endpoints/submitfund.go Näytä tiedosto

@@ -6,6 +6,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
"github.com/stellar/go/clients/horizonclient"
"github.com/stellar/go/protocols/horizon"
)
@@ -20,7 +21,7 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) {
var req SubmitFundRequest
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
panic("Could not decode body")
log.Error().Err(err).Msg("Could not decode body in SubmitFund call")
}

var fund RewardFund
@@ -71,12 +72,12 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) {
// },
// })
// if err != nil {
// panic("Could not submit reward fund")
// log.Error().Err(err).Msg("Could not submit reward fund")
// }
//
// tx, err = tx.Sign(network.TestNetworkPassphrase, source)
// if err != nil {
// panic("Could not submit fund")
// log.Error().Err(err).Msg("Could not submit fund")
// }
//
// var response horizon.Transaction
@@ -87,6 +88,6 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) {

err = json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in SubmitFund call")
}
}

+ 2
- 1
endpoints/users.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
"net/http"

. "github.com/imosed/signet/data"
"github.com/rs/zerolog/log"
)

func UsersExist(w http.ResponseWriter, _ *http.Request) {
@@ -16,6 +17,6 @@ func UsersExist(w http.ResponseWriter, _ *http.Request) {

err := json.NewEncoder(w).Encode(resp)
if err != nil {
panic("Could not deliver response")
log.Error().Err(err).Msg("Could not deliver response in UsersExist call")
}
}

+ 1
- 7
go.mod Näytä tiedosto

@@ -6,7 +6,7 @@ require (
github.com/golang-jwt/jwt/v4 v4.4.3
github.com/gorilla/mux v1.8.0
github.com/gorilla/websocket v1.5.0
github.com/pdrum/swagger-automation v0.0.0-20190629163613-c8c7c80ba858
github.com/rs/zerolog v1.15.0
github.com/spf13/viper v0.0.0-20150621231900-db7ff930a189
github.com/stellar/go v0.0.0-20221028081946-9308f9531041
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
@@ -34,12 +34,8 @@ require (
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/kr/pretty v0.1.0 // indirect
github.com/kr/text v0.1.0 // indirect
github.com/labstack/echo v3.3.10+incompatible // indirect
github.com/labstack/gommon v0.2.9 // indirect
github.com/magiconair/properties v1.5.4 // indirect
github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739 // indirect
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/mattn/go-isatty v0.0.12 // indirect
github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
@@ -51,8 +47,6 @@ require (
github.com/stellar/go-xdr v0.0.0-20211103144802-8017fc4bdfee // indirect
github.com/stretchr/objx v0.4.0 // indirect
github.com/stretchr/testify v1.8.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.0.1 // indirect
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect
golang.org/x/text v0.3.7 // indirect
gopkg.in/yaml.v2 v2.2.8 // indirect


+ 1
- 16
go.sum Näytä tiedosto

@@ -12,7 +12,6 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/fatih/structs v1.0.0 h1:BrX964Rv5uQ3wwS+KRUAJCBBw5PQmgJfJ6v4yly5QwU=
github.com/gavv/monotime v0.0.0-20161010190848-47d58efa6955 h1:gmtGRvSexPU4B1T/yYo0sLOKzER1YT+b4kPxPpm0Ty4=
github.com/go-chi/chi v4.0.3+incompatible h1:gakN3pDJnzZN5jqFV2TEdF66rTfKeITyR8qu6ekICEY=
@@ -99,10 +98,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=
github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s=
github.com/labstack/gommon v0.2.9 h1:heVeuAYtevIQVYkGj6A41dtfT91LrvFG220lavpWhrU=
github.com/labstack/gommon v0.2.9/go.mod h1:E8ZTmW9vw5az5/ZyHWCp0Lw4OH2ecsaBP1C/NKavGG4=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -113,21 +108,15 @@ github.com/magiconair/properties v1.5.4/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP
github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739 h1:ykXz+pRRTibcSjG1yRhpdSHInF8yZY/mfn+Rz2Nd1rE=
github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739/go.mod h1:zUx1mhth20V3VKgL5jbd1BSQcW4Fy6Qs4PZvQwRFwzM=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366 h1:1ypTpKUfEOyX1YsJru6lLq7hrmK+QGECpJQ1PHUHuGo=
github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/moul/http2curl v0.0.0-20161031194548-4e24498b31db h1:eZgFHVkk9uOTaOQLC6tgjkzdp7Ays8eEVecBcfHZlJQ=
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
github.com/pdrum/swagger-automation v0.0.0-20190629163613-c8c7c80ba858 h1:lgbJiJQx8bXo+eM88AFdd0VxUvaTLzCBXpK+H9poJ+Y=
github.com/pdrum/swagger-automation v0.0.0-20190629163613-c8c7c80ba858/go.mod h1:y02HeaN0visd95W6cEX2NXDv5sCwyqfzucWTdDGEwYY=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -136,6 +125,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
github.com/rs/zerolog v1.15.0 h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=
github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/segmentio/go-loggly v0.5.1-0.20171222203950-eb91657e62b2 h1:S4OC0+OBKz6mJnzuHioeEat74PuQ4Sgvbf8eus695sc=
@@ -173,10 +163,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.34.0 h1:d3AAQJ2DRcxJYHm7OXNXtXt2as1vMDfxeIcFvhmGGm4=
github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/xdrpp/goxdr v0.1.1 h1:E1B2c6E8eYhOVyd7yEpOyopzTPirUeF6mVOfXfGyJyc=
github.com/xeipuuv/gojsonpointer v0.0.0-20151027082146-e0fe6f683076 h1:KM4T3G70MiR+JtqplcYkNVoNz7pDwYaBxWBXQK804So=
github.com/xeipuuv/gojsonreference v0.0.0-20150808065054-e02fc20de94c h1:XZWnr3bsDQWAZg4Ne+cPoXRPILrNlPNQfxBuwLl43is=
@@ -199,7 +186,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -227,7 +213,6 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=


+ 6
- 2
main.go Näytä tiedosto

@@ -7,6 +7,8 @@ import (
"github.com/gorilla/mux"
"github.com/imosed/signet/data"
"github.com/imosed/signet/endpoints"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
)

@@ -19,9 +21,11 @@ func main() {
viper.SetConfigFile("config.production.json")
err = viper.ReadInConfig()
if err != nil {
panic("Could not read in Viper config")
log.Error().Err(err).Msg("Could not read in Viper config")
}

zerolog.TimeFieldFormat = zerolog.TimeFormatUnix

data.InitializeDatabase()

go endpoints.InitializeContributionStreams()
@@ -48,6 +52,6 @@ func main() {
fmt.Printf("Running on port %d...\n", port)
err = http.ListenAndServe(fmt.Sprintf(":%d", port), router)
if err != nil {
panic(fmt.Sprintf("Could not bind to port %d", port))
log.Error().Err(err).Msg(fmt.Sprintf("Could not bind to port %d", port))
}
}

Ladataan…
Peruuta
Tallenna