Пример #1
0
 public void Validate(BaseApiRequest baseRequest)
 {
     // safe to cast here
     var request = (SomeDataRequest)baseRequest;
     // validate and throw exception if something is wrong
     // no reason to validate when we already started processing
 }
Пример #2
0
        /// <summary>
        /// A general API call for all calls. TResponse can be <typeparamref name="System.Dynamic"/> for
        /// dynamic typed.
        /// </summary>
        public async Task <TResponse> ExecuteGetApiAsync <TResponse>(BaseApiRequest request)
        {
            var restRequest = this.CreateRequest(request.RestUrl, Method.GET);

            var properties = request.GetType().GetProperties();

            foreach (var property in properties)
            {
                var propertyValue = property.GetValue(request);

                if (propertyValue != null)
                {
                    var jsonAttribute = property
                                        .GetCustomAttributes(typeof(JsonPropertyAttribute), false)
                                        .FirstOrDefault() as JsonPropertyAttribute;

                    var name = jsonAttribute == null ? property.Name : jsonAttribute.PropertyName;

                    restRequest.AddQueryParameter(name, propertyValue.ToString());
                }
            }

            var response = await this.RestClient.ExecuteTaskAsync(restRequest);

            response.EnsureStatus(System.Net.HttpStatusCode.OK);

            var result = JsonConvert.DeserializeObject <TResponse>(response.Content);

            return(result);
        }
Пример #3
0
 private static async Task <HttpResponseMessage> GetAsync(string endpoint, BaseApiRequest request)
 {
     using (var client = Http.GetClient(request))
     {
         return(await client.GetAsync(endpoint));
     }
 }
Пример #4
0
 private static HttpResponseMessage Get(string endpoint, BaseApiRequest request)
 {
     using (var client = Http.GetClient(request))
     {
         return(client.GetAsync(endpoint).Result);
     }
 }
Пример #5
0
 private static async Task <HttpResponseMessage> PutAsync(string endpoint, BaseApiRequest request, string content)
 {
     using (var client = Http.GetClient(request))
     {
         return(await client.PutAsync(endpoint, new StringContent(content, Encoding.UTF8, "application/json")));
     }
 }
Пример #6
0
 private static HttpResponseMessage Post(string endpoint, BaseApiRequest request, string content)
 {
     using (var client = Http.GetClient(request))
     {
         return(client.PostAsync(endpoint, new StringContent(content, Encoding.UTF8, "application/json")).Result);
     }
 }
Пример #7
0
    public void Process(BaseApiRequest baseRequest)
    {
        // safe to cast here
        var request = (SomeDataRequest)baseRequest;

        // do processing
        request.SetResult(1);
    }
Пример #8
0
        private static void AppendUser(BaseApiRequest model, ModelBindingContext bindingContext)
        {
            if (bindingContext.HttpContext.Items.ContainsKey("User"))
            {
                model.User = (UserDto)bindingContext.HttpContext.Items["User"];
            }

            model.UserId = model?.User?.UserId ?? 0;
        }
 public void StartProcessing(BaseApiRequest request)
 {
     if (_handlers.ContainsKey(request.GetType()))
     {
         throw new Exception("No handlers registered for request type " + request.GetType());
     }
     // validate synchronously
     _handlers[request.GetType()].Validate(request);
     _requests.Add(request);
 }
Пример #10
0
        public static async Task <T> PutAsync <T>(string endpoint, BaseApiRequest request, object content) where T : BaseApiResponse, new()
        {
            var message = await PutAsync(endpoint, request, Convert.SerializeObject(content));

            if (Http.IsValidStatusCode(message.StatusCode))
            {
                return(await Convert.DeserializeMessageAsync <T>(message));
            }

            throw new ApiException(message);
        }
Пример #11
0
        public static async Task <T> GetAsync <T>(string endpoint, BaseApiRequest request = null) where T : BaseApiResponse, new()
        {
            var message = await GetAsync(endpoint, request);

            if (Http.IsValidStatusCode(message.StatusCode))
            {
                return(await Convert.DeserializeMessageAsync <T>(message));
            }

            throw new ApiException(message);
        }
