Exemple #1
0
        public static async Task <string> LingkServicecall(LingkProject lingkProject)
        {
            var        service = "/v1/@self/" + lingkProject.EnvironmentKey.ToLower() + "/credentials/docusign";
            var        method  = "GET";
            String     requestDate;
            UriBuilder uri = new UriBuilder(lingkProject.Entrypoint + service);

            Console.WriteLine(uri);
            requestDate = DateTime.UtcNow.ToString("R");

            HttpClientHandler handler = new HttpClientHandler()
            {
            };
            string fullMessage = "date: " + requestDate + "\n(request-target): " + method.ToLower() + " " + service;

            using (var client = new HttpClient(handler))
            {
                string hashString = CreateSignature(fullMessage, lingkProject.ClientSecret);
                String authHeader = "Signature keyId=\"" + lingkProject.ClientId + "\",headers=\"date (request-target)\",algorithm=\"hmac-sha1\",signature=\"" + WebUtility.UrlEncode(hashString) + "\"";

                client.BaseAddress = new System.Uri(lingkProject.Entrypoint);
                client.DefaultRequestHeaders.Add("Date", requestDate);
                client.DefaultRequestHeaders.Add("Authorization", authHeader);
                var resp2 = await client.GetAsync(service);

                var    aaa    = resp2.Content;
                string result = await aaa.ReadAsStringAsync();

                return(result);
            }
        }
Exemple #2
0
        public static LingkCredentials GetAccessToken(LingkProject lingkProject)
        {
            if (lingkCredentials == null || ExpireIn == null || DateTime.Now.Subtract(TimeSpan.FromMinutes(3)) > ExpireIn.Value)
            {
                var resp = LingkHelper.LingkServicecall(lingkProject);

                var lingkDocusign = JsonConvert.DeserializeObject <LingkDocusign>(resp.Result);

                if (lingkDocusign.errorCode != null)
                {
                    throw new Exception(lingkDocusign.errorCode + ":" + lingkDocusign.errorDescription
                                        + "," + lingkDocusign.errorMetadata);
                }
                var jwtGrant = new JwtGrant
                {
                    grant_type = LingkConst.DocuSignGrantType,
                    assertion  = lingkDocusign.credentialsJson.JWT
                };

                var client  = new RestClient(lingkDocusign.credentialsJson.isSandbox ? LingkConst.DocusignDemoAuthUrl : LingkConst.DocusignProdAuthUrl);
                var request = new RestRequest(Method.POST);
                request.AddHeader("content-type", "application/json");
                request.AddHeader("cache-control", "no-cache");
                request.AddParameter("application/json", JsonConvert.SerializeObject(jwtGrant), ParameterType.RequestBody);
                IRestResponse responseData = client.Execute(request);
                var           authToken    = JsonConvert.DeserializeObject <Token>(responseData.Content);
                if (authToken.error != null)
                {
                    throw new Exception(authToken.error_description + " not able to generate access_token from jwt ");
                }
                ExpireIn         = DateTime.Now.AddSeconds(authToken.expires_in);
                lingkCredentials = new LingkCredentials
                {
                    credentialsJson = lingkDocusign.credentialsJson,
                    docuSignToken   = authToken
                };
            }
            return(lingkCredentials);
        }