Skip to content

Commit c85d688

Browse files
committed
Adding new Web Forms API code example
1 parent c4efde4 commit c85d688

File tree

16 files changed

+1105
-5
lines changed

16 files changed

+1105
-5
lines changed

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
<click.version> 1.4.0</click.version>
3232
<monitor.version>1.3.0</monitor.version>
3333
<admin.version>1.3.0</admin.version>
34+
<webforms.version>1.0.2-RC12</webforms.version>
3435
<swagger-core-version>2.2.8</swagger-core-version>
3536
<jackson-version>2.14.2</jackson-version>
3637
<jersey2.version>3.0.9</jersey2.version>
3738
</properties>
3839

39-
4040
<dependencies>
4141
<dependency>
4242
<groupId>org.springframework.boot</groupId>
@@ -182,6 +182,12 @@
182182
<classifier>shaded</classifier>
183183
</dependency>
184184

185+
<dependency>
186+
<groupId>com.docusign</groupId>
187+
<artifactId>docusign-webforms-java</artifactId>
188+
<version>${webforms.version}</version>
189+
</dependency>
190+
185191
<dependency>
186192
<groupId>org.springframework.boot</groupId>
187193
<artifactId>spring-boot-autoconfigure</artifactId>

src/main/java/com/docusign/DSConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ public class DSConfiguration {
103103
@Value("${DS_ADMIN_BASE_PATH}")
104104
private String adminBasePath;
105105

106+
@Value("${DS_WEBFORMS_BASE_PATH}")
107+
private String webFormsBasePath;
108+
106109
@Value("${CodeExamplesManifest}")
107110
private String codeExamplesManifest;
108111

src/main/java/com/docusign/common/ApiIndex.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ public enum ApiIndex {
66
CLICK("/pages/click/index", "/clickapi", "/c001", "/c"),
77
MONITOR("/pages/monitor/index", "", "/m001", "/m"),
88
ADMIN("/pages/admin/index", "/management", "/a001", "/a"),
9-
CONNECT("/pages/connect/index", "", "/con001", "/con");
9+
CONNECT("/pages/connect/index", "", "/con001", "/con"),
10+
WEBFORMS("/pages/webforms/index", "/restapi", "/web001", "/web");
1011
private final String indexPath;
1112

1213
private final String baseUrlSuffix;
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.docusign.controller.webForms.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.core.controller.AbstractController;
5+
import com.docusign.core.model.Session;
6+
import com.docusign.core.model.User;
7+
import com.docusign.esign.client.ApiClient;
8+
import com.docusign.esign.client.auth.OAuth;
9+
import org.springframework.http.HttpHeaders;
10+
import org.springframework.stereotype.Controller;
11+
12+
/**
13+
* Abstract base class for all controllers.
14+
*/
15+
@Controller
16+
public abstract class AbstractWebFormsController extends AbstractController {
17+
18+
private static final String EXAMPLE_PAGES_PATH = "pages/webforms/examples/";
19+
20+
protected Session session;
21+
22+
protected User user;
23+
24+
public AbstractWebFormsController(DSConfiguration config, String exampleName, Session session, User user) {
25+
super(config, exampleName);
26+
this.session = session;
27+
this.user = user;
28+
}
29+
30+
/**
31+
* Creates new instance of the Rooms API client.
32+
*
33+
* @param basePath URL to eSignature REST API
34+
* @param userAccessToken user's access token
35+
* @return an instance of the {@link ApiClient}
36+
*/
37+
38+
protected static ApiClient createESignApiClient(String basePath, String userAccessToken) {
39+
ApiClient apiClient = new ApiClient(basePath);
40+
apiClient.addDefaultHeader(HttpHeaders.AUTHORIZATION, BEARER_AUTHENTICATION + userAccessToken);
41+
apiClient.addAuthorization("docusignAccessCode", new OAuth());
42+
return apiClient;
43+
}
44+
45+
protected static com.docusign.webforms.client.ApiClient createWebFormsApiClient(
46+
String basePath,
47+
String userAccessToken
48+
) {
49+
//ds-snippet-start:WebForms1Step2
50+
com.docusign.webforms.client.ApiClient apiClient = new com.docusign.webforms.client.ApiClient(basePath);
51+
apiClient.addDefaultHeader(HttpHeaders.AUTHORIZATION, BEARER_AUTHENTICATION + userAccessToken);
52+
apiClient.addAuthorization("docusignAccessCode", new com.docusign.webforms.client.auth.OAuth());
53+
//ds-snippet-end:WebForms1Step2
54+
return apiClient;
55+
}
56+
57+
protected String getExamplePagesPath() {
58+
return AbstractWebFormsController.EXAMPLE_PAGES_PATH;
59+
}
60+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package com.docusign.controller.webForms.examples;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.http.HttpServletResponse;
6+
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.stereotype.Controller;
9+
import org.springframework.ui.ModelMap;
10+
import org.springframework.web.bind.annotation.RequestMapping;
11+
import org.springframework.web.servlet.view.RedirectView;
12+
13+
import com.docusign.DSConfiguration;
14+
import com.docusign.common.WorkArguments;
15+
import com.docusign.controller.eSignature.services.CreateTemplateService;
16+
import com.docusign.controller.webForms.services.CreateAndEmbedFormService;
17+
import com.docusign.core.model.Session;
18+
import com.docusign.core.model.User;
19+
import com.docusign.esign.client.ApiClient;
20+
import com.docusign.esign.client.ApiException;
21+
import com.docusign.esign.model.EnvelopeTemplate;
22+
import com.docusign.esign.model.EnvelopeTemplateResults;
23+
import com.docusign.esign.model.TemplateSummary;
24+
import com.docusign.webforms.model.WebFormInstance;
25+
import com.docusign.webforms.model.WebFormSummaryList;
26+
27+
@Controller
28+
@RequestMapping("/web001")
29+
public class WEB001ControllerCreateAndEmbedForm extends AbstractWebFormsController {
30+
31+
private static final String TEMPLATE_ID = "templateId";
32+
33+
private static final String TEMPLATE_NAME = "Web Form Example Template";
34+
35+
private static final String DOCUMENT_FILE_NAME = "World_Wide_Corp_Web_Form.pdf";
36+
37+
private static final String WEB_FORM_CONFIG = "web-form-config.json";
38+
39+
public static final String EMBED = "pages/webforms/examples/embed";
40+
41+
public static final String INSTANCE_TOKEN = "instanceToken";
42+
43+
public static final String URL = "url";
44+
45+
public static final String INTEGRATION_KEY = "integrationKey";
46+
47+
@Autowired
48+
public WEB001ControllerCreateAndEmbedForm(DSConfiguration config, Session session, User user) {
49+
super(config, "web001", session, user);
50+
}
51+
52+
@Override
53+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
54+
super.onInitModel(args, model);
55+
model.addAttribute(TEMPLATE_ID, session.getWebformTemplateId());
56+
}
57+
58+
@Override
59+
protected Object doWork(
60+
WorkArguments args,
61+
ModelMap model,
62+
HttpServletResponse response
63+
) throws ApiException, IOException, com.docusign.webforms.client.ApiException {
64+
if (session.getWebformTemplateId() == null) {
65+
ApiClient eSignApiClient = createESignApiClient(session.getBasePath(), user.getAccessToken());
66+
String accountId = session.getAccountId();
67+
68+
EnvelopeTemplateResults envelopeTemplateResults = CreateTemplateService.searchTemplatesByName(
69+
eSignApiClient,
70+
accountId,
71+
TEMPLATE_NAME);
72+
73+
if (Integer.parseInt(envelopeTemplateResults.getResultSetSize()) > 0) {
74+
EnvelopeTemplate template = envelopeTemplateResults.getEnvelopeTemplates().get(0);
75+
session.setWebformTemplateId(template.getTemplateId());
76+
} else {
77+
TemplateSummary template = CreateTemplateService.createTemplate(
78+
eSignApiClient,
79+
accountId,
80+
CreateAndEmbedFormService.prepareEnvelopeTemplate(TEMPLATE_NAME, DOCUMENT_FILE_NAME)
81+
);
82+
83+
session.setWebformTemplateId(template.getTemplateId());
84+
}
85+
86+
model.addAttribute(TEMPLATE_ID, session.getWebformTemplateId());
87+
CreateAndEmbedFormService.addTemplateIdToForm(WEB_FORM_CONFIG, session.getWebformTemplateId());
88+
89+
return new RedirectView("web001");
90+
}
91+
92+
var webFormsApiClient = createWebFormsApiClient(
93+
config.getWebFormsBasePath(),
94+
user.getAccessToken()
95+
);
96+
97+
WebFormSummaryList forms = CreateAndEmbedFormService.getForms(
98+
webFormsApiClient,
99+
session.getAccountId(),
100+
TEMPLATE_NAME
101+
);
102+
103+
if (forms.getItems() == null || forms.getItems().size() == 0) {
104+
return new RedirectView("web001");
105+
}
106+
107+
String formId = forms.getItems().get(0).getId();
108+
109+
WebFormInstance form = CreateAndEmbedFormService.createInstance(
110+
webFormsApiClient,
111+
session.getAccountId(),
112+
formId
113+
);
114+
115+
session.setWebformTemplateId(null);
116+
model.addAttribute(LAUNCHER_TEXTS, config.getCodeExamplesText().SupportingTexts);
117+
model.addAttribute(INSTANCE_TOKEN, form.getInstanceToken());
118+
model.addAttribute(URL, form.getFormUrl());
119+
model.addAttribute(INTEGRATION_KEY, config.getUserId());
120+
121+
return EMBED;
122+
}
123+
}

0 commit comments

Comments
 (0)