def all.go

bend-kit-sigv4@0.11.0.1 · sigv4.bend:1182

import bend-kit-sigv4@0.11.0.1/sigv4.bend as Sigv4
import Base

1182# f: pages left. When they run out, next holds the token to go on from.
1183def all.go(f: Nat, +bucket: String, +prefix: String, +delim: String, +max: U32, objs: List<&2, Object>, pre: List<&2, String>,
1184    x: Client & Result<&1, &1, Err, Page>) -> IO(Client & Result<&1, &1, Err, Page>):
1185  match f:
1186    case 0n:
1187      (c, r) = x
1188      IO.pure(Client & Result<&1, &1, Err, Page>, (c, all.merge(objs, pre, r)))
1189    case 1n+g:
1190      (c, r) = x
1191      match r:
1192        case Fail{e}:
1193          IO.pure(Client & Result<&1, &1, Err, Page>, (c, Fail{e}))
1194        case Done{Page{os, ps, next}}:
1195          match next:
1196            case None{}:
1197              IO.pure(Client & Result<&1, &1, Err, Page>, (c, Done{Page{List.append(&2, Object, objs, os), List.append(&2, String, pre, ps), None{}}}))
1198            case Some{tok}:
1199              do IO<Client & Result<&1, &1, Err, Page>>:
1200                y : Client & Result<&1, &1, Err, Page> <- list(c, bucket, prefix, delim, max, Some{tok})
1201                all.go(g, bucket, prefix, delim, max, List.append(&2, Object, objs, os), List.append(&2, String, pre, ps), y)

Uses (18)

Used by (1)