コード例 #1
0
        public bool Test(string serviceUrl, string path, PgAuthenticationTicket ticket)
        {
            if (ticket == null)
            {
                throw new ArgumentNullException(nameof(ticket));
            }

            if (ticket.ExpireDate < DateTime.Now)
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(serviceUrl))
            {
                throw new ArgumentException("message", nameof(serviceUrl));
            }

            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentException("message", nameof(path));
            }

            var client  = new RestClient(serviceUrl);
            var request = new RestRequest(path, Method.GET);

            request.AddHeader("Authorization", $"Bearer {ticket.AccessToken}");

            var response = client.Execute(request);

            return(response.StatusCode.IsOk());
        }
コード例 #2
0
        public TResponse PostJson <TResponse>(string serviceUrl, string path, PgAuthenticationTicket ticket) where TResponse : class
        {
            var response = InternalSendJson(Method.POST, serviceUrl, path, ticket);

            if (!response.StatusCode.IsOk())
            {
                throw new InvalidOperationException($"Server responded with status {response.StatusCode}");
            }

            return(JsonConvert.DeserializeObject <TResponse>(response.Content));
        }
コード例 #3
0
        public byte[] DownloadFile(string serviceUrl, string path, PgAuthenticationTicket ticket, Dictionary <string, string> model)
        {
            var client  = new RestClient(serviceUrl);
            var request = new RestRequest(path, Method.GET);

            if (ticket != null)
            {
                request.AddHeader("Authorization", $"Bearer {ticket.AccessToken}");
            }

            if (model != null && model.Count > 0)
            {
                foreach (var kv in model)
                {
                    request.AddQueryParameter(kv.Key, kv.Value);
                }
            }

            return(client.DownloadData(request));
        }
コード例 #4
0
        public void Delete(string serviceUrl, string path, PgAuthenticationTicket ticket)
        {
            var client  = new RestClient(serviceUrl);
            var request = new RestRequest(path, Method.DELETE);

            request.AddHeader("Content-Type", "application/json");
            request.JsonSerializer = NewtonsoftJsonSerializer.Default;

            if (ticket != null)
            {
                request.AddHeader("Authorization", $"Bearer {ticket.AccessToken}");
            }

            var response = client.Execute(request);

            if (!response.StatusCode.IsOk())
            {
                throw new InvalidOperationException($"Server responded with status {response.StatusCode}");
            }
        }
コード例 #5
0
 public PgAuthenticationResult(PgAuthenticationTicket ticket, PgAuthenticationStatus status)
 {
     Ticket = ticket;
     Status = status;
 }
コード例 #6
0
        private static IRestResponse InternalSendJson <TRequest>(Method method, string serviceUrl, string path, PgAuthenticationTicket ticket, TRequest model) where TRequest : class
        {
            var client  = new RestClient(serviceUrl);
            var request = new RestRequest(path, method);

            request.AddHeader("Content-Type", "application/json");
            request.JsonSerializer = NewtonsoftJsonSerializer.Default;

            if (ticket != null)
            {
                request.AddHeader("Authorization", $"Bearer {ticket.AccessToken}");
            }

            if (model != null)
            {
                request.AddJsonBody(model);
            }

            return(client.Execute(request));
        }
コード例 #7
0
 public HttpStatusCode PostJson <TRequest>(string serviceUrl, string path, PgAuthenticationTicket ticket, TRequest model) where TRequest : class
 {
     return(InternalSendJson(Method.POST, serviceUrl, path, ticket, model).StatusCode);
 }
コード例 #8
0
        public TResponse GetJson <TRequest, TResponse>(string serviceUrl, string path, PgAuthenticationTicket ticket, TRequest model)
            where TRequest : class
            where TResponse : class
        {
            var pathWithQueryString = model != null ? $"{path}?{QueryStringSerializer.Serialize(model)}" : path;

            var response = InternalSendJson(Method.GET, serviceUrl, pathWithQueryString, ticket, default(TRequest));

            if (response.StatusCode == HttpStatusCode.NotFound)
            {
                return(null);
            }

            if (!response.StatusCode.IsOk())
            {
                throw new InvalidOperationException($"Server responded with status {response.StatusCode}");
            }

            return(JsonConvert.DeserializeObject <TResponse>(response.Content, DefaultJsonSerializerSettings));
        }