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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
 }