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); } }
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); }