Skip to content

Commit 203fd0e

Browse files
committed
Update arc-broadcaster
1 parent 5d90f25 commit 203fd0e

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

transaction/broadcaster/arc.go

+39-19
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,32 @@ import (
1717
type ArcStatus string
1818

1919
const (
20-
RECEIVED ArcStatus = "2"
21-
STORED ArcStatus = "3"
22-
ANNOUNCED_TO_NETWORK ArcStatus = "4"
23-
REQUESTED_BY_NETWORK ArcStatus = "5"
24-
SENT_TO_NETWORK ArcStatus = "6"
25-
ACCEPTED_BY_NETWORK ArcStatus = "7"
26-
SEEN_ON_NETWORK ArcStatus = "8"
20+
REJECTED ArcStatus = "REJECTED"
21+
QUEUED ArcStatus = "QUEUED"
22+
RECEIVED ArcStatus = "RECEIVED"
23+
STORED ArcStatus = "STORED"
24+
ANNOUNCED_TO_NETWORK ArcStatus = "ANNOUNCED_TO_NETWORK"
25+
REQUESTED_BY_NETWORK ArcStatus = "REQUESTED_BY_NETWORK"
26+
SENT_TO_NETWORK ArcStatus = "SENT_TO_NETWORK"
27+
ACCEPTED_BY_NETWORK ArcStatus = "ACCEPTED_BY_NETWORK"
28+
SEEN_ON_NETWORK ArcStatus = "SEEN_ON_NETWORK"
2729
)
2830

2931
type Arc struct {
30-
ApiUrl string
31-
ApiKey string
32-
CallbackUrl *string
33-
CallbackToken *string
34-
FullStatusUpdates bool
35-
MaxTimeout *int
36-
SkipFeeValidation bool
37-
SkipScriptValidation bool
38-
SkipTxValidation bool
39-
WaitForStatus ArcStatus
40-
Client HTTPClient // Added for testing
32+
ApiUrl string
33+
ApiKey string
34+
CallbackUrl *string
35+
CallbackToken *string
36+
CallbackBatch bool
37+
FullStatusUpdates bool
38+
MaxTimeout *int
39+
SkipFeeValidation bool
40+
SkipScriptValidation bool
41+
SkipTxValidation bool
42+
CumulativeFeeValidation bool
43+
WaitForStatus string
44+
WaitFor ArcStatus
45+
Client HTTPClient // Added for testing
4146
}
4247

4348
type ArcResponse struct {
@@ -109,6 +114,9 @@ func (a *Arc) Broadcast(t *transaction.Transaction) (*transaction.BroadcastSucce
109114
if a.CallbackToken != nil {
110115
req.Header.Set("X-CallbackToken", *a.CallbackToken)
111116
}
117+
if a.CallbackBatch {
118+
req.Header.Set("X-CallbackBatch", "true")
119+
}
112120
if a.FullStatusUpdates {
113121
req.Header.Set("X-FullStatusUpdates", "true")
114122
}
@@ -124,8 +132,14 @@ func (a *Arc) Broadcast(t *transaction.Transaction) (*transaction.BroadcastSucce
124132
if a.SkipTxValidation {
125133
req.Header.Set("X-SkipTxValidation", "true")
126134
}
135+
if a.CumulativeFeeValidation {
136+
req.Header.Set("X-CumulativeFeeValidation", "true")
137+
}
127138
if a.WaitForStatus != "" {
128-
req.Header.Set("X-WaitForStatus", string(a.WaitForStatus))
139+
req.Header.Set("X-WaitForStatus", a.WaitForStatus)
140+
}
141+
if a.WaitFor != "" {
142+
req.Header.Set("X-WaitFor", string(a.WaitFor))
129143
}
130144

131145
resp, err := a.Client.Do(req)
@@ -159,6 +173,12 @@ func (a *Arc) Broadcast(t *transaction.Transaction) (*transaction.BroadcastSucce
159173
}
160174
}
161175

176+
if response.TxStatus != nil && *response.TxStatus == REJECTED {
177+
return nil, &transaction.BroadcastFailure{
178+
Code: "400",
179+
Description: response.ExtraInfo,
180+
}
181+
}
162182
if response.Status == 200 {
163183
return &transaction.BroadcastSuccess{
164184
Txid: response.Txid,

0 commit comments

Comments
 (0)