Пример #1
0
        public virtual async Task <OfmCollectionQueryResult <TOfmForGet> > GetCollection(TGetCollectionResourceParameters resourceParameters)
        {
            var ofmCollectionQueryResult = new OfmCollectionQueryResult <TOfmForGet>();

            if (resourceParameters == null)
            {
                resourceParameters = new TGetCollectionResourceParameters();
            }

            var stringUri = AppConfiguration.GetValue <string>("FittifyApiBaseUrl") +
                            AppConfiguration.GetValue <string>("MappedFittifyApiActions:" + MappedControllerActionKey)
                            + resourceParameters.ToQueryParameterString();

            var uri = new Uri(
                stringUri
                );

            var httpResponse = await HttpRequestExecuter.GetCollection(uri, AppConfiguration, HttpContextAccessor);

            var contentAsString = await httpResponse.Content.ReadAsStringAsync();

            ofmCollectionQueryResult.HttpStatusCode      = httpResponse.StatusCode;
            ofmCollectionQueryResult.HttpResponseHeaders = httpResponse.Headers.ToList();

            if (!Regex.Match(((int)ofmCollectionQueryResult.HttpStatusCode).ToString(), FittifyRegularExpressions.HttpStatusCodeStartsWith2).Success)
            {
                try
                {
                    ofmCollectionQueryResult.ErrorMessagesPresented =
                        httpResponse.ContentAsType <IReadOnlyDictionary <string, object> >();
                }
                catch (Exception ex)
                {
                    ofmCollectionQueryResult.ErrorMessagesPresented = new Dictionary <string, object>()
                    {
                        { "Exception", contentAsString }
                    };
                    //throw;
                }
            }
            else
            {
                ofmCollectionQueryResult.OfmForGetCollection = httpResponse.ContentAsType <IEnumerable <TOfmForGet> >();
            }

            return(ofmCollectionQueryResult);
        }