Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/main/java/edu/ksu/canvas/impl/BaseImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ protected String encode(String value) {
return UrlEscapers.urlPathSegmentEscaper().escape(value);
}

protected String buildCanvasUrl(String canvasMethod) {
return buildCanvasUrl(canvasMethod, Collections.emptyMap());
}

protected String buildCanvasUrl(String canvasMethod, Map<String, List<String>> parameters) {
Map<String, List<String>> allParameters = new HashMap<>();
allParameters.putAll(parameters);
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/edu/ksu/canvas/impl/SubmissionImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.List;
import java.util.Optional;

import edu.ksu.canvas.requestOptions.SubmissionOptions;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -141,4 +142,11 @@ protected Class<Submission> objectType() {
return Submission.class;
}

@Override
public Response submitAssignment(SubmissionOptions options) throws IOException {
String url = buildCanvasUrl("courses/" + options.getCourseId() + "/assignments/" + options.getAssignmentId() + "/submissions");

LOG.debug(String.format("Submitting assignment: POST %s", url));
return canvasMessenger.sendToCanvas(oauthToken, url, options.getOptionsMap());
}
}
11 changes: 11 additions & 0 deletions src/main/java/edu/ksu/canvas/interfaces/SubmissionWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

import edu.ksu.canvas.model.Progress;
import edu.ksu.canvas.model.assignment.Submission;
import edu.ksu.canvas.net.Response;
import edu.ksu.canvas.requestOptions.MultipleSubmissionsOptions;
import edu.ksu.canvas.requestOptions.SubmissionOptions;

import java.io.IOException;
import java.util.Optional;
Expand All @@ -29,4 +31,13 @@ public interface SubmissionWriter extends CanvasWriter<Submission, SubmissionWri
* @throws IOException If there is an error talking to Canvas
*/
public Optional<Progress> gradeMultipleSubmissionsByCourse(MultipleSubmissionsOptions options) throws IOException;

/**
* Submit an assignment
*
* @param options Parameters object containing parameters such as: userId, submissionType, url, textComment.
* @return The response from Canvas
* @throws IOException If there is an error talking to Canvas
*/
Response submitAssignment(SubmissionOptions options) throws IOException;
}
48 changes: 48 additions & 0 deletions src/main/java/edu/ksu/canvas/requestOptions/SubmissionOptions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package edu.ksu.canvas.requestOptions;

import org.apache.commons.lang3.StringUtils;

/**
* Submission options to submit an assignment
* <p>
* See <a href="https://canvas.instructure.com/doc/api/submissions.html#method.submissions.create">Submit an Assignment</a>
* for more details.
*/
public class SubmissionOptions extends BaseOptions {
private final String courseId;
private final String assignmentId;

public SubmissionOptions(String courseId, String assignmentId) {
if (StringUtils.isBlank(courseId)) {
throw new IllegalArgumentException("courseId must not be null or blank");
}
if (StringUtils.isBlank(assignmentId)) {
throw new IllegalArgumentException("assignmentId must not be null or blank");
}
this.courseId = courseId;
this.assignmentId = assignmentId;
}

public SubmissionOptions userId(String parameter) {
addSingleItem("submission[user_id]", parameter);
return this;
}

public SubmissionOptions url(String parameter) {
addSingleItem("submission[url]", parameter);
return this;
}

public SubmissionOptions textComment(String parameter) {
addSingleItem("comment[text_comment]", parameter);
return this;
}

public SubmissionOptions submissionType(String parameter) {
addSingleItem("submission[submission_type]", parameter);
return this;
}

public String getCourseId() { return courseId; }
public String getAssignmentId() { return assignmentId; }
}