Пример #12
0
        public static T Get <T>(string endpoint, BaseApiRequest request) where T : BaseApiResponse, new()
        {
            var message = Get(endpoint, request);

            if (Http.IsValidStatusCode(message.StatusCode))
            {
                return(Convert.DeserializeMessageAsync <T>(message).Result);
            }

            throw new ApiException(message);
        }
Пример #13
0
        public void TestUrlBuilderGenerationWithoutQueryParameters()
        {
            const string schema   = "http";
            const string domain   = "pr0gramm.com";
            const string endpoint = "/api/endpoint";

            var request   = new BaseApiRequest(schema, domain, endpoint);
            var urlResult = Pr0grammUrlBuilder.BuildHttpGetUrl(request);

            urlResult.IsSuccess.ShouldBeTrue();
            urlResult.Value.ShouldContain(request.ApiDomain);
            urlResult.Value.ShouldContain(request.ApiEndpoint);
            urlResult.Value.ShouldStartWith(request.ApiScheme);
            urlResult.Value.ShouldBe($"{schema}://{domain}{endpoint}");
        }
Пример #14
0
        internal static HttpClient GetClient(BaseApiRequest request)
        {
            // ReSharper disable once UseObjectOrCollectionInitializer
            var client = new HttpClient(new HttpClientHandler {
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            });

            //client.Timeout = TimeSpan.FromSeconds(Settings.Current.Service.Timeout);
            client.BaseAddress = new Uri(request.BaseUrl);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            if (!string.IsNullOrWhiteSpace(request?.ApiKey))
            {
                client.DefaultRequestHeaders.Add("X-Api-Key", request.ApiKey);
            }

            return(client);
        }
 //Adds a new call to the API queue to get the users list
 public static void GetHelpScoutUserList(UserListViewModel viewModel)
 {
     userListCallbackHandler = new ViewModelUserListCallback(viewModel.RecieveHelpScoutUserList); //Sets teh delegate for the viewmodel callback
     BaseApiRequest<Paged<HelpScoutNet.Model.User>> apiRequest = new BaseApiRequest<Paged<HelpScoutNet.Model.User>>(APICallType.ListUsers);
     apiRequest.ResultReady += AcceptHelpScoutUserList;
     apiRequest.resultsFailedHandler = new BaseAPIRequest.ResultsFailed(viewModel.FailedToRetrieveHelpScoutUsersList);
     HelpScoutRequestManager.NewQueueItem(apiRequest);
 }
 private static void RecieveTeamOverallStat(object sender, BaseApiRequest<TeamReport>.ResultReadyEventArgs<TeamReport> e)
 {
     throw new NotImplementedException();
 }
 public async static Task ListUsers(BaseApiRequest<Paged<HelpScoutNet.Model.User>> request)
 {
     //logger.Log(LogLevel.Debug, "Attempting To Retrieve HelpScout Users List");
     //request.SetResult(client.ListUsers());
     Paged<HelpScoutNet.Model.User> result = await client.ListUsers();
     request.SetResult(result);
     logger.Log(LogLevel.Debug, "Sucessfully Retrieved HelpScout Users List");
 }
Пример #18
0
 private void TestCallBack(object sender, BaseApiRequest<Paged<HelpScoutNet.Model.User>>.ResultReadyEventArgs<Paged<HelpScoutNet.Model.User>> e)
 {
 }
 //Recieves the callback from the helpscout queue with the data
 private static void AcceptHelpScoutUserList(object sender, BaseApiRequest<Paged<HelpScoutNet.Model.User>>.ResultReadyEventArgs<Paged<HelpScoutNet.Model.User>> e)
 {
     List<DataTypes.User> usersToReturn = new List<DataTypes.User>();
     foreach (HelpScoutNet.Model.User userItem in e.Result.Items)
     {
         usersToReturn.Add(new HelpScoutMetrics.Model.DataTypes.User() { Name = userItem.FirstName + " " + userItem.LastName, ID = userItem.Id, Valid = true });
     }
     userListCallbackHandler(usersToReturn);
 }
 public void SetJwtUidAndRole <T>(BaseApiRequest <T> request) where T : IApiResponse
 {
     request.JwtUid  = Convert.ToInt32(HttpContext.Session.GetString("uid"));
     request.JwtRole = HttpContext.Session.GetString("role");
 }