@@ -4,6 +4,7 @@ import ( | |||||
"fmt" | "fmt" | ||||
"time" | "time" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/spf13/viper" | "github.com/spf13/viper" | ||||
"gorm.io/driver/postgres" | "gorm.io/driver/postgres" | ||||
"gorm.io/gorm" | "gorm.io/gorm" | ||||
@@ -39,9 +40,8 @@ type RewardFund struct { | |||||
Price float64 `gorm:"type:decimal(19,7)" json:"price"` | Price float64 `gorm:"type:decimal(19,7)" json:"price"` | ||||
AmountAvailable float64 `gorm:"type:decimal(19,7)" json:"amountAvailable"` | AmountAvailable float64 `gorm:"type:decimal(19,7)" json:"amountAvailable"` | ||||
MinContribution float64 `gorm:"type:decimal(19,7)" json:"minContribution"` | MinContribution float64 `gorm:"type:decimal(19,7)" json:"minContribution"` | ||||
TelegramLink string `json:"telegramLink"` | |||||
Contributions []Contribution `json:"contributions"` | Contributions []Contribution `json:"contributions"` | ||||
Title string `gorm:"type:varchar(50)" json:"title"` | |||||
Description string `gorm:"type:text" json:"description"` | |||||
Bonuses []Bonus `json:"bonuses"` | Bonuses []Bonus `json:"bonuses"` | ||||
QueueOrder QueueOrder `json:"queueOrder"` | QueueOrder QueueOrder `json:"queueOrder"` | ||||
} | } | ||||
@@ -81,10 +81,10 @@ func InitializeDatabase() { | |||||
viper.GetString("database.ssl")) | viper.GetString("database.ssl")) | ||||
Db, err = gorm.Open(postgres.Open(dcs), &gorm.Config{}) | Db, err = gorm.Open(postgres.Open(dcs), &gorm.Config{}) | ||||
if err != nil { | 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{}) | err = Db.AutoMigrate(User{}, Queue{}, RewardFund{}, QueueOrder{}, Contribution{}, Bonus{}) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not migrate database") | |||||
log.Error().Err(err).Msg("Could not migrate database") | |||||
} | } | ||||
} | } |
@@ -6,6 +6,7 @@ import ( | |||||
"github.com/imosed/signet/auth" | "github.com/imosed/signet/auth" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
type CloseRewardFundRequest struct { | type CloseRewardFundRequest struct { | ||||
@@ -17,13 +18,15 @@ func CloseRewardFund(w http.ResponseWriter, r *http.Request) { | |||||
var req CloseRewardFundRequest | var req CloseRewardFundRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | 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 | var claims *auth.Claims | ||||
claims, err = auth.GetUserClaims(r) | claims, err = auth.GetUserClaims(r) | ||||
if err != nil { | 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 | var fund RewardFund | ||||
@@ -38,6 +41,6 @@ func CloseRewardFund(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in CloseRewardFund call") | |||||
} | } | ||||
} | } |
@@ -7,6 +7,7 @@ import ( | |||||
"strings" | "strings" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/stellar/go/clients/horizonclient" | "github.com/stellar/go/clients/horizonclient" | ||||
"github.com/stellar/go/keypair" | "github.com/stellar/go/keypair" | ||||
"github.com/stellar/go/network" | "github.com/stellar/go/network" | ||||
@@ -24,7 +25,8 @@ func Contribute(resp http.ResponseWriter, req *http.Request) { | |||||
var cont ContributeRequest | var cont ContributeRequest | ||||
err := json.NewDecoder(req.Body).Decode(&cont) | err := json.NewDecoder(req.Body).Decode(&cont) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not read in contribution") | |||||
log.Error().Err(err).Msg("Could not read in contribution") | |||||
return | |||||
} | } | ||||
var fund RewardFund | 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() { | if cont.Amount < fund.MinContribution || !strings.HasPrefix(cont.PrivateKey, "S") || !fund.DeletedAt.Time.IsZero() { | ||||
err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: false}) | err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: false}) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver unsuccessful contribution response") | |||||
log.Error().Err(err).Msg("Could not deliver unsuccessful contribution response") | |||||
} | } | ||||
return | return | ||||
} | } | ||||
@@ -44,7 +46,8 @@ func Contribute(resp http.ResponseWriter, req *http.Request) { | |||||
var sourceAcct horizon.Account | var sourceAcct horizon.Account | ||||
sourceAcct, err = client.AccountDetail(sourceReq) | sourceAcct, err = client.AccountDetail(sourceReq) | ||||
if err != nil { | 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( | tx, err := txnbuild.NewTransaction( | ||||
@@ -66,18 +69,21 @@ func Contribute(resp http.ResponseWriter, req *http.Request) { | |||||
}, | }, | ||||
}) | }) | ||||
if err != nil { | 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) | tx, err = tx.Sign(network.TestNetworkPassphrase, source) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not sign contribution transaction") | |||||
log.Error().Err(err).Msg("Could not sign contribution transaction") | |||||
return | |||||
} | } | ||||
var response horizon.Transaction | var response horizon.Transaction | ||||
response, err = client.SubmitTransaction(tx) | response, err = client.SubmitTransaction(tx) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not submit contribution transaction") | |||||
log.Error().Err(err).Msg("Could not submit contribution transaction") | |||||
return | |||||
} | } | ||||
fmt.Println("Successful Transaction:") | fmt.Println("Successful Transaction:") | ||||
@@ -89,6 +95,6 @@ func Contribute(resp http.ResponseWriter, req *http.Request) { | |||||
err = json.NewEncoder(resp).Encode(&result) | err = json.NewEncoder(resp).Encode(&result) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not create response for new contribution") | |||||
log.Error().Err(err).Msg("Could not create response for new contribution") | |||||
} | } | ||||
} | } |
@@ -1,13 +1,13 @@ | |||||
package endpoints | package endpoints | ||||
import ( | import ( | ||||
"fmt" | |||||
"net/http" | "net/http" | ||||
"strconv" | "strconv" | ||||
"strings" | "strings" | ||||
"github.com/gorilla/websocket" | "github.com/gorilla/websocket" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/spf13/viper" | "github.com/spf13/viper" | ||||
"github.com/stellar/go/clients/horizonclient" | "github.com/stellar/go/clients/horizonclient" | ||||
"github.com/stellar/go/protocols/horizon" | "github.com/stellar/go/protocols/horizon" | ||||
@@ -36,7 +36,8 @@ func ContributorStream(resp http.ResponseWriter, req *http.Request) { | |||||
var err error | var err error | ||||
wsConn, err = upgrader.Upgrade(resp, req, nil) | wsConn, err = upgrader.Upgrade(resp, req, nil) | ||||
if err != 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()) | tx, err = client.TransactionDetail(payment.GetTransactionHash()) | ||||
if err != nil { | 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) | amt, err = strconv.ParseFloat(payment.Amount, 64) | ||||
if err != nil { | 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 == "" { | if tx.Memo == "" { | ||||
@@ -83,10 +86,10 @@ func InitializeContributionStreams() { | |||||
if wsConn != nil { | if wsConn != nil { | ||||
err = wsConn.WriteJSON(contribution) | err = wsConn.WriteJSON(contribution) | ||||
if err != nil { | if err != nil { | ||||
panic("Unable to write json to contribution stream") | |||||
log.Error().Err(err).Msg("Unable to write json to contribution stream") | |||||
} | } | ||||
} else { | } else { | ||||
fmt.Println("No websocket connections") | |||||
log.Info().Msg("No websocket connections") | |||||
} | } | ||||
Db.Table("contributions").Create(&contribution) | Db.Table("contributions").Create(&contribution) | ||||
@@ -103,7 +106,7 @@ func InitializeContributionStreams() { | |||||
cancellations = append(cancellations, cancellation) | cancellations = append(cancellations, cancellation) | ||||
err = client.StreamOperations(ctx, opReq, contributionUpdateHandler) | err = client.StreamOperations(ctx, opReq, contributionUpdateHandler) | ||||
if err != nil { | if err != nil { | ||||
panic(err.Error()) | |||||
log.Error().Err(err).Msg("Failed to stream contributions from Horizon client") | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
type CreateQueueRequest struct { | type CreateQueueRequest struct { | ||||
@@ -19,7 +20,8 @@ func CreateQueue(w http.ResponseWriter, r *http.Request) { | |||||
var req CreateQueueRequest | var req CreateQueueRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in CreateQueue call") | |||||
return | |||||
} | } | ||||
var specificQueue Queue | var specificQueue Queue | ||||
@@ -41,6 +43,6 @@ func CreateQueue(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in CreateQueue call") | |||||
} | } | ||||
} | } |
@@ -8,6 +8,7 @@ import ( | |||||
"github.com/imosed/signet/auth" | "github.com/imosed/signet/auth" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/stellar/go/clients/horizonclient" | "github.com/stellar/go/clients/horizonclient" | ||||
"github.com/stellar/go/protocols/horizon" | "github.com/stellar/go/protocols/horizon" | ||||
) | ) | ||||
@@ -19,8 +20,7 @@ type CreateRewardFundRequest struct { | |||||
IssuerWallet string `json:"issuerWallet"` | IssuerWallet string `json:"issuerWallet"` | ||||
Memo string `json:"memo"` | Memo string `json:"memo"` | ||||
MinContribution float64 `gorm:"type:decimal(19,7)" json:"minContribution"` | 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"` | QueueID uint `json:"queueID"` | ||||
Bonuses []Bonus `json:"bonuses"` | Bonuses []Bonus `json:"bonuses"` | ||||
} | } | ||||
@@ -34,7 +34,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
dec := json.NewDecoder(req.Body) | dec := json.NewDecoder(req.Body) | ||||
err := dec.Decode(&fund) | err := dec.Decode(&fund) | ||||
if err != nil { | 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 | var bonuses []Bonus | ||||
@@ -48,8 +49,7 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
Price: 0, | Price: 0, | ||||
AmountAvailable: 0, | AmountAvailable: 0, | ||||
MinContribution: fund.MinContribution, | MinContribution: fund.MinContribution, | ||||
Title: fund.Title, | |||||
Description: fund.Description, | |||||
TelegramLink: fund.TelegramLink, | |||||
Contributions: nil, | Contributions: nil, | ||||
} | } | ||||
@@ -70,7 +70,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
op, err := client.Offers(offerReq) | op, err := client.Offers(offerReq) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not get offers") | |||||
log.Error().Err(err).Msg("Could not get offers") | |||||
return | |||||
} | } | ||||
offers := op.Embedded.Records | offers := op.Embedded.Records | ||||
var price float64 | var price float64 | ||||
@@ -78,11 +79,13 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
if len(offers) == 1 { | if len(offers) == 1 { | ||||
price, err = strconv.ParseFloat(op.Embedded.Records[0].Price, 64) | price, err = strconv.ParseFloat(op.Embedded.Records[0].Price, 64) | ||||
if err != nil { | 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) | amt, err = strconv.ParseFloat(op.Embedded.Records[0].Amount, 64) | ||||
if err != nil { | 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.Price = price | ||||
rewardFund.AmountAvailable = amt | rewardFund.AmountAvailable = amt | ||||
@@ -92,7 +95,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
for _, o := range op.Embedded.Records { | for _, o := range op.Embedded.Records { | ||||
parsedAmt, err := strconv.ParseFloat(o.Amount, 64) | parsedAmt, err := strconv.ParseFloat(o.Amount, 64) | ||||
if err != nil { | 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 { | if parsedAmt > maxOffers { | ||||
correctOffer = o | correctOffer = o | ||||
@@ -101,13 +105,14 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
} | } | ||||
price, err = strconv.ParseFloat(correctOffer.Price, 64) | price, err = strconv.ParseFloat(correctOffer.Price, 64) | ||||
if err != nil { | 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 | rewardFund.Price = price | ||||
amt, err = strconv.ParseFloat(correctOffer.Amount, 64) | amt, err = strconv.ParseFloat(correctOffer.Amount, 64) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not parse amount to float") | |||||
log.Error().Err(err).Msg("Could not parse amount to float") | |||||
} | } | ||||
rewardFund.AmountAvailable = amt | rewardFund.AmountAvailable = amt | ||||
} else { | } else { | ||||
@@ -118,7 +123,8 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
var claims *auth.Claims | var claims *auth.Claims | ||||
claims, err = auth.GetUserClaims(req) | claims, err = auth.GetUserClaims(req) | ||||
if err != nil { | 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 { | if claims.Privileges <= Admin { | ||||
@@ -138,7 +144,7 @@ func CreateRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: true}) | err = json.NewEncoder(resp).Encode(&SuccessResponse{Success: true}) | ||||
if err != nil { | 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 { | } else { | ||||
resp.WriteHeader(403) | resp.WriteHeader(403) | ||||
@@ -6,6 +6,7 @@ import ( | |||||
"github.com/imosed/signet/auth" | "github.com/imosed/signet/auth" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
type EscalatePrivilegesRequest struct { | type EscalatePrivilegesRequest struct { | ||||
@@ -16,7 +17,8 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) { | |||||
var req EscalatePrivilegesRequest | var req EscalatePrivilegesRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in EscalatePrivileges call") | |||||
return | |||||
} | } | ||||
var resp SuccessResponse | var resp SuccessResponse | ||||
@@ -32,7 +34,7 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver failed escalate privileges response") | |||||
log.Error().Err(err).Msg("Could not deliver failed escalate privileges response") | |||||
} | } | ||||
return | return | ||||
} | } | ||||
@@ -45,6 +47,6 @@ func EscalatePrivileges(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver successful escalate privileges response") | |||||
log.Error().Err(err).Msg("Could not deliver successful escalate privileges response") | |||||
} | } | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
"strconv" | "strconv" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/stellar/go/clients/horizonclient" | "github.com/stellar/go/clients/horizonclient" | ||||
"github.com/stellar/go/keypair" | "github.com/stellar/go/keypair" | ||||
"github.com/stellar/go/protocols/horizon" | "github.com/stellar/go/protocols/horizon" | ||||
@@ -22,7 +23,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) { | |||||
var req GetBalanceRequest | var req GetBalanceRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | 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 | var kp keypair.KP | ||||
@@ -38,7 +40,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) { | |||||
var acct horizon.Account | var acct horizon.Account | ||||
acct, err = client.AccountDetail(acctReq) | acct, err = client.AccountDetail(acctReq) | ||||
if err != nil { | 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 | var blnce = -1.0 | ||||
@@ -49,7 +52,8 @@ func GetBalance(w http.ResponseWriter, r *http.Request) { | |||||
} | } | ||||
if blnce == -1.0 { | if blnce == -1.0 { | ||||
panic("Could not get XLM balance") | |||||
log.Error().Err(err).Msg("Could not get XLM balance") | |||||
return | |||||
} | } | ||||
var resp GetBalanceResponse | var resp GetBalanceResponse | ||||
@@ -57,6 +61,6 @@ func GetBalance(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in GetBalance call") | |||||
} | } | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
type QueueMember struct { | type QueueMember struct { | ||||
@@ -26,7 +27,8 @@ func GetQueueMembers(w http.ResponseWriter, r *http.Request) { | |||||
var req GetQueueMembersRequest | var req GetQueueMembersRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in GetQueueMembers call") | |||||
return | |||||
} | } | ||||
var members []QueueMember | var members []QueueMember | ||||
@@ -40,6 +42,6 @@ func GetQueueMembers(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in GetQueueMembers call") | |||||
} | } | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
type GetQueuesResponse struct { | type GetQueuesResponse struct { | ||||
@@ -18,6 +19,6 @@ func GetQueues(w http.ResponseWriter, _ *http.Request) { | |||||
err := json.NewEncoder(w).Encode(resp) | err := json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in GetQueues call") | |||||
} | } | ||||
} | } |
@@ -6,6 +6,7 @@ import ( | |||||
"time" | "time" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"gorm.io/gorm/clause" | "gorm.io/gorm/clause" | ||||
) | ) | ||||
@@ -33,7 +34,7 @@ func GetRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
dec := json.NewDecoder(req.Body) | dec := json.NewDecoder(req.Body) | ||||
err := dec.Decode(&requestedFund) | err := dec.Decode(&requestedFund) | ||||
if err != nil { | 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 | 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, | Price: fund.Price, | ||||
AmountAvailable: fund.AmountAvailable, | AmountAvailable: fund.AmountAvailable, | ||||
MinContribution: fund.MinContribution, | MinContribution: fund.MinContribution, | ||||
Title: fund.Title, | |||||
Description: fund.Description, | |||||
TelegramLink: fund.TelegramLink, | |||||
Bonuses: fund.Bonuses, | Bonuses: fund.Bonuses, | ||||
}, | }, | ||||
Contributions: contribs, | Contributions: contribs, | ||||
@@ -75,7 +75,7 @@ func GetRewardFund(resp http.ResponseWriter, req *http.Request) { | |||||
err = json.NewEncoder(resp).Encode(r) | err = json.NewEncoder(resp).Encode(r) | ||||
if err != nil { | 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 | var req GetContributionsRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in GetContributions call") | |||||
return | |||||
} | } | ||||
var resp GetContributionsResponse | 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, err = time.Parse("2006-Jan-02", req.ForDate) | ||||
t = t.Add(time.Hour * 24) | t = t.Add(time.Hour * 24) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not interpret time") | |||||
log.Error().Err(err).Msg("Could not interpret time") | |||||
return | |||||
} | } | ||||
if req.ConsolidateContributions { | if req.ConsolidateContributions { | ||||
baseQuery.Select("wallet, sum(amount) amount").Where("created_at < ?", t).Group("wallet").Scan(&resp.List) | 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) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | 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"` | Price float64 `json:"price"` | ||||
AmountAvailable float64 `json:"amountAvailable"` | AmountAvailable float64 `json:"amountAvailable"` | ||||
MinContribution float64 `json:"minContribution"` | MinContribution float64 `json:"minContribution"` | ||||
Title string `json:"title"` | |||||
Description string `json:"description"` | |||||
TelegramLink string `json:"telegramLink"` | |||||
Bonuses []Bonus `json:"bonuses"` | Bonuses []Bonus `json:"bonuses"` | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
func getQualifiedRewardFunds() []RewardFund { | func getQualifiedRewardFunds() []RewardFund { | ||||
@@ -71,7 +72,8 @@ func GetRewardFunds(w http.ResponseWriter, r *http.Request) { | |||||
var req GetRewardFundsRequest | var req GetRewardFundsRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in GetRewardFunds call") | |||||
return | |||||
} | } | ||||
var resp GetRewardFundsResponse | var resp GetRewardFundsResponse | ||||
@@ -88,15 +90,14 @@ func GetRewardFunds(w http.ResponseWriter, r *http.Request) { | |||||
Memo: f.Memo, | Memo: f.Memo, | ||||
AmountAvailable: f.AmountAvailable, | AmountAvailable: f.AmountAvailable, | ||||
MinContribution: f.MinContribution, | MinContribution: f.MinContribution, | ||||
Title: f.Title, | |||||
Description: f.Description, | |||||
TelegramLink: f.TelegramLink, | |||||
Bonuses: f.Bonuses, | Bonuses: f.Bonuses, | ||||
}) | }) | ||||
} | } | ||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in GetRewardFunds call") | |||||
} | } | ||||
} | } | ||||
@@ -8,6 +8,7 @@ import ( | |||||
"github.com/golang-jwt/jwt/v4" | "github.com/golang-jwt/jwt/v4" | ||||
"github.com/imosed/signet/auth" | "github.com/imosed/signet/auth" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/spf13/viper" | "github.com/spf13/viper" | ||||
) | ) | ||||
@@ -19,7 +20,8 @@ func Login(w http.ResponseWriter, r *http.Request) { | |||||
var req AuthenticationRequest | var req AuthenticationRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Failed to decode body in login attempt") | |||||
return | |||||
} | } | ||||
var userData struct { | var userData struct { | ||||
@@ -34,11 +36,15 @@ func Login(w http.ResponseWriter, r *http.Request) { | |||||
var passwordMatches bool | var passwordMatches bool | ||||
passwordMatches, err = ComparePasswordAndHash(req.Password, userData.Password) | passwordMatches, err = ComparePasswordAndHash(req.Password, userData.Password) | ||||
if err != nil { | 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 { | if !passwordMatches { | ||||
resp.Token = nil | resp.Token = nil | ||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | |||||
log.Error().Err(err).Msg("Failed to deliver failed login attempt response") | |||||
} | |||||
return | return | ||||
} | } | ||||
@@ -53,12 +59,13 @@ func Login(w http.ResponseWriter, r *http.Request) { | |||||
secret := viper.GetString("app.secretKey") | secret := viper.GetString("app.secretKey") | ||||
tokenString, err := token.SignedString([]byte(secret)) | tokenString, err := token.SignedString([]byte(secret)) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not generate JWT token") | |||||
log.Error().Err(err).Msg("Could not generate JWT token") | |||||
return | |||||
} | } | ||||
resp.Token = &tokenString | resp.Token = &tokenString | ||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in Login call") | |||||
} | } | ||||
} | } |
@@ -12,6 +12,7 @@ import ( | |||||
"github.com/imosed/signet/auth" | "github.com/imosed/signet/auth" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/spf13/viper" | "github.com/spf13/viper" | ||||
"golang.org/x/crypto/argon2" | "golang.org/x/crypto/argon2" | ||||
) | ) | ||||
@@ -127,13 +128,15 @@ func Register(w http.ResponseWriter, r *http.Request) { | |||||
var req AuthenticationRequest | var req AuthenticationRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | 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 | var claims *auth.Claims | ||||
claims, err = auth.GetUserClaims(r) | claims, err = auth.GetUserClaims(r) | ||||
if err != nil { | 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 { | if noUsersRegistered() || claims.Privileges <= AdminPlus { | ||||
@@ -145,7 +148,8 @@ func Register(w http.ResponseWriter, r *http.Request) { | |||||
KeyLength: uint32(viper.GetInt("hashing.keyLength")), | KeyLength: uint32(viper.GetInt("hashing.keyLength")), | ||||
}) | }) | ||||
if err != nil { | 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{ | Db.Create(&User{ | ||||
@@ -156,12 +160,12 @@ func Register(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(SuccessResponse{Success: true}) | err = json.NewEncoder(w).Encode(SuccessResponse{Success: true}) | ||||
if err != nil { | 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() { | } else if !noUsersRegistered() { | ||||
err = json.NewEncoder(w).Encode(SuccessResponse{Success: false}) | err = json.NewEncoder(w).Encode(SuccessResponse{Success: false}) | ||||
if err != nil { | 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 { | } else if claims.Privileges > SuperUser { | ||||
w.WriteHeader(403) | w.WriteHeader(403) | ||||
@@ -6,6 +6,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
"github.com/stellar/go/clients/horizonclient" | "github.com/stellar/go/clients/horizonclient" | ||||
"github.com/stellar/go/protocols/horizon" | "github.com/stellar/go/protocols/horizon" | ||||
) | ) | ||||
@@ -20,7 +21,7 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) { | |||||
var req SubmitFundRequest | var req SubmitFundRequest | ||||
err := json.NewDecoder(r.Body).Decode(&req) | err := json.NewDecoder(r.Body).Decode(&req) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not decode body") | |||||
log.Error().Err(err).Msg("Could not decode body in SubmitFund call") | |||||
} | } | ||||
var fund RewardFund | var fund RewardFund | ||||
@@ -71,12 +72,12 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) { | |||||
// }, | // }, | ||||
// }) | // }) | ||||
// if err != nil { | // 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) | // tx, err = tx.Sign(network.TestNetworkPassphrase, source) | ||||
// if err != nil { | // if err != nil { | ||||
// panic("Could not submit fund") | |||||
// log.Error().Err(err).Msg("Could not submit fund") | |||||
// } | // } | ||||
// | // | ||||
// var response horizon.Transaction | // var response horizon.Transaction | ||||
@@ -87,6 +88,6 @@ func SubmitFund(w http.ResponseWriter, r *http.Request) { | |||||
err = json.NewEncoder(w).Encode(resp) | err = json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in SubmitFund call") | |||||
} | } | ||||
} | } |
@@ -5,6 +5,7 @@ import ( | |||||
"net/http" | "net/http" | ||||
. "github.com/imosed/signet/data" | . "github.com/imosed/signet/data" | ||||
"github.com/rs/zerolog/log" | |||||
) | ) | ||||
func UsersExist(w http.ResponseWriter, _ *http.Request) { | func UsersExist(w http.ResponseWriter, _ *http.Request) { | ||||
@@ -16,6 +17,6 @@ func UsersExist(w http.ResponseWriter, _ *http.Request) { | |||||
err := json.NewEncoder(w).Encode(resp) | err := json.NewEncoder(w).Encode(resp) | ||||
if err != nil { | if err != nil { | ||||
panic("Could not deliver response") | |||||
log.Error().Err(err).Msg("Could not deliver response in UsersExist call") | |||||
} | } | ||||
} | } |
@@ -6,7 +6,7 @@ require ( | |||||
github.com/golang-jwt/jwt/v4 v4.4.3 | github.com/golang-jwt/jwt/v4 v4.4.3 | ||||
github.com/gorilla/mux v1.8.0 | github.com/gorilla/mux v1.8.0 | ||||
github.com/gorilla/websocket v1.5.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/spf13/viper v0.0.0-20150621231900-db7ff930a189 | ||||
github.com/stellar/go v0.0.0-20221028081946-9308f9531041 | github.com/stellar/go v0.0.0-20221028081946-9308f9531041 | ||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa | 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/konsorten/go-windows-terminal-sequences v1.0.2 // indirect | ||||
github.com/kr/pretty v0.1.0 // indirect | github.com/kr/pretty v0.1.0 // indirect | ||||
github.com/kr/text 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/magiconair/properties v1.5.4 // indirect | ||||
github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739 // 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/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366 // indirect | ||||
github.com/pkg/errors v0.9.1 // indirect | github.com/pkg/errors v0.9.1 // indirect | ||||
github.com/pmezard/go-difflib v1.0.0 // 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/stellar/go-xdr v0.0.0-20211103144802-8017fc4bdfee // indirect | ||||
github.com/stretchr/objx v0.4.0 // indirect | github.com/stretchr/objx v0.4.0 // indirect | ||||
github.com/stretchr/testify v1.8.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/sys v0.0.0-20220227234510-4e6760a101f9 // indirect | ||||
golang.org/x/text v0.3.7 // indirect | golang.org/x/text v0.3.7 // indirect | ||||
gopkg.in/yaml.v2 v2.2.8 // indirect | gopkg.in/yaml.v2 v2.2.8 // indirect | ||||
@@ -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.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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | 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/fatih/structs v1.0.0 h1:BrX964Rv5uQ3wwS+KRUAJCBBw5PQmgJfJ6v4yly5QwU= | ||||
github.com/gavv/monotime v0.0.0-20161010190848-47d58efa6955 h1:gmtGRvSexPU4B1T/yYo0sLOKzER1YT+b4kPxPpm0Ty4= | github.com/gavv/monotime v0.0.0-20161010190848-47d58efa6955 h1:gmtGRvSexPU4B1T/yYo0sLOKzER1YT+b4kPxPpm0Ty4= | ||||
github.com/go-chi/chi v4.0.3+incompatible h1:gakN3pDJnzZN5jqFV2TEdF66rTfKeITyR8qu6ekICEY= | 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/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 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | 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.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.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | ||||
github.com/lib/pq v1.2.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 h1:ykXz+pRRTibcSjG1yRhpdSHInF8yZY/mfn+Rz2Nd1rE= | ||||
github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739/go.mod h1:zUx1mhth20V3VKgL5jbd1BSQcW4Fy6Qs4PZvQwRFwzM= | 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.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-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.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.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/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 h1:1ypTpKUfEOyX1YsJru6lLq7hrmK+QGECpJQ1PHUHuGo= | ||||
github.com/mitchellh/mapstructure v0.0.0-20150613213606-2caf8efc9366/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | 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/moul/http2curl v0.0.0-20161031194548-4e24498b31db h1:eZgFHVkk9uOTaOQLC6tgjkzdp7Ays8eEVecBcfHZlJQ= | ||||
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= | github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= | ||||
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= | 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.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | 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/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/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.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/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= | ||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= | 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= | 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 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= | ||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | 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 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/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/xdrpp/goxdr v0.1.1 h1:E1B2c6E8eYhOVyd7yEpOyopzTPirUeF6mVOfXfGyJyc= | ||||
github.com/xeipuuv/gojsonpointer v0.0.0-20151027082146-e0fe6f683076 h1:KM4T3G70MiR+JtqplcYkNVoNz7pDwYaBxWBXQK804So= | github.com/xeipuuv/gojsonpointer v0.0.0-20151027082146-e0fe6f683076 h1:KM4T3G70MiR+JtqplcYkNVoNz7pDwYaBxWBXQK804So= | ||||
github.com/xeipuuv/gojsonreference v0.0.0-20150808065054-e02fc20de94c h1:XZWnr3bsDQWAZg4Ne+cPoXRPILrNlPNQfxBuwLl43is= | 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-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-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-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-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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | 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-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-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-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-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-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
@@ -7,6 +7,8 @@ import ( | |||||
"github.com/gorilla/mux" | "github.com/gorilla/mux" | ||||
"github.com/imosed/signet/data" | "github.com/imosed/signet/data" | ||||
"github.com/imosed/signet/endpoints" | "github.com/imosed/signet/endpoints" | ||||
"github.com/rs/zerolog" | |||||
"github.com/rs/zerolog/log" | |||||
"github.com/spf13/viper" | "github.com/spf13/viper" | ||||
) | ) | ||||
@@ -19,9 +21,11 @@ func main() { | |||||
viper.SetConfigFile("config.production.json") | viper.SetConfigFile("config.production.json") | ||||
err = viper.ReadInConfig() | err = viper.ReadInConfig() | ||||
if err != nil { | 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() | data.InitializeDatabase() | ||||
go endpoints.InitializeContributionStreams() | go endpoints.InitializeContributionStreams() | ||||
@@ -48,6 +52,6 @@ func main() { | |||||
fmt.Printf("Running on port %d...\n", port) | fmt.Printf("Running on port %d...\n", port) | ||||
err = http.ListenAndServe(fmt.Sprintf(":%d", port), router) | err = http.ListenAndServe(fmt.Sprintf(":%d", port), router) | ||||
if err != nil { | 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)) | |||||
} | } | ||||
} | } |