Skip to content

Commit f20625f

Browse files
authored
Merge pull request #168 from docusign/feature/workspaces-example-upload-request
Added upload request example
2 parents 7caed56 + 77d9c39 commit f20625f

File tree

8 files changed

+181
-2
lines changed

8 files changed

+181
-2
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,6 @@ public class WorkArguments {
192192
private String documentName;
193193

194194
private String documentPath;
195+
196+
private String assigneeEmail;
195197
}

src/main/java/com/docusign/controller/workspaces/examples/Work001CreateWorkspaceController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse
4848
//ds-snippet-end:Workspaces1Step4
4949

5050
var workspaceId = workspace.createWorkspaceResponse().get().workspaceId().orElse("");
51+
var creatorId = workspace.createWorkspaceResponse().get().createdByUserId().orElse("");
5152
session.setWorkspaceId(workspaceId);
53+
session.setCreatorId(creatorId);
5254
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
5355
.withMessage(getTextForCodeExampleByApiType().ResultsPageText.replaceFirst("\\{0}", workspaceId))
5456
.withJsonObject(workspace.createWorkspaceResponse().get())
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.docusign.controller.workspaces.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.common.WorkArguments;
5+
import com.docusign.controller.workspaces.services.CreateUploadRequestService;
6+
import com.docusign.core.model.DoneExample;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.ui.ModelMap;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
13+
import javax.servlet.http.HttpServletResponse;
14+
15+
/**
16+
* This example demonstrates how to create upload request.
17+
*/
18+
@Controller
19+
@RequestMapping("/work005")
20+
public class Work005CreateUploadRequestController extends AbstractWorkspacesController {
21+
private static final String MODEL_WORKSPACE_OK = "workspaceOk";
22+
23+
private static final String MODEL_CREATOR_OK = "creatorOk";
24+
25+
public Work005CreateUploadRequestController(DSConfiguration config, Session session, User user) {
26+
super(config, "work005", session, user);
27+
}
28+
29+
@Override
30+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
31+
super.onInitModel(args, model);
32+
33+
model.addAttribute(MODEL_WORKSPACE_OK, session.getWorkspaceId() != null && !session.getWorkspaceId().isEmpty());
34+
model.addAttribute(MODEL_CREATOR_OK, session.getCreatorId() != null && !session.getCreatorId().isEmpty());
35+
}
36+
37+
@Override
38+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
39+
var accountId = session.getAccountId();
40+
var accessToken = user.getAccessToken();
41+
var workspaceId = session.getWorkspaceId();
42+
var creatorId = session.getCreatorId();
43+
var assigneeEmail = args.getAssigneeEmail();
44+
45+
try{
46+
var results = CreateUploadRequestService.createUploadRequest(
47+
accessToken,
48+
accountId,
49+
workspaceId,
50+
creatorId,
51+
assigneeEmail);
52+
53+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
54+
.withMessage(getTextForCodeExampleByApiType().ResultsPageText.replaceFirst(
55+
"\\{0}",
56+
results.getWorkspaceUploadRequestResponse().get().uploadRequestId()))
57+
.addToModel(model, config);
58+
} catch (Exception e) {
59+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
60+
.withMessage(getTextForCodeExampleByApiType().CustomErrorTexts.get(0).ErrorMessage)
61+
.addToModel(model, config);
62+
}
63+
64+
return DONE_EXAMPLE_PAGE;
65+
}
66+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.docusign.controller.workspaces.services;
2+
3+
import com.docusign.iam.sdk.IamClient;
4+
import com.docusign.iam.sdk.models.components.*;
5+
import com.docusign.iam.sdk.models.operations.CreateWorkspaceUploadRequestResponse;
6+
import java.time.OffsetDateTime;
7+
import java.util.Arrays;
8+
9+
public final class CreateUploadRequestService {
10+
private static IamClient createIamClient(String accessToken) {
11+
return IamClient.builder().accessToken(accessToken).build();
12+
}
13+
14+
public static CreateWorkspaceUploadRequestResponse createUploadRequest(
15+
String accessToken,
16+
String accountId,
17+
String workspaceId,
18+
String creatorId,
19+
String assigneeEmail) throws Exception {
20+
//ds-snippet-start:Workspaces5Step3
21+
OffsetDateTime dueDate = OffsetDateTime.now().plusDays(7);
22+
23+
var assignmentFoAssignee = new CreateWorkspaceUploadRequestAssignment(
24+
WorkspaceUploadRequestResponsibilityType.ASSIGNEE)
25+
.withFirstName("Test")
26+
.withLastName("User")
27+
.withEmail(assigneeEmail);
28+
var assignmentForCreator = new CreateWorkspaceUploadRequestAssignment(
29+
WorkspaceUploadRequestResponsibilityType.WATCHER)
30+
.withAssigneeUserId(creatorId);
31+
var assignments = Arrays.asList(
32+
assignmentFoAssignee,
33+
assignmentForCreator);
34+
35+
var createWorkspaceUploadRequestBody = new CreateWorkspaceUploadRequestBody(dueDate,
36+
WorkspaceUploadRequestStatus.DRAFT)
37+
.withName("Upload Request example " + dueDate)
38+
.withDescription("This is an example upload request created via the workspaces API")
39+
.withAssignments(assignments);
40+
//ds-snippet-end:Workspaces5Step3
41+
42+
//ds-snippet-start:Workspaces5Step4
43+
return createIamClient(accessToken)
44+
.workspaces()
45+
.workspaceUploadRequest()
46+
.createWorkspaceUploadRequest()
47+
.accountId(accountId)
48+
.workspaceId(workspaceId)
49+
.createWorkspaceUploadRequestBody(createWorkspaceUploadRequestBody)
50+
.call();
51+
//ds-snippet-end:Workspaces5Step4
52+
}
53+
}

src/main/java/com/docusign/controller/workspaces/services/CreateWorkspaceService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import com.docusign.iam.sdk.models.components.CreateWorkspaceBody;
55
import com.docusign.iam.sdk.models.operations.CreateWorkspaceResponse;
66

7-
public final class CreateWorkspaceService {
7+
public final class CreateWorkspaceService {
8+
//ds-snippet-start:WorkspacesStep2
89
private static IamClient createIamClient(String accessToken) {
910
return IamClient.builder().accessToken(accessToken).build();
1011
}
12+
//ds-snippet-end:WorkspacesStep2
1113

1214
public static CreateWorkspaceResponse createWorkspace(
1315
String accessToken,

src/main/java/com/docusign/core/model/Session.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,7 @@ public class Session implements Serializable {
8484

8585
private String workspaceId;
8686

87+
private String creatorId;
88+
8789
private String documentId;
8890
}

src/main/resources/application.example.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"com.docusign.github.example-uri": "https://github.com/docusign/code-examples-java/blob/master/src/main/java/",
6464
"com.docusign.documentation-path": "",
6565

66-
"CodeExamplesManifest": "https://raw.githubusercontent.com/annahileta/ManifestsForCodeExamples/refs/heads/main/CodeExamplesManifest.json",
66+
"CodeExamplesManifest": "https://raw.githubusercontent.com/docusign/code-examples-csharp/master/manifest/CodeExamplesManifest.json",
6767

6868
"server.tomcat.additional-tld-skip-patterns": "*jaxb*.jar",
6969
"server.servlet.session.tracking-modes": "cookie",
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2+
<jsp:include page="../../../partials/head.jsp"/>
3+
4+
<c:set var="formNumber" value="0" scope="page" />
5+
<c:set var="assigneeEmailInputNumber" value="0" scope="page" />
6+
<c:set var="noWorkspaceRedirect" value="0" scope="page" />
7+
<c:set var="noCreatorIdRedirect" value="1" scope="page" />
8+
<c:set var="redirectToFirstCodeExample" value="href='work001'" scope="page" />
9+
10+
<h4>${example.getExampleName()}</h4>
11+
<p>${example.getExampleDescription()}</p>
12+
<jsp:include page="../../links_to_api_methods.jsp" />
13+
<p>
14+
${viewSourceFile}
15+
</p>
16+
17+
<c:choose>
18+
<c:when test="${!workspaceOk}">
19+
<p>
20+
${example.getRedirectsToOtherCodeExamples().get(noWorkspaceRedirect).getRedirectText().replaceFirst("\\{0}", redirectToFirstCodeExample)}
21+
</p>
22+
</c:when>
23+
<c:when test="${!creatorOk}">
24+
<p>
25+
${example.getRedirectsToOtherCodeExamples().get(noCreatorIdRedirect).getRedirectText().replaceFirst("\\{0}", redirectToFirstCodeExample)}
26+
</p>
27+
</c:when>
28+
<c:otherwise>
29+
<form class="eg" action="" method="post" data-busy="form">
30+
<div class="form-group">
31+
<label for="assigneeEmail">
32+
${example.getForms().get(formNumber).getInputs().get(assigneeEmailInputNumber).getInputName()}
33+
</label>
34+
35+
<input type="text"
36+
class="form-control"
37+
id="assigneeEmail"
38+
placeholder="${example.getForms().get(formNumber).getInputs().get(assigneeEmailInputNumber).getInputPlaceholder()}"
39+
name="assigneeEmail"
40+
required>
41+
42+
<small id="emailHelp" class="form-text text-muted">
43+
${launcherTexts.getHelpingTexts().getEmailWontBeShared()}
44+
</small>
45+
</div>
46+
<input type="hidden" name="_csrf" value="${csrfToken}">
47+
<button type="submit" class="btn btn-docu">${launcherTexts.getSubmitButton()}</button>
48+
</form>
49+
</c:otherwise>
50+
</c:choose>
51+
52+
<jsp:include page="../../../partials/foot.jsp"/>

0 commit comments

Comments
 (0)