const getTokenDetails = (
snCreds: Pick<
Schema.Schema.Type<typeof SolarNetworkCredentials>,
"host" | "token" | "secret"
>,
) =>
Effect.gen(function* () {
const request = HttpClientRequest.get(SOLAR_USER_AUTH_TOKEN_URL).pipe(
HttpClientRequest.setUrlParam("identifier", snCreds.token),
);
const requestUrl = request.url // doesnt give full url with queryStringParameters
return yield* buildSolarNetworkHeaders(snCreds, requestUrl).pipe(
Effect.flatMap(({ headers, url }) => client.get(url, { headers })),
Effect.flatMap(HttpClientResponse.filterStatusOk),
Effect.flatMap(
HttpClientResponse.schemaBodyJson(AuthTokensResponseSchema),
),
Effect.map((response) => response.data.results),
Effect.flatMap(A.head),
);
}).pipe(Effect.withSpan("solar-network:getTokenDetails"));
const getTokenDetails = (
snCreds: Pick<
Schema.Schema.Type<typeof SolarNetworkCredentials>,
"host" | "token" | "secret"
>,
) =>
Effect.gen(function* () {
const request = HttpClientRequest.get(SOLAR_USER_AUTH_TOKEN_URL).pipe(
HttpClientRequest.setUrlParam("identifier", snCreds.token),
);
const requestUrl = request.url // doesnt give full url with queryStringParameters
return yield* buildSolarNetworkHeaders(snCreds, requestUrl).pipe(
Effect.flatMap(({ headers, url }) => client.get(url, { headers })),
Effect.flatMap(HttpClientResponse.filterStatusOk),
Effect.flatMap(
HttpClientResponse.schemaBodyJson(AuthTokensResponseSchema),
),
Effect.map((response) => response.data.results),
Effect.flatMap(A.head),
);
}).pipe(Effect.withSpan("solar-network:getTokenDetails"));