public IEnumerable <T> Execute <T>(StackExchangeResourceEnum stackExchangeResourceEnum, List <object> parameters, Dictionary <string, object> data)
        {
            var resource = _stackExchangeResourceFactory.FetchResource(stackExchangeResourceEnum, parameters);
            var client   = _restSharpWrapper.CreateRestClient(_url);
            var request  = _restSharpWrapper.CreateRestRequest(resource);
            var filter   = _stackExchangeFilterCreator.CreateFilter();

            request.AddParameter("filter", filter);
            request.AddParameter("key", _key);
            request.AddParameter("site", _site);

            if (data != null && data.Keys.Any())
            {
                foreach (var dataItem in data)
                {
                    request.AddParameter(dataItem.Key, dataItem.Value);
                }
            }

            var response = client.Execute <ItemResponseDto <T> >(request);

            if (response?.Data == null || response.Data.QuotaRemaining == 0)
            {
                return(null);
            }

            return(response.Data.Items);
        }
예제 #2
0
        public string FetchResource(StackExchangeResourceEnum stackExchangeResourceEnum, List <object> parameters)
        {
            switch (stackExchangeResourceEnum)
            {
            case StackExchangeResourceEnum.GetQuestions:
                return("questions");

            case StackExchangeResourceEnum.LookupQuestions:
                return($"questions/{parameters[0]}");

            case StackExchangeResourceEnum.GetQuestionAnswers:
                return($"questions/{parameters[0]}/answers");

            case StackExchangeResourceEnum.CreateFilter:
                return("filters/create");

            default:
                throw new ArgumentOutOfRangeException(nameof(stackExchangeResourceEnum), stackExchangeResourceEnum, null);
            }
        }
예제 #3
0
 public string FetchResource(StackExchangeResourceEnum stackExchangeResourceEnum)
 {
     return(FetchResource(stackExchangeResourceEnum, null));
 }
 public IEnumerable <T> Execute <T>(StackExchangeResourceEnum stackExchangeResourceEnum)
 {
     return(Execute <T>(stackExchangeResourceEnum, null, null));
 }
 public IEnumerable <T> Execute <T>(StackExchangeResourceEnum stackExchangeResourceEnum, List <object> parameters)
 {
     return(Execute <T>(stackExchangeResourceEnum, parameters, null));
 }
 public IEnumerable <T> Execute <T>(StackExchangeResourceEnum stackExchangeResourceEnum, Dictionary <string, object> data)
 {
     return(Execute <T>(stackExchangeResourceEnum, null, data));
 }