Documentation ¶
Index ¶
- Variables
- func MockClient(t *testing.T, db database.Database, opts connect.Option) qfconnect.QuickFeedServiceClient
- type BaseHookOptions
- type QuickFeedService
- func (s *QuickFeedService) CreateBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.GradingBenchmark], error)
- func (s *QuickFeedService) CreateCourse(ctx context.Context, in *connect.Request[qf.Course]) (*connect.Response[qf.Course], error)
- func (s *QuickFeedService) CreateCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.GradingCriterion], error)
- func (s *QuickFeedService) CreateEnrollment(_ context.Context, in *connect.Request[qf.Enrollment]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) CreateGroup(_ context.Context, in *connect.Request[qf.Group]) (*connect.Response[qf.Group], error)
- func (s *QuickFeedService) CreateReview(_ context.Context, in *connect.Request[qf.ReviewRequest]) (*connect.Response[qf.Review], error)
- func (s *QuickFeedService) DeleteBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) DeleteCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) DeleteGroup(ctx context.Context, in *connect.Request[qf.GroupRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) GetAssignments(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Assignments], error)
- func (s *QuickFeedService) GetCourse(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Course], error)
- func (s *QuickFeedService) GetCourses(_ context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.Courses], error)
- func (s *QuickFeedService) GetEnrollments(_ context.Context, in *connect.Request[qf.EnrollmentRequest]) (*connect.Response[qf.Enrollments], error)
- func (s *QuickFeedService) GetGroup(_ context.Context, in *connect.Request[qf.GroupRequest]) (*connect.Response[qf.Group], error)
- func (s *QuickFeedService) GetGroupsByCourse(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Groups], error)
- func (s *QuickFeedService) GetOrganization(ctx context.Context, in *connect.Request[qf.Organization]) (*connect.Response[qf.Organization], error)
- func (s *QuickFeedService) GetRepositories(ctx context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Repositories], error)
- func (s *QuickFeedService) GetSubmission(_ context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.Submission], error)
- func (s *QuickFeedService) GetSubmissions(ctx context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.Submissions], error)
- func (s *QuickFeedService) GetSubmissionsByCourse(_ context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.CourseSubmissions], error)
- func (s *QuickFeedService) GetUser(ctx context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.User], error)
- func (s *QuickFeedService) GetUsers(_ context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.Users], error)
- func (s *QuickFeedService) IsEmptyRepo(ctx context.Context, in *connect.Request[qf.RepositoryRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) NewQuickFeedHandler(tm *auth.TokenManager) (string, http.Handler)
- func (s *QuickFeedService) RebuildSubmissions(_ context.Context, in *connect.Request[qf.RebuildRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) RegisterRouter(tm *auth.TokenManager, authConfig *oauth2.Config, public string) *http.ServeMux
- func (s *QuickFeedService) SubmissionStream(ctx context.Context, _ *connect.Request[qf.Void], ...) error
- func (s *QuickFeedService) UpdateAssignments(ctx context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateCourse(ctx context.Context, in *connect.Request[qf.Course]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateCourseVisibility(ctx context.Context, in *connect.Request[qf.Enrollment]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateEnrollments(ctx context.Context, in *connect.Request[qf.Enrollments]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateGroup(ctx context.Context, in *connect.Request[qf.Group]) (*connect.Response[qf.Group], error)
- func (s *QuickFeedService) UpdateReview(_ context.Context, in *connect.Request[qf.ReviewRequest]) (*connect.Response[qf.Review], error)
- func (s *QuickFeedService) UpdateSubmission(_ context.Context, in *connect.Request[qf.UpdateSubmissionRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateSubmissions(_ context.Context, in *connect.Request[qf.UpdateSubmissionsRequest]) (*connect.Response[qf.Void], error)
- func (s *QuickFeedService) UpdateUser(ctx context.Context, in *connect.Request[qf.User]) (*connect.Response[qf.Void], error)
- type Server
- type ServerType
Constants ¶
This section is empty.
Variables ¶
var ( ErrGroupNameDuplicate = connect.NewError(connect.CodeAlreadyExists, errors.New("group name already in use")) ErrGroupNameTooLong = connect.NewError(connect.CodeInvalidArgument, errors.New("group name is too long")) ErrGroupNameInvalid = connect.NewError(connect.CodeInvalidArgument, errors.New("group name contains invalid characters")) ErrUserNotInGroup = connect.NewError(connect.CodeNotFound, errors.New("user is not in group")) )
var ErrContextCanceled = errors.New("context canceled because the github interaction took too long. Please try again later")
ErrContextCanceled indicates that method failed because of scm interaction that took longer than expected and not because of some application error
Functions ¶
func MockClient ¶
func MockClient(t *testing.T, db database.Database, opts connect.Option) qfconnect.QuickFeedServiceClient
MockClient returns a QuickFeed client for invoking RPCs.
Types ¶
type BaseHookOptions ¶
BaseHookOptions store the application's callback url and secret
type QuickFeedService ¶
type QuickFeedService struct { qfconnect.UnimplementedQuickFeedServiceHandler // contains filtered or unexported fields }
QuickFeedService holds references to the database and other shared data structures.
func NewQuickFeedService ¶
func NewQuickFeedService(logger *zap.Logger, db database.Database, mgr *scm.Manager, bh BaseHookOptions, runner ci.Runner) *QuickFeedService
NewQuickFeedService returns a QuickFeedService object.
func (*QuickFeedService) CreateBenchmark ¶
func (s *QuickFeedService) CreateBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.GradingBenchmark], error)
CreateBenchmark adds a new grading benchmark for an assignment.
func (*QuickFeedService) CreateCourse ¶
func (s *QuickFeedService) CreateCourse(ctx context.Context, in *connect.Request[qf.Course]) (*connect.Response[qf.Course], error)
CreateCourse creates a new course.
func (*QuickFeedService) CreateCriterion ¶
func (s *QuickFeedService) CreateCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.GradingCriterion], error)
CreateCriterion adds a new grading criterion for an assignment.
func (*QuickFeedService) CreateEnrollment ¶
func (s *QuickFeedService) CreateEnrollment(_ context.Context, in *connect.Request[qf.Enrollment]) (*connect.Response[qf.Void], error)
CreateEnrollment enrolls a new student for the course specified in the request.
func (*QuickFeedService) CreateGroup ¶
func (s *QuickFeedService) CreateGroup(_ context.Context, in *connect.Request[qf.Group]) (*connect.Response[qf.Group], error)
CreateGroup creates a new group in the database. Access policy: Any User enrolled in course and specified as member of the group or a course teacher.
func (*QuickFeedService) CreateReview ¶
func (s *QuickFeedService) CreateReview(_ context.Context, in *connect.Request[qf.ReviewRequest]) (*connect.Response[qf.Review], error)
CreateReview adds a new submission review.
func (*QuickFeedService) DeleteBenchmark ¶
func (s *QuickFeedService) DeleteBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.Void], error)
DeleteBenchmark removes a grading benchmark.
func (*QuickFeedService) DeleteCriterion ¶
func (s *QuickFeedService) DeleteCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.Void], error)
DeleteCriterion removes a grading criterion for an assignment.
func (*QuickFeedService) DeleteGroup ¶
func (s *QuickFeedService) DeleteGroup(ctx context.Context, in *connect.Request[qf.GroupRequest]) (*connect.Response[qf.Void], error)
DeleteGroup removes group record from the database.
func (*QuickFeedService) GetAssignments ¶
func (s *QuickFeedService) GetAssignments(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Assignments], error)
GetAssignments returns a list of all assignments for the given course.
func (*QuickFeedService) GetCourse ¶
func (s *QuickFeedService) GetCourse(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Course], error)
GetCourse returns course information for the given course.
func (*QuickFeedService) GetCourses ¶
func (s *QuickFeedService) GetCourses(_ context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.Courses], error)
GetCourses returns a list of all courses.
func (*QuickFeedService) GetEnrollments ¶
func (s *QuickFeedService) GetEnrollments(_ context.Context, in *connect.Request[qf.EnrollmentRequest]) (*connect.Response[qf.Enrollments], error)
GetEnrollments returns all enrollments for the given course ID or user ID and enrollment status.
func (*QuickFeedService) GetGroup ¶
func (s *QuickFeedService) GetGroup(_ context.Context, in *connect.Request[qf.GroupRequest]) (*connect.Response[qf.Group], error)
GetGroup returns information about the given group ID, or the given user's course group if group ID is 0.
func (*QuickFeedService) GetGroupsByCourse ¶
func (s *QuickFeedService) GetGroupsByCourse(_ context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Groups], error)
GetGroupsByCourse returns groups created for the given course.
func (*QuickFeedService) GetOrganization ¶
func (s *QuickFeedService) GetOrganization(ctx context.Context, in *connect.Request[qf.Organization]) (*connect.Response[qf.Organization], error)
GetOrganization fetches a github organization by name.
func (*QuickFeedService) GetRepositories ¶
func (s *QuickFeedService) GetRepositories(ctx context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Repositories], error)
GetRepositories returns URL strings for repositories of given type for the given course.
func (*QuickFeedService) GetSubmission ¶
func (s *QuickFeedService) GetSubmission(_ context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.Submission], error)
GetSubmission returns a fully populated submission matching the given submission ID if it exists for the given course ID. Used in the frontend to fetch a full submission for a given submission ID and course ID.
func (*QuickFeedService) GetSubmissions ¶
func (s *QuickFeedService) GetSubmissions(ctx context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.Submissions], error)
GetSubmissions returns the submissions matching the query encoded in the action request.
func (*QuickFeedService) GetSubmissionsByCourse ¶
func (s *QuickFeedService) GetSubmissionsByCourse(_ context.Context, in *connect.Request[qf.SubmissionRequest]) (*connect.Response[qf.CourseSubmissions], error)
GetSubmissionsByCourse returns a map of submissions for the given course ID. The map is keyed by either the group ID or enrollment ID depending on request type. SubmissionRequest_GROUP returns a map keyed by group ID. SubmissionRequest_ALL and SubmissionRequest_USER return a map keyed by enrollment ID. The map values are lists of all submissions for the given group or enrollment.
func (*QuickFeedService) GetUser ¶
func (s *QuickFeedService) GetUser(ctx context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.User], error)
GetUser will return current user with active course enrollments to use in separating teacher and admin roles
func (*QuickFeedService) GetUsers ¶
func (s *QuickFeedService) GetUsers(_ context.Context, _ *connect.Request[qf.Void]) (*connect.Response[qf.Users], error)
GetUsers returns a list of all users. Frontend note: This method is called from AdminPage.
func (*QuickFeedService) IsEmptyRepo ¶
func (s *QuickFeedService) IsEmptyRepo(ctx context.Context, in *connect.Request[qf.RepositoryRequest]) (*connect.Response[qf.Void], error)
IsEmptyRepo ensures that group repository is empty and can be deleted.
func (*QuickFeedService) NewQuickFeedHandler ¶
func (s *QuickFeedService) NewQuickFeedHandler(tm *auth.TokenManager) (string, http.Handler)
func (*QuickFeedService) RebuildSubmissions ¶
func (s *QuickFeedService) RebuildSubmissions(_ context.Context, in *connect.Request[qf.RebuildRequest]) (*connect.Response[qf.Void], error)
RebuildSubmissions re-runs the tests for the given assignment and course. A single submission is executed again if the request specifies a submission ID or all submissions if no submission ID is specified.
func (*QuickFeedService) RegisterRouter ¶
func (s *QuickFeedService) RegisterRouter(tm *auth.TokenManager, authConfig *oauth2.Config, public string) *http.ServeMux
RegisterRouter registers http endpoints for authentication API and scm provider webhooks.
func (*QuickFeedService) SubmissionStream ¶
func (s *QuickFeedService) SubmissionStream(ctx context.Context, _ *connect.Request[qf.Void], st *connect.ServerStream[qf.Submission]) error
SubmissionStream adds the the created stream to the stream service. The stream may be used to send the submission results to the frontend. The stream is closed when the client disconnects.
func (*QuickFeedService) UpdateAssignments ¶
func (s *QuickFeedService) UpdateAssignments(ctx context.Context, in *connect.Request[qf.CourseRequest]) (*connect.Response[qf.Void], error)
UpdateAssignments updates the course's assignments record in the database by fetching assignment information from the course's test repository.
func (*QuickFeedService) UpdateBenchmark ¶
func (s *QuickFeedService) UpdateBenchmark(_ context.Context, in *connect.Request[qf.GradingBenchmark]) (*connect.Response[qf.Void], error)
UpdateBenchmark edits a grading benchmark for an assignment.
func (*QuickFeedService) UpdateCourse ¶
func (s *QuickFeedService) UpdateCourse(ctx context.Context, in *connect.Request[qf.Course]) (*connect.Response[qf.Void], error)
UpdateCourse changes the course information details.
func (*QuickFeedService) UpdateCourseVisibility ¶
func (s *QuickFeedService) UpdateCourseVisibility(ctx context.Context, in *connect.Request[qf.Enrollment]) (*connect.Response[qf.Void], error)
UpdateCourseVisibility allows to edit what courses are visible in the sidebar.
func (*QuickFeedService) UpdateCriterion ¶
func (s *QuickFeedService) UpdateCriterion(_ context.Context, in *connect.Request[qf.GradingCriterion]) (*connect.Response[qf.Void], error)
UpdateCriterion edits a grading criterion for an assignment.
func (*QuickFeedService) UpdateEnrollments ¶
func (s *QuickFeedService) UpdateEnrollments(ctx context.Context, in *connect.Request[qf.Enrollments]) (*connect.Response[qf.Void], error)
UpdateEnrollments changes status of all pending enrollments for the specified course to approved. If the request contains a single enrollment, it will be updated to the specified status.
func (*QuickFeedService) UpdateGroup ¶
func (s *QuickFeedService) UpdateGroup(ctx context.Context, in *connect.Request[qf.Group]) (*connect.Response[qf.Group], error)
UpdateGroup updates group information, and returns the updated group.
func (*QuickFeedService) UpdateReview ¶
func (s *QuickFeedService) UpdateReview(_ context.Context, in *connect.Request[qf.ReviewRequest]) (*connect.Response[qf.Review], error)
UpdateReview updates a submission review.
func (*QuickFeedService) UpdateSubmission ¶
func (s *QuickFeedService) UpdateSubmission(_ context.Context, in *connect.Request[qf.UpdateSubmissionRequest]) (*connect.Response[qf.Void], error)
UpdateSubmission is called to approve the given submission or to undo approval.
func (*QuickFeedService) UpdateSubmissions ¶
func (s *QuickFeedService) UpdateSubmissions(_ context.Context, in *connect.Request[qf.UpdateSubmissionsRequest]) (*connect.Response[qf.Void], error)
UpdateSubmissions approves and/or releases all manual reviews for student submission for the given assignment with the given score.
func (*QuickFeedService) UpdateUser ¶
func (s *QuickFeedService) UpdateUser(ctx context.Context, in *connect.Request[qf.User]) (*connect.Response[qf.Void], error)
UpdateUser updates the current users's information and returns the updated user. This function can also promote a user to admin or demote a user.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}