Skip to content

Commit af23d85

Browse files
committed
fix: set response content-type to application/json, fixes #59
Signed-off-by: Chris Gianelloni <[email protected]>
1 parent 4dab402 commit af23d85

File tree

3 files changed

+16
-32
lines changed

3 files changed

+16
-32
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module github.com/cloudstruct/go-cardano-submit-api
22

3-
go 1.17
3+
go 1.18
44

55
require (
66
github.com/Bitrue-exchange/libada-go v0.0.1-rc.0.20220817020305-79d8b4c4dd9c
77
github.com/cloudstruct/go-cardano-ledger v0.2.1
8-
github.com/cloudstruct/go-ouroboros-network v0.16.1
8+
github.com/cloudstruct/go-ouroboros-network v0.17.0
99
github.com/fxamacker/cbor/v2 v2.4.0
1010
github.com/gin-contrib/zap v0.0.2
1111
github.com/gin-gonic/gin v1.8.1

go.sum

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,10 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR
6161
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
6262
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
6363
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
64-
github.com/cloudstruct/go-cardano-ledger v0.1.0/go.mod h1:EBB9JG+3nBs3IV0p751yz1468XYkzJce1/A2X+xH8L8=
6564
github.com/cloudstruct/go-cardano-ledger v0.2.1 h1:J5DAs5GiP4iROwnukEgQhRdSh94cFFGifjnFNnFBSgU=
6665
github.com/cloudstruct/go-cardano-ledger v0.2.1/go.mod h1:EBB9JG+3nBs3IV0p751yz1468XYkzJce1/A2X+xH8L8=
67-
github.com/cloudstruct/go-ouroboros-network v0.16.1 h1:iAYviR5keS3/rbAnJp2slXsTcEAE04ut8WDcRYzK6qM=
68-
github.com/cloudstruct/go-ouroboros-network v0.16.1/go.mod h1:/Rz+GYS+ItV7e5F4rXfZuCVuHa+SkFfaH3zgqjVN3eI=
66+
github.com/cloudstruct/go-ouroboros-network v0.17.0 h1:BcixGe90SMiL3K3udIImdcNtULEfIYQ46WagxQXHzo8=
67+
github.com/cloudstruct/go-ouroboros-network v0.17.0/go.mod h1:/Rz+GYS+ItV7e5F4rXfZuCVuHa+SkFfaH3zgqjVN3eI=
6968
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
7069
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
7170
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -312,7 +311,6 @@ github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pA
312311
github.com/swaggo/swag v1.8.5 h1:7NgtfXsXE+jrcOwRyiftGKW7Ppydj7tZiVenuRf1fE4=
313312
github.com/swaggo/swag v1.8.5/go.mod h1:jMLeXOOmYyjk8PvHTsXBdrubsNd9gUJTTCzL5iBnseg=
314313
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
315-
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
316314
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
317315
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
318316
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
@@ -325,8 +323,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
325323
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
326324
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
327325
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
328-
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
329-
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
330326
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
331327
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
332328
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -349,9 +345,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
349345
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
350346
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
351347
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
352-
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
353348
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
354-
golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
355349
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d h1:3qF+Z8Hkrw9sOhrFHti9TlB1Hkac1x+DNRkv0XQiFjo=
356350
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
357351
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -385,9 +379,7 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
385379
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
386380
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
387381
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
388-
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
389382
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
390-
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
391383
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
392384
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
393385
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -421,10 +413,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
421413
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
422414
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
423415
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
424-
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
425416
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
426417
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
427-
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
428418
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b h1:ZmngSVLe/wycRns9MKikG9OWIEjGcGAkacif7oYQaUY=
429419
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
430420
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -443,7 +433,6 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
443433
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
444434
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
445435
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
446-
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
447436
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
448437
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
449438
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -487,12 +476,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
487476
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
488477
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
489478
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
490-
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
491479
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
492480
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
493-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
494-
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
495-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
496481
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
497482
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
498483
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -552,7 +537,6 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc
552537
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
553538
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
554539
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
555-
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
556540
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
557541
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
558542
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

internal/api/api.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func handleSubmitTx(c *gin.Context) {
137137
if c.ContentType() != "application/cbor" {
138138
// Log the error, return an error to the user, and increment failed count
139139
logger.Errorf("invalid request body, should be application/cbor")
140-
c.String(415, "invalid request body, should be application/cbor")
140+
c.Data(415, "application/json", []byte("invalid request body, should be application/cbor"))
141141
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
142142
return
143143
}
@@ -146,7 +146,7 @@ func handleSubmitTx(c *gin.Context) {
146146
if err != nil {
147147
// Log the error, return an error to the user, and increment failed count
148148
logger.Errorf("failed to read request body: %s", err)
149-
c.String(500, "failed to read request body")
149+
c.Data(500, "application/json", []byte("failed to read request body"))
150150
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
151151
return
152152
}
@@ -158,7 +158,7 @@ func handleSubmitTx(c *gin.Context) {
158158
var txUnwrap []cbor.RawMessage
159159
if err := cbor.Unmarshal(txRawBytes, &txUnwrap); err != nil {
160160
logger.Errorf("failed to unwrap transaction CBOR: %s", err)
161-
c.String(400, fmt.Sprintf("failed to unwrap transaction CBOR: %s", err))
161+
c.Data(400, "application/json", []byte(fmt.Sprintf("failed to unwrap transaction CBOR: %s", err)))
162162
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
163163
return
164164
}
@@ -187,21 +187,21 @@ func handleSubmitTx(c *gin.Context) {
187187
}()
188188
if err != nil {
189189
logger.Errorf("failure creating Ouroboros connection: %s", err)
190-
c.String(500, "failure communicating with node")
190+
c.Data(500, "application/json", []byte("failure communicating with node"))
191191
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
192192
return
193193
}
194194
if cfg.Node.Address != "" && cfg.Node.Port > 0 {
195195
if err := oConn.Dial("tcp", fmt.Sprintf("%s:%d", cfg.Node.Address, cfg.Node.Port)); err != nil {
196196
logger.Errorf("failure connecting to node via TCP: %s", err)
197-
c.String(500, "failure communicating with node")
197+
c.Data(500, "application/json", []byte("failure communicating with node"))
198198
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
199199
return
200200
}
201201
} else {
202202
if err := oConn.Dial("unix", cfg.Node.SocketPath); err != nil {
203203
logger.Errorf("failure connecting to node via UNIX socket: %s", err)
204-
c.String(500, "failure communicating with node")
204+
c.Data(500, "application/json", []byte("failure communicating with node"))
205205
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
206206
return
207207
}
@@ -211,7 +211,7 @@ func handleSubmitTx(c *gin.Context) {
211211
err, ok := <-errorChan
212212
if ok {
213213
logger.Errorf("failure communicating with node: %s", err)
214-
c.String(500, "failure communicating with node")
214+
c.Data(500, "application/json", []byte("failure communicating with node"))
215215
_ = ginmetrics.GetMonitor().GetMetric("tx_failure_count").Inc(nil)
216216
doneChan <- true
217217
}
@@ -220,7 +220,7 @@ func handleSubmitTx(c *gin.Context) {
220220
localTxSubmissionCallbackConfig := &localtxsubmission.CallbackConfig{
221221
AcceptTxFunc: func() error {
222222
// Return transaction ID
223-
c.String(202, txIdHex)
223+
c.Data(202, "application/json", []byte(txIdHex))
224224
doneChan <- true
225225
// Increment custom metric
226226
_ = ginmetrics.GetMonitor().GetMetric("tx_submit_count").Inc(nil)
@@ -229,9 +229,9 @@ func handleSubmitTx(c *gin.Context) {
229229
RejectTxFunc: func(reasonCbor []byte) error {
230230
var reason interface{}
231231
if err := cbor.Unmarshal(reasonCbor, &reason); err == nil {
232-
c.String(400, fmt.Sprintf("transaction rejected by node: %v (raw CBOR: %x)", reason, reasonCbor))
232+
c.Data(400, "application/json", []byte(fmt.Sprintf("transaction rejected by node: %v (raw CBOR: %x)", reason, reasonCbor)))
233233
} else {
234-
c.String(400, fmt.Sprintf("transaction rejected by node, but the 'reason' data could not be parsed (raw CBOR: %x)", reasonCbor))
234+
c.Data(400, "application/json", []byte(fmt.Sprintf("transaction rejected by node, but the 'reason' data could not be parsed (raw CBOR: %x)", reasonCbor)))
235235
}
236236
doneChan <- true
237237
// Increment custom metric
@@ -243,13 +243,13 @@ func handleSubmitTx(c *gin.Context) {
243243
// Determine transaction type (era)
244244
txType, err := determineTransactionType(txRawBytes)
245245
if err != nil {
246-
c.String(400, "could not parse transaction to determine type")
246+
c.Data(400, "application/json", []byte("could not parse transaction to determine type"))
247247
return
248248
}
249249
// Submit the transaction
250250
if err := oConn.LocalTxSubmission.SubmitTx(txType, txRawBytes); err != nil {
251251
logger.Errorf("failure submitting transaction: %s", err)
252-
c.String(500, "failure communicating with node")
252+
c.Data(500, "application/json", []byte("failure communicating with node"))
253253
return
254254
}
255255
// Wait for async process to finish

0 commit comments

Comments
 (0)