@@ -7,87 +7,43 @@ namespace DocuSign.CodeExamples.Examples
77 using System ;
88 using System . Collections . Generic ;
99 using System . Linq ;
10- using System . Net . Http ;
1110 using System . Threading . Tasks ;
1211 using DocuSign . eSign . Api ;
1312 using DocuSign . eSign . Client ;
1413 using DocuSign . eSign . Model ;
15- using Newtonsoft . Json ;
16- using Newtonsoft . Json . Linq ;
14+ using Docusign . IAM . SDK ;
15+ using TabInfo = Docusign . IAM . SDK . Models . Components . TabInfo ;
1716
1817 public static class SetConnectedFields
1918 {
20- private static readonly HttpClient Client = new HttpClient ( ) ;
21-
22- public static async Task < object > GetConnectedFieldsTabGroupsAsync ( string accountId , string accessToken )
19+ public static async Task < List < TabInfo > > GetConnectedFieldsTabGroupsAsync ( string basePath , string accountId , string accessToken )
2320 {
2421 //ds-snippet-start:ConnectedFields1Step3
25- var url = $ "https://api-d.docusign.com/v1/accounts/{ accountId } /connected-fields/tab-groups";
26-
27- var requestMessage = new HttpRequestMessage ( HttpMethod . Get , url ) ;
22+ var client = CreateAuthenticatedClient ( basePath , accessToken ) ;
23+ return await client . ConnectedFields . TabInfo . GetConnectedFieldsTabGroupsAsync ( accountId ) ;
2824 //ds-snippet-end:ConnectedFields1Step3
29-
30- //ds-snippet-start:ConnectedFields1Step2
31- requestMessage . Headers . Add ( "Authorization" , $ "Bearer { accessToken } ") ;
32- requestMessage . Headers . Add ( "Accept" , "application/json" ) ;
33- //ds-snippet-end:ConnectedFields1Step2
34-
35- try
36- {
37- //ds-snippet-start:ConnectedFields1Step3
38- var response = await Client . SendAsync ( requestMessage ) ;
39- response . EnsureSuccessStatusCode ( ) ;
40-
41- var body = await response . Content . ReadAsStringAsync ( ) ;
42- var data = JsonConvert . DeserializeObject < object > ( body ) ;
43-
44- return data ;
45- //ds-snippet-end:ConnectedFields1Step3
46- }
47- catch ( HttpRequestException e )
48- {
49- throw new Exception ( $ "DocuSign API Request failed: { e . Message } ") ;
50- }
5125 }
5226
53- public static JArray FilterData ( JArray data )
27+ //ds-snippet-start:ConnectedFields1Step4
28+ public static List < TabInfo > FilterData ( List < TabInfo > connectedFields )
5429 {
55- //ds-snippet-start:ConnectedFields1Step4
56- var filteredData = data . Where ( item =>
57- {
58- var tabs = item [ "tabs" ] as JArray ;
59- if ( tabs == null )
60- {
61- return false ;
62- }
63-
64- foreach ( var tab in tabs )
65- {
66- var extensionData = tab [ "extensionData" ] ;
67- var tabLabel = tab [ "tabLabel" ] ? . ToString ( ) ;
68-
69- if ( ( extensionData != null && extensionData [ "actionContract" ] ? . ToString ( ) . Contains ( "Verify" ) == true ) ||
70- ( tabLabel != null && tabLabel . Contains ( "connecteddata" ) ) )
71- {
72- return true ;
73- }
74- }
75-
76- return false ;
77- } ) . ToList ( ) ;
78- //ds-snippet-end:ConnectedFields1Step4
79-
80- return new JArray ( filteredData ) ;
30+ return connectedFields
31+ . Where ( group => group . Tabs . Any ( tab =>
32+ tab . ExtensionData ? . ActionContract ? . Contains ( "Verify" ) == true ||
33+ tab . TabLabel . Contains ( "connecteddata" ) ) )
34+ . ToList ( ) ;
8135 }
8236
37+ //ds-snippet-end:ConnectedFields1Step4
38+
8339 public static string SendEnvelopeViaEmail (
8440 string basePath ,
8541 string accessToken ,
8642 string accountId ,
8743 string signerEmail ,
8844 string signerName ,
8945 string docPdf ,
90- JObject selectedApp )
46+ TabInfo selectedApp )
9147 {
9248 //ds-snippet-start:ConnectedFields1Step6
9349 EnvelopeDefinition envelopeDefinition = MakeEnvelope ( signerEmail , signerName , docPdf , selectedApp ) ;
@@ -105,11 +61,8 @@ public static EnvelopeDefinition MakeEnvelope(
10561 string signerEmail ,
10662 string signerName ,
10763 string docPdf ,
108- JObject selectedApp )
64+ TabInfo selectedApp )
10965 {
110- var appId = selectedApp [ "appId" ] ? . ToString ( ) ?? string . Empty ;
111- JArray tabLabels = ( JArray ) selectedApp [ "tabs" ] ;
112-
11366 EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition ( ) ;
11467 envelopeDefinition . EmailSubject = "Please sign this document set" ;
11568 envelopeDefinition . Status = "sent" ;
@@ -147,32 +100,24 @@ public static EnvelopeDefinition MakeEnvelope(
147100 } ,
148101 } ;
149102
150- foreach ( var tab in tabLabels )
103+ foreach ( var tab in selectedApp . Tabs )
151104 {
152- var connectionKey = tab [ "extensionData" ] [ "connectionInstances" ] != null ?
153- tab [ "extensionData" ] [ "connectionInstances" ] [ 0 ] ? [ "connectionKey" ] ? . ToString ( ) : string . Empty ;
154- var connectionValue = tab [ "extensionData" ] [ "connectionInstances" ] != null ?
155- tab [ "extensionData" ] [ "connectionInstances" ] [ 0 ] ? [ "connectionValue" ] ? . ToString ( ) : string . Empty ;
156- var extensionGroupId = tab [ "extensionData" ] [ "extensionGroupId" ] ? . ToString ( ) ?? string . Empty ;
157- var publisherName = tab [ "extensionData" ] [ "publisherName" ] ? . ToString ( ) ?? string . Empty ;
158- var applicationName = tab [ "extensionData" ] [ "applicationName" ] ? . ToString ( ) ?? string . Empty ;
159- var actionName = tab [ "extensionData" ] [ "actionName" ] ? . ToString ( ) ?? string . Empty ;
160- var actionInputKey = tab [ "extensionData" ] [ "actionInputKey" ] ? . ToString ( ) ?? string . Empty ;
161- var actionContract = tab [ "extensionData" ] [ "actionContract" ] ? . ToString ( ) ?? string . Empty ;
162- var extensionName = tab [ "extensionData" ] [ "extensionName" ] ? . ToString ( ) ?? string . Empty ;
163- var extensionContract = tab [ "extensionData" ] [ "extensionContract" ] ? . ToString ( ) ?? string . Empty ;
164- var requiredForExtension = tab [ "extensionData" ] [ "requiredForExtension" ] ? . ToString ( ) ?? string . Empty ;
105+ var extensionData = tab . ExtensionData ;
106+ var connectionKey = extensionData . ConnectionInstances != null ?
107+ extensionData . ConnectionInstances [ 0 ] ? . ConnectionKey : string . Empty ;
108+ var connectionValue = extensionData . ConnectionInstances != null ?
109+ extensionData . ConnectionInstances [ 0 ] ? . ConnectionValue : string . Empty ;
165110
166111 var text = new Text
167112 {
168113 RequireInitialOnSharedChange = "false" ,
169114 RequireAll = "false" ,
170- Name = applicationName ,
115+ Name = extensionData . ApplicationName ,
171116 Required = "false" ,
172117 Locked = "false" ,
173118 DisableAutoSize = "false" ,
174119 MaxLength = "4000" ,
175- TabLabel = tab [ "tabLabel" ] . ToString ( ) ,
120+ TabLabel = tab . TabLabel ,
176121 Font = "lucidaconsole" ,
177122 FontColor = "black" ,
178123 FontSize = "size9" ,
@@ -187,16 +132,16 @@ public static EnvelopeDefinition MakeEnvelope(
187132 TabType = "text" ,
188133 ExtensionData = new ExtensionData
189134 {
190- ExtensionGroupId = extensionGroupId ,
191- PublisherName = publisherName ,
192- ApplicationId = appId ,
193- ApplicationName = applicationName ,
194- ActionName = actionName ,
195- ActionContract = actionContract ,
196- ExtensionName = extensionName ,
197- ExtensionContract = extensionContract ,
198- RequiredForExtension = requiredForExtension ,
199- ActionInputKey = actionInputKey ,
135+ ExtensionGroupId = extensionData . ExtensionGroupId ,
136+ PublisherName = extensionData . PublisherName ,
137+ ApplicationId = selectedApp . AppId ,
138+ ApplicationName = extensionData . ApplicationName ,
139+ ActionName = extensionData . ActionName ,
140+ ActionContract = extensionData . ActionContract ,
141+ ExtensionName = extensionData . ExtensionName ,
142+ ExtensionContract = extensionData . ExtensionContract ,
143+ RequiredForExtension = extensionData . RequiredForExtension . ToString ( ) ,
144+ ActionInputKey = extensionData . ActionInputKey ,
200145 ExtensionPolicy = "MustVerifyToSign" ,
201146 ConnectionInstances = new List < ConnectionInstance >
202147 {
@@ -222,5 +167,10 @@ public static EnvelopeDefinition MakeEnvelope(
222167 }
223168
224169 //ds-snippet-end:ConnectedFields1Step5
170+
171+ //ds-snippet-start:ConnectedFields1Step2
172+ private static IamClient CreateAuthenticatedClient ( string basePath , string accessToken ) =>
173+ IamClient . Builder ( ) . WithServerUrl ( basePath ) . WithAccessToken ( accessToken ) . Build ( ) ;
174+ //ds-snippet-end:ConnectedFields1Step2
225175 }
226176}
0 commit comments