コード例 #1
0
        public RestsharpServiceTest()
        {
            fixture = new Fixture();
            token   = fixture.Create <string>();
            pessoas = fixture.CreateMany <Pessoa>().ToList();
            pessoa  = fixture.Create <Pessoa>();

            responsePessoas = new RestResponse <List <Pessoa> >
            {
                Data = pessoas
            };

            responsePessoa = new RestResponse <Pessoa>
            {
                Data = pessoa
            };

            restClient = Substitute.For <IRestClient>();
            restClient.ExecuteAsGet <List <Pessoa> >(Arg.Any <RestRequest>(), Arg.Any <string>()).Returns(responsePessoas);
            restClient.ExecuteAsGet <Pessoa>(Arg.Any <RestRequest>(), Arg.Any <string>()).Returns(responsePessoa);
            restClient.ExecuteGetAsync <List <Pessoa> >(Arg.Any <RestRequest>()).Returns(responsePessoas);
            restClient.ExecuteAsPost <Pessoa>(Arg.Any <RestRequest>(), Arg.Any <string>()).Returns(responsePessoa);

            service = new RestsharpService(restClient, token);
        }
コード例 #2
0
 public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
 {
     InjectZipkinTraces(request);
     using (GetClientSendTrace(request))
     {
         return(_innerClient.ExecuteAsGet(request, httpMethod));
     }
 }
コード例 #3
0
        public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
        {
            var response = _restClient.ExecuteAsGet(request, httpMethod);

            _logger.LogTrace($"Request: {request.Method} {request.Resource} {request.Body?.Value}. " +
                             $"Response: {response.StatusCode} {response.Content}.".Truncate(500));
            return(response);
        }
コード例 #4
0
 public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
 {
     if (null == request)
     {
         return(null);
     }
     if (null == _pollyRetPolicy)
     {
         return(null);
     }
     return(_pollyRetPolicy.Execute(() => _innerService.ExecuteAsGet(request, httpMethod)));
 }
コード例 #5
0
        public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
        {
            if (null == _pollyRetPolicyGeneric)
            {
                throw new AggregateException(nameof(_pollyRetPolicyGeneric) + " is  null");
            }

            return(_pollyRetPolicyGeneric.Execute(() =>
            {
                if (null == request)
                {
                    throw new AggregateException(nameof(request) + " is  null");
                }
                return (TResult)_innerService.ExecuteAsGet(request, httpMethod);
            }));
        }
コード例 #6
0
        public T Execute <T>(RestRequest request) where T : new()
        {
            IRestResponse <T> response;

            // Explicitly check whether to execute as GET- or POST-like request
            // RestSharp treats DELETE by default as a GET-like request, however we
            // need it as a POST-like request
            var method = Enum.GetName(typeof(Method), request.Method);

            switch (request.Method)
            {
            case Method.POST:
            case Method.PUT:
            case Method.PATCH:
            case Method.DELETE:
                response = _client.ExecuteAsPost <T>(request, method);
                break;

            default:
                response = _client.ExecuteAsGet <T>(request, method);
                break;
            }

            if (response.ResponseStatus != ResponseStatus.Completed)
            {
                string message = String.Format("Error retrieving response: {0}. {1}",
                                               response.ResponseStatus.ToString(), response.ErrorMessage);
                throw new RequestFailedException(message, "RequestFailed", response.ErrorException);
            }
            // if we identify with a cookie, update the sessionId
            if (_authMethod == DataspaceRequest.AuthMethod.Cookie)
            {
                foreach (var cookie in response.Cookies)
                {
                    if (cookie.Name == DataspaceRequest.SessionIdCookieName)
                    {
                        _sessionId = cookie.Value;
                        break;
                    }
                }
            }
            return(response.Data);
        }
コード例 #7
0
        public List <List <T> > GetFromStoredProc <T>(string procedureName, Dictionary <string, object> parameters)
        {
            var url     = $"/procs/{procedureName}/{FormatStoredProcParameters(parameters)}";
            var request = new RestRequest(url, Method.GET);

            AddAuthorization(request);

            var response = _ministryPlatformRestClient.ExecuteAsGet(request, "GET");

            _authToken.Value = null;
            response.CheckForErrors($"Error executing procedure {procedureName}", true);

            var content = JsonConvert.DeserializeObject <List <List <T> > >(response.Content);

            if (content == null || !content.Any())
            {
                return(default(List <List <T> >));
            }
            return(content);
        }
コード例 #8
0
 public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
 {
     return(_innerClient.ExecuteAsGet(request, httpMethod));
 }
コード例 #9
0
        public static string GetPayload(IRestClient client, Guid payloadID, int threadID)
        {
            locker.Wait();
            if (!directoryLocker.ContainsKey(payloadID))
            {
                directoryLocker.Add(payloadID, new SemaphoreSlim(1));
            }
            if (!directoryCount.ContainsKey(payloadID))
            {
                directoryCount.Add(payloadID, 1);
            }
            else
            {
                directoryCount[payloadID]++;
            }
            SemaphoreSlim payloadLocker = directoryLocker[payloadID];

            locker.Release();

            payloadLocker.Wait();

            string tempFile      = getPath(payloadID);
            string tempDirectory = getDirectory(payloadID, threadID);

            try
            {
                if (File.Exists(tempFile))
                {
                    payloadLocker.Release();

                    if (!Directory.Exists(tempDirectory))
                    {
                        Directory.CreateDirectory(tempDirectory);
                        ZipFile.ExtractToDirectory(tempFile, tempDirectory);
                    }

                    return(tempDirectory);
                }

                var request  = new RestRequest($"payload/{payloadID}");
                var response = client.ExecuteAsGet(request, "GET");

                if (response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    payloadLocker.Release();
                    return(null);
                }

                response.RawBytes.SaveAs(tempFile);
                payloadLocker.Release();

                Directory.CreateDirectory(tempDirectory);
                ZipFile.ExtractToDirectory(tempFile, tempDirectory);

                return(tempDirectory);
            }
            catch
            {
                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }

                return(null);
            }
        }
コード例 #10
0
        public IEnumerable <Pessoa> Get()
        {
            var response = restClient.ExecuteAsGet <List <Pessoa> >(new RestRequest("pessoa"), "GET");

            return(response.Data);
        }