private protected new async Task <T?> Load <T>(UriQueryStringBuilder uri, bool hasPayload = true) where T : class, IWiremessagePayload { await Authenticate(); if (!SkipAuthentication()) { var sessionToken = _authData.SessionToken; if (sessionToken is null) { throw new ArgumentException("No session token present for connecting"); } uri = uri.AddQuery("token", sessionToken); } var result = await base.Load <T>(uri, hasPayload); // only touch token if successful if (!SkipAuthentication()) { await _authData.TouchSessionTokenAsync(); } return(result); }
private protected async Task <Wiremessage <T>?> LoadWiremessage <T>(UriQueryStringBuilder uri) where T : class, IWiremessagePayload { var requestUri = await BuildAbsoluteUri(uri); var responseMessage = await _client.GetAsync(requestUri); var responseStream = await responseMessage.Content.ReadAsStreamAsync(); return(await JsonSerializer.DeserializeAsync <Wiremessage <T> >(responseStream, _jsonSerializerOptions)); }
private protected async Task <T> Load <T>(UriQueryStringBuilder uri) where T : class, IWiremessagePayload { var payload = await Load <T>(uri, true); if (payload is null) { throw new IOException("Received ok=true but no result payload could be parsed!"); } return(payload); }
private protected async Task <T?> Load <T>(UriQueryStringBuilder uri, bool hasPayload = true) where T : class, IWiremessagePayload { var responseData = await LoadWiremessage <T>(uri); if (responseData is null) { throw new FormatException("No response data received"); } if (!responseData.Ok) { throw new IOException(string.Format("Received ok=false in DSS API! Message: \"{0}\"", responseData.Message ?? "null")); } if (hasPayload && responseData.Result is null) { throw new IOException("Received ok=true but no result object!"); } return(responseData.Result); }
private protected async Task Load(UriQueryStringBuilder uri) { await Load <VoidPayload>(uri, false); }