(methodID: Integration.MethodID, value: Pick<Credential.OAuth, "refresh" | "metadata">)
| 207 | } |
| 208 | |
| 209 | function refresh(methodID: Integration.MethodID, value: Pick<Credential.OAuth, "refresh" | "metadata">) { |
| 210 | return request<TokenResponse>(`${issuer}/oauth/token`, { |
| 211 | method: "POST", |
| 212 | headers: headers("application/x-www-form-urlencoded"), |
| 213 | body: new URLSearchParams({ |
| 214 | grant_type: "refresh_token", |
| 215 | refresh_token: value.refresh, |
| 216 | client_id: clientID, |
| 217 | }).toString(), |
| 218 | }).pipe( |
| 219 | Effect.map((tokens) => { |
| 220 | const next = credential(methodID, tokens) |
| 221 | return Credential.OAuth.make({ ...next, metadata: next.metadata ?? value.metadata }) |
| 222 | }), |
| 223 | ) |
| 224 | } |
| 225 | |
| 226 | function request<A>(url: string, init: RequestInit) { |
| 227 | return Effect.tryPromise({ |
no test coverage detected