Last active
July 9, 2016 02:17
-
-
Save Ergin008/4165813 to your computer and use it in GitHub Desktop.
Embedded DocuSign
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// DocuSign API Walkthrough 09 in C# - Embedded DocuSign Console (launch the member console) | |
// | |
// To run this sample: | |
// 1) Create a new .NET project. | |
// 2) Add 4 assembly references to the project: System, System.Net, System.XML, and System.XML.Linq | |
// 3) Update the email, password, and integrator key in the code | |
// 4) Compile and Run | |
// | |
// NOTE 1: The DocuSign REST API accepts both JSON and XML formatted http requests. These C# API walkthroughs | |
// demonstrate the use of XML format, whereas the other walkthroughs show examples in JSON format. | |
using System; | |
using System.IO; | |
using System.Net; | |
using System.Xml; | |
using System.Xml.Linq; | |
namespace DocuSignAPIWalkthrough09 | |
{ | |
public class EmbeddedDocuSignConsole | |
{ | |
public static void Main () | |
{ | |
//--------------------------------------------------------------------------------------------------- | |
// ENTER VALUES FOR THE FOLLOWING 3 VARIABLES: | |
//--------------------------------------------------------------------------------------------------- | |
string username = "***"; // your account email | |
string password = "***"; // your account password | |
string integratorKey = "***"; // your account Integrator Key (found on Preferences -> API page) | |
//--------------------------------------------------------------------------------------------------- | |
// additional variable declarations | |
string baseURL = ""; // - we will retrieve this through the Login API call | |
string accountId = ""; // - we will retrieve this ... | |
try { | |
//============================================================================ | |
// STEP 1 - Login API Call (used to retrieve your baseUrl) | |
//============================================================================ | |
// Endpoint for Login api call (in demo environment): | |
string url = "https://demo.docusign.net/restapi/v2/login_information"; | |
// set request url, method, and headers. No body needed for login api call | |
HttpWebRequest request = initializeRequest( url, "GET", null, username, password, integratorKey); | |
// read the http response | |
string response = getResponseBody(request); | |
// parse accountId and baseUrl from response body | |
baseURL = parseDataFromResponse(response, "baseUrl"); | |
accountId = parseDataFromResponse(response, "accountId"); | |
//--- display results | |
Console.WriteLine("\nAPI Call Result: \n\n" + prettyPrintXml(response)); | |
//============================================================================ | |
// STEP 2 - Launch the DocuSign Console | |
//============================================================================ | |
// append "/views/console" to baseUrl and use in console request | |
url = baseURL + "/views/console"; | |
// construct an XML formmated request body. Simply need to specify which account to open | |
// in the console, since you can be a member of multiple accounts: | |
string requestBody = | |
"<consoleViewRequest xmlns=\"http://www.docusign.com/restapi\">" + | |
"<accountId>" + accountId + "</accountId>" + | |
"</consoleViewRequest>"; | |
// set request url, method, body, and headers | |
request = initializeRequest( url, "POST", requestBody, username, password, integratorKey); | |
// read the http response | |
response = getResponseBody(request); | |
//--- display results | |
Console.WriteLine("\nAPI Call Result: \n\n" + prettyPrintXml(response)); | |
} | |
catch (WebException e) { | |
using (WebResponse response = e.Response) { | |
HttpWebResponse httpResponse = (HttpWebResponse)response; | |
Console.WriteLine("Error code: {0}", httpResponse.StatusCode); | |
using (Stream data = response.GetResponseStream()) | |
{ | |
string text = new StreamReader(data).ReadToEnd(); | |
Console.WriteLine(prettyPrintXml(text)); | |
} | |
} | |
} | |
} // end main() | |
//*********************************************************************************************** | |
// --- HELPER FUNCTIONS --- | |
//*********************************************************************************************** | |
public static HttpWebRequest initializeRequest(string url, string method, string body, string email, string password, string intKey) | |
{ | |
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (url); | |
request.Method = method; | |
addRequestHeaders( request, email, password, intKey ); | |
if( body != null ) | |
addRequestBody(request, body); | |
return request; | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public static void addRequestHeaders(HttpWebRequest request, string email, string password, string intKey) | |
{ | |
// authentication header can be in JSON or XML format. XML used for this walkthrough: | |
string authenticateStr = | |
"<DocuSignCredentials>" + | |
"<Username>" + email + "</Username>" + | |
"<Password>" + password + "</Password>" + | |
"<IntegratorKey>" + intKey + "</IntegratorKey>" + | |
"</DocuSignCredentials>"; | |
request.Headers.Add ("X-DocuSign-Authentication", authenticateStr); | |
request.Accept = "application/xml"; | |
request.ContentType = "application/xml"; | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public static void addRequestBody(HttpWebRequest request, string requestBody) | |
{ | |
// create byte array out of request body and add to the request object | |
byte[] body = System.Text.Encoding.UTF8.GetBytes (requestBody); | |
Stream dataStream = request.GetRequestStream (); | |
dataStream.Write (body, 0, requestBody.Length); | |
dataStream.Close (); | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public static string getResponseBody(HttpWebRequest request) | |
{ | |
// read the response stream into a local string | |
HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse (); | |
StreamReader sr = new StreamReader(webResponse.GetResponseStream()); | |
string responseText = sr.ReadToEnd(); | |
return responseText; | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public static string parseDataFromResponse(string response, string searchToken) | |
{ | |
// look for "searchToken" in the response body and parse its value | |
using (XmlReader reader = XmlReader.Create(new StringReader(response))) { | |
while (reader.Read()) { | |
if((reader.NodeType == XmlNodeType.Element) && (reader.Name == searchToken)) | |
return reader.ReadString(); | |
} | |
} | |
return null; | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public static string prettyPrintXml(string xml) | |
{ | |
// print nicely formatted xml | |
try { | |
XDocument doc = XDocument.Parse(xml); | |
return doc.ToString(); | |
} | |
catch (Exception) { | |
return xml; | |
} | |
} | |
} // end class | |
} // end namespace |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment