Skip to content

Commit 52f22bd

Browse files
committed
Add retract-request command
1 parent c03c3f8 commit 52f22bd

File tree

6 files changed

+100
-75
lines changed

6 files changed

+100
-75
lines changed

cli/src/Anti/API.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Anti.API
55
( api
66
, API
77
, requestChange
8+
, retractRequest
89
, createToken
910
, deleteToken
1011
, getToken
@@ -33,6 +34,10 @@ type API =
3334
:> "request"
3435
:> ReqBody '[JSON] Request
3536
:> Post '[JSON] Value
37+
:<|> "request"
38+
:> Capture "txHash" String
39+
:> Capture "outputIndex" Int
40+
:> Delete '[JSON] Value
3641
:<|> "token"
3742
:> Post '[JSON] Value
3843
:<|> "token"
@@ -57,7 +62,9 @@ createToken :: ClientM Value
5762
deleteToken :: TokenId -> ClientM Value
5863
updateToken :: TokenId -> RequestRefs -> ClientM Value
5964
getToken :: TokenId -> ClientM Value
65+
retractRequest :: [Char] -> Int -> ClientM Value
6066
requestChange
67+
:<|> retractRequest
6168
:<|> createToken
6269
:<|> deleteToken
6370
:<|> getToken

cli/src/Anti/Cli.hs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE DuplicateRecordFields #-}
12
{-# LANGUAGE NamedFieldPuns #-}
23
{-# LANGUAGE OverloadedStrings #-}
34
{-# LANGUAGE RankNTypes #-}
@@ -11,13 +12,15 @@ import Anti.API
1112
, deleteToken
1213
, getToken
1314
, requestChange
15+
, retractRequest
1416
, updateToken
1517
)
1618
import Anti.Types
1719
( Command (..)
1820
, Directory (..)
1921
, Operation (..)
2022
, OracleCommand (..)
23+
, OutputReference (..)
2124
, Platform (..)
2225
, PublicKeyHash (..)
2326
, Repository (..)
@@ -41,17 +44,27 @@ import qualified Data.Text as T
4144
anti :: Command -> ClientM Value
4245
anti command = do
4346
case command of
44-
UserCommand userCommand tk -> case userCommand of
45-
RegisterPublicKey{platform, username, pubkeyhash} ->
46-
manageUser tk platform username pubkeyhash Insert
47-
UnregisterPublicKey{platform, username, pubkeyhash} ->
48-
manageUser tk platform username pubkeyhash Delete
49-
RegisterRole{platform, repository, username, role} ->
50-
manageRole tk platform repository username role Insert
51-
UnregisterRole{platform, repository, username, role} ->
52-
manageRole tk platform repository username role Delete
53-
RequestTest{platform, repository, username, commit, directory} ->
54-
requestTestCLI tk platform repository username commit directory
47+
UserCommand userCommand -> case userCommand of
48+
RegisterPublicKey{platform, username, pubkeyhash, tokenId} ->
49+
manageUser tokenId platform username pubkeyhash Insert
50+
UnregisterPublicKey{platform, username, pubkeyhash, tokenId} ->
51+
manageUser tokenId platform username pubkeyhash Delete
52+
RegisterRole{platform, repository, username, role, tokenId} ->
53+
manageRole tokenId platform repository username role Insert
54+
UnregisterRole{platform, repository, username, role, tokenId} ->
55+
manageRole tokenId platform repository username role Delete
56+
RequestTest
57+
{ platform
58+
, repository
59+
, username
60+
, commit
61+
, directory
62+
, tokenId
63+
} ->
64+
requestTestCLI tokenId platform repository username commit directory
65+
RetractRequest
66+
(OutputReference{outputReferenceTx, outputReferenceIndex}) ->
67+
retractRequest outputReferenceTx outputReferenceIndex
5568
OracleCommand oracleCommand -> case oracleCommand of
5669
CreateToken -> createToken
5770
DeleteToken tk -> deleteToken tk

cli/src/Anti/Options.hs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ requestTestOptions =
100100
<*> commitOption
101101
<*> directoryOption
102102
<*> usernameOption
103+
<*> tokenIdOption
103104

104105
usernameOption :: Parser Username
105106
usernameOption =
@@ -127,13 +128,15 @@ addPublicKeyOptions =
127128
<$> platformOption
128129
<*> usernameOption
129130
<*> pubkeyhashOption
131+
<*> tokenIdOption
130132

131133
removePublicKeyOptions :: Parser UserCommand
132134
removePublicKeyOptions =
133135
UnregisterPublicKey
134136
<$> platformOption
135137
<*> usernameOption
136138
<*> pubkeyhashOption
139+
<*> tokenIdOption
137140

138141
roleOption :: Parser Role
139142
roleOption =
@@ -152,6 +155,7 @@ addRoleOptions =
152155
<*> repositoryOption
153156
<*> roleOption
154157
<*> usernameOption
158+
<*> tokenIdOption
155159

156160
removeRoleOptions :: Parser UserCommand
157161
removeRoleOptions =
@@ -160,6 +164,7 @@ removeRoleOptions =
160164
<*> repositoryOption
161165
<*> roleOption
162166
<*> usernameOption
167+
<*> tokenIdOption
163168

164169
tokenIdOption :: Parser TokenId
165170
tokenIdOption =
@@ -171,6 +176,11 @@ tokenIdOption =
171176
<> help "The token ID"
172177
)
173178

179+
retractRequestOptions :: Parser UserCommand
180+
retractRequestOptions =
181+
RetractRequest
182+
<$> outputReferenceParser
183+
174184
userCommandParser :: Parser UserCommand
175185
userCommandParser =
176186
hsubparser
@@ -204,6 +214,12 @@ userCommandParser =
204214
removeRoleOptions
205215
(progDesc "Remove a user from a repository")
206216
)
217+
<> command
218+
"retract-request"
219+
( info
220+
retractRequestOptions
221+
(progDesc "Retract a request")
222+
)
207223
)
208224

209225
outputReferenceParser :: Parser OutputReference
@@ -273,7 +289,6 @@ commandParser =
273289
( info
274290
( UserCommand
275291
<$> userCommandParser
276-
<*> tokenIdOption
277292
<**> helper
278293
)
279294
(progDesc "Manage users")

cli/src/Anti/Types.hs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,28 +167,36 @@ data UserCommand
167167
, commit :: SHA1
168168
, directory :: Directory
169169
, username :: Username
170+
, tokenId :: TokenId
170171
}
171172
| RegisterPublicKey
172173
{ platform :: Platform
173174
, username :: Username
174175
, pubkeyhash :: PublicKeyHash
176+
, tokenId :: TokenId
175177
}
176178
| UnregisterPublicKey
177179
{ platform :: Platform
178180
, username :: Username
179181
, pubkeyhash :: PublicKeyHash
182+
, tokenId :: TokenId
180183
}
181184
| RegisterRole
182185
{ platform :: Platform
183186
, repository :: Repository
184187
, role :: Role
185188
, username :: Username
189+
, tokenId :: TokenId
186190
}
187191
| UnregisterRole
188192
{ platform :: Platform
189193
, repository :: Repository
190194
, role :: Role
191195
, username :: Username
196+
, tokenId :: TokenId
197+
}
198+
| RetractRequest
199+
{ outputReference :: OutputReference
192200
}
193201
deriving (Eq, Show)
194202

@@ -199,10 +207,7 @@ newtype Host = Host String
199207
deriving (Eq, Show)
200208

201209
data Command
202-
= UserCommand
203-
{ userCommand :: UserCommand
204-
, tokenId :: TokenId
205-
}
210+
= UserCommand UserCommand
206211
| OracleCommand OracleCommand
207212
deriving (Eq, Show)
208213

cli/test/Anti/CliSpec.hs

Lines changed: 39 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{-# LANGUAGE DuplicateRecordFields #-}
2+
23
module Anti.CliSpec
34
( spec
45
, runDummyServer
@@ -22,7 +23,6 @@ import Anti.Types
2223
, TokenId (..)
2324
, UserCommand (..)
2425
, Username (..)
25-
, userCommand
2626
)
2727
import Control.Concurrent (threadDelay)
2828
import Control.Concurrent.Async (async)
@@ -79,18 +79,14 @@ spec = beforeAll_ runDummyServer $ do
7979
, port = Port 8084
8080
, command =
8181
UserCommand
82-
{ userCommand =
83-
RegisterPublicKey
84-
{ platform = Platform "github"
85-
, username = Username "bob"
86-
, pubkeyhash =
87-
PublicKeyHash
88-
"607a0d8a64616a407537edf0d9b59cf4cb509c556f6d2de4250ce15df2"
89-
}
90-
, tokenId =
91-
TokenId
92-
"dummyTokenId"
93-
}
82+
RegisterPublicKey
83+
{ platform = Platform "github"
84+
, username = Username "bob"
85+
, pubkeyhash =
86+
PublicKeyHash
87+
"607a0d8a64616a407537edf0d9b59cf4cb509c556f6d2de4250ce15df2"
88+
, tokenId = TokenId "dummyTokenId"
89+
}
9490
}
9591
anti args
9692
`shouldReturn` (opts, dummyTxId)
@@ -111,18 +107,14 @@ spec = beforeAll_ runDummyServer $ do
111107
, port = Port 8084
112108
, command =
113109
UserCommand
114-
{ userCommand =
115-
UnregisterPublicKey
116-
{ platform = Platform "github"
117-
, username = Username "bob"
118-
, pubkeyhash =
119-
PublicKeyHash
120-
"607a0d8a64616a407537edf0d9b59cf4cb509c556f6d2de4250ce15df2"
121-
}
122-
, tokenId =
123-
TokenId
124-
"dummyTokenId"
125-
}
110+
UnregisterPublicKey
111+
{ platform = Platform "github"
112+
, username = Username "bob"
113+
, pubkeyhash =
114+
PublicKeyHash
115+
"607a0d8a64616a407537edf0d9b59cf4cb509c556f6d2de4250ce15df2"
116+
, tokenId = TokenId "dummyTokenId"
117+
}
126118
}
127119
anti args `shouldReturn` (opts, dummyTxId)
128120

@@ -144,17 +136,13 @@ spec = beforeAll_ runDummyServer $ do
144136
, port = Port 8084
145137
, command =
146138
UserCommand
147-
{ userCommand =
148-
RegisterRole
149-
{ platform = Platform "github"
150-
, repository = Repository "cardano-foundation" "antithesis"
151-
, role = Role "maintainer"
152-
, username = Username "bob"
153-
}
154-
, tokenId =
155-
TokenId
156-
"dummyTokenId"
157-
}
139+
RegisterRole
140+
{ platform = Platform "github"
141+
, repository = Repository "cardano-foundation" "antithesis"
142+
, role = Role "maintainer"
143+
, username = Username "bob"
144+
, tokenId = TokenId "dummyTokenId"
145+
}
158146
}
159147

160148
anti args `shouldReturn` (opts, dummyTxId)
@@ -177,17 +165,13 @@ spec = beforeAll_ runDummyServer $ do
177165
, port = Port 8084
178166
, command =
179167
UserCommand
180-
{ userCommand =
181-
UnregisterRole
182-
{ platform = Platform "github"
183-
, repository = Repository "cardano-foundation" "antithesis"
184-
, role = Role "maintainer"
185-
, username = Username "bob"
186-
}
187-
, tokenId =
188-
TokenId
189-
"dummyTokenId"
190-
}
168+
UnregisterRole
169+
{ platform = Platform "github"
170+
, repository = Repository "cardano-foundation" "antithesis"
171+
, role = Role "maintainer"
172+
, username = Username "bob"
173+
, tokenId = TokenId "dummyTokenId"
174+
}
191175
}
192176

193177
anti args `shouldReturn` (opts, dummyTxId)
@@ -210,17 +194,13 @@ spec = beforeAll_ runDummyServer $ do
210194
, port = Port 8084
211195
, command =
212196
UserCommand
213-
{ userCommand =
214-
RequestTest
215-
{ platform = Platform "github"
216-
, repository = Repository "cardano-foundation" "antithesis"
217-
, username = Username "bob"
218-
, commit = SHA1 "9114528e2343e6fcf3c92de71364275227e6b16d"
219-
, directory = Directory "."
220-
}
221-
, tokenId =
222-
TokenId
223-
"dummyTokenId"
224-
}
197+
RequestTest
198+
{ platform = Platform "github"
199+
, repository = Repository "cardano-foundation" "antithesis"
200+
, username = Username "bob"
201+
, commit = SHA1 "9114528e2343e6fcf3c92de71364275227e6b16d"
202+
, directory = Directory "."
203+
, tokenId = TokenId "dummyTokenId"
204+
}
225205
}
226206
anti args `shouldReturn` (opts, dummyTxId)

cli/test/Anti/Server.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@ appDummy =
1919
serve
2020
api
2121
( postRequestDummy
22+
:<|> retractRequestDummy
2223
:<|> postTokenDummy
2324
:<|> deleteTokenDummy
2425
:<|> getTokenDummy
2526
:<|> updateTokenDummy
2627
)
2728

29+
retractRequestDummy :: [Char] -> Int -> Handler Value
30+
retractRequestDummy _txHash _outputIndex = do
31+
return dummyTxId
32+
2833
updateTokenDummy :: TokenId -> RequestRefs -> Handler Value
2934
updateTokenDummy _ _ = do
3035
return dummyTxId

0 commit comments

Comments
 (0)