unit googleclassroom; {$MODE objfpc} {$H+} interface uses sysutils, classes, googleservice, restbase, googlebase; type //Top-level schema types TCourse = Class; TDriveFolder = Class; TCourseMaterialSet = Class; TCourseMaterial = Class; TDriveFile = Class; TYouTubeVideo = Class; TLink = Class; TForm = Class; TEmpty = Class; TListCoursesResponse = Class; TCourseAlias = Class; TListCourseAliasesResponse = Class; TInvitation = Class; TListInvitationsResponse = Class; TUserProfile = Class; TName = Class; TGlobalPermission = Class; TTeacher = Class; TListTeachersResponse = Class; TStudent = Class; TListStudentsResponse = Class; TCourseWork = Class; TMaterial = Class; TSharedDriveFile = Class; TDate = Class; TTimeOfDay = Class; TAssignment = Class; TMultipleChoiceQuestion = Class; TListCourseWorkResponse = Class; TStudentSubmission = Class; TAssignmentSubmission = Class; TAttachment = Class; TShortAnswerSubmission = Class; TMultipleChoiceSubmission = Class; TListStudentSubmissionsResponse = Class; TTurnInStudentSubmissionRequest = Class; TReclaimStudentSubmissionRequest = Class; TReturnStudentSubmissionRequest = Class; TModifyAttachmentsRequest = Class; TCourseArray = Array of TCourse; TDriveFolderArray = Array of TDriveFolder; TCourseMaterialSetArray = Array of TCourseMaterialSet; TCourseMaterialArray = Array of TCourseMaterial; TDriveFileArray = Array of TDriveFile; TYouTubeVideoArray = Array of TYouTubeVideo; TLinkArray = Array of TLink; TFormArray = Array of TForm; TEmptyArray = Array of TEmpty; TListCoursesResponseArray = Array of TListCoursesResponse; TCourseAliasArray = Array of TCourseAlias; TListCourseAliasesResponseArray = Array of TListCourseAliasesResponse; TInvitationArray = Array of TInvitation; TListInvitationsResponseArray = Array of TListInvitationsResponse; TUserProfileArray = Array of TUserProfile; TNameArray = Array of TName; TGlobalPermissionArray = Array of TGlobalPermission; TTeacherArray = Array of TTeacher; TListTeachersResponseArray = Array of TListTeachersResponse; TStudentArray = Array of TStudent; TListStudentsResponseArray = Array of TListStudentsResponse; TCourseWorkArray = Array of TCourseWork; TMaterialArray = Array of TMaterial; TSharedDriveFileArray = Array of TSharedDriveFile; TDateArray = Array of TDate; TTimeOfDayArray = Array of TTimeOfDay; TAssignmentArray = Array of TAssignment; TMultipleChoiceQuestionArray = Array of TMultipleChoiceQuestion; TListCourseWorkResponseArray = Array of TListCourseWorkResponse; TStudentSubmissionArray = Array of TStudentSubmission; TAssignmentSubmissionArray = Array of TAssignmentSubmission; TAttachmentArray = Array of TAttachment; TShortAnswerSubmissionArray = Array of TShortAnswerSubmission; TMultipleChoiceSubmissionArray = Array of TMultipleChoiceSubmission; TListStudentSubmissionsResponseArray = Array of TListStudentSubmissionsResponse; TTurnInStudentSubmissionRequestArray = Array of TTurnInStudentSubmissionRequest; TReclaimStudentSubmissionRequestArray = Array of TReclaimStudentSubmissionRequest; TReturnStudentSubmissionRequestArray = Array of TReturnStudentSubmissionRequest; TModifyAttachmentsRequestArray = Array of TModifyAttachmentsRequest; //Anonymous types, using auto-generated names TCourseTypecourseMaterialSetsArray = Array of TCourseMaterialSet; TCourseMaterialSetTypematerialsArray = Array of TCourseMaterial; TListCoursesResponseTypecoursesArray = Array of TCourse; TListCourseAliasesResponseTypealiasesArray = Array of TCourseAlias; TListInvitationsResponseTypeinvitationsArray = Array of TInvitation; TUserProfileTypepermissionsArray = Array of TGlobalPermission; TListTeachersResponseTypeteachersArray = Array of TTeacher; TListStudentsResponseTypestudentsArray = Array of TStudent; TCourseWorkTypematerialsArray = Array of TMaterial; TListCourseWorkResponseTypecourseWorkArray = Array of TCourseWork; TAssignmentSubmissionTypeattachmentsArray = Array of TAttachment; TListStudentSubmissionsResponseTypestudentSubmissionsArray = Array of TStudentSubmission; TModifyAttachmentsRequestTypeaddAttachmentsArray = Array of TAttachment; { -------------------------------------------------------------------- TCourse --------------------------------------------------------------------} TCourse = Class(TGoogleBaseObject) Private Fid : String; Fname : String; Fsection : String; FdescriptionHeading : String; Fdescription : String; Froom : String; FownerId : String; FcreationTime : String; FupdateTime : String; FenrollmentCode : String; FcourseState : String; FalternateLink : String; FteacherGroupEmail : String; FcourseGroupEmail : String; FteacherFolder : TDriveFolder; FcourseMaterialSets : TCourseTypecourseMaterialSetsArray; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Setname(AIndex : Integer; const AValue : String); virtual; Procedure Setsection(AIndex : Integer; const AValue : String); virtual; Procedure SetdescriptionHeading(AIndex : Integer; const AValue : String); virtual; Procedure Setdescription(AIndex : Integer; const AValue : String); virtual; Procedure Setroom(AIndex : Integer; const AValue : String); virtual; Procedure SetownerId(AIndex : Integer; const AValue : String); virtual; Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual; Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual; Procedure SetenrollmentCode(AIndex : Integer; const AValue : String); virtual; Procedure SetcourseState(AIndex : Integer; const AValue : String); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Procedure SetteacherGroupEmail(AIndex : Integer; const AValue : String); virtual; Procedure SetcourseGroupEmail(AIndex : Integer; const AValue : String); virtual; Procedure SetteacherFolder(AIndex : Integer; const AValue : TDriveFolder); virtual; Procedure SetcourseMaterialSets(AIndex : Integer; const AValue : TCourseTypecourseMaterialSetsArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property id : String Index 0 Read Fid Write Setid; Property name : String Index 8 Read Fname Write Setname; Property section : String Index 16 Read Fsection Write Setsection; Property descriptionHeading : String Index 24 Read FdescriptionHeading Write SetdescriptionHeading; Property description : String Index 32 Read Fdescription Write Setdescription; Property room : String Index 40 Read Froom Write Setroom; Property ownerId : String Index 48 Read FownerId Write SetownerId; Property creationTime : String Index 56 Read FcreationTime Write SetcreationTime; Property updateTime : String Index 64 Read FupdateTime Write SetupdateTime; Property enrollmentCode : String Index 72 Read FenrollmentCode Write SetenrollmentCode; Property courseState : String Index 80 Read FcourseState Write SetcourseState; Property alternateLink : String Index 88 Read FalternateLink Write SetalternateLink; Property teacherGroupEmail : String Index 96 Read FteacherGroupEmail Write SetteacherGroupEmail; Property courseGroupEmail : String Index 104 Read FcourseGroupEmail Write SetcourseGroupEmail; Property teacherFolder : TDriveFolder Index 112 Read FteacherFolder Write SetteacherFolder; Property courseMaterialSets : TCourseTypecourseMaterialSetsArray Index 120 Read FcourseMaterialSets Write SetcourseMaterialSets; end; TCourseClass = Class of TCourse; { -------------------------------------------------------------------- TDriveFolder --------------------------------------------------------------------} TDriveFolder = Class(TGoogleBaseObject) Private Fid : String; Ftitle : String; FalternateLink : String; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Public Published Property id : String Index 0 Read Fid Write Setid; Property title : String Index 8 Read Ftitle Write Settitle; Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink; end; TDriveFolderClass = Class of TDriveFolder; { -------------------------------------------------------------------- TCourseMaterialSet --------------------------------------------------------------------} TCourseMaterialSet = Class(TGoogleBaseObject) Private Ftitle : String; Fmaterials : TCourseMaterialSetTypematerialsArray; Protected //Property setters Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure Setmaterials(AIndex : Integer; const AValue : TCourseMaterialSetTypematerialsArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property title : String Index 0 Read Ftitle Write Settitle; Property materials : TCourseMaterialSetTypematerialsArray Index 8 Read Fmaterials Write Setmaterials; end; TCourseMaterialSetClass = Class of TCourseMaterialSet; { -------------------------------------------------------------------- TCourseMaterial --------------------------------------------------------------------} TCourseMaterial = Class(TGoogleBaseObject) Private FdriveFile : TDriveFile; FyouTubeVideo : TYouTubeVideo; Flink : TLink; Fform : TForm; Protected //Property setters Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual; Procedure SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual; Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual; Procedure Setform(AIndex : Integer; const AValue : TForm); virtual; Public Published Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile; Property youTubeVideo : TYouTubeVideo Index 8 Read FyouTubeVideo Write SetyouTubeVideo; Property link : TLink Index 16 Read Flink Write Setlink; Property form : TForm Index 24 Read Fform Write Setform; end; TCourseMaterialClass = Class of TCourseMaterial; { -------------------------------------------------------------------- TDriveFile --------------------------------------------------------------------} TDriveFile = Class(TGoogleBaseObject) Private Fid : String; Ftitle : String; FalternateLink : String; FthumbnailUrl : String; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual; Public Published Property id : String Index 0 Read Fid Write Setid; Property title : String Index 8 Read Ftitle Write Settitle; Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink; Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl; end; TDriveFileClass = Class of TDriveFile; { -------------------------------------------------------------------- TYouTubeVideo --------------------------------------------------------------------} TYouTubeVideo = Class(TGoogleBaseObject) Private Fid : String; Ftitle : String; FalternateLink : String; FthumbnailUrl : String; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual; Public Published Property id : String Index 0 Read Fid Write Setid; Property title : String Index 8 Read Ftitle Write Settitle; Property alternateLink : String Index 16 Read FalternateLink Write SetalternateLink; Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl; end; TYouTubeVideoClass = Class of TYouTubeVideo; { -------------------------------------------------------------------- TLink --------------------------------------------------------------------} TLink = Class(TGoogleBaseObject) Private Furl : String; Ftitle : String; FthumbnailUrl : String; Protected //Property setters Procedure Seturl(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual; Public Published Property url : String Index 0 Read Furl Write Seturl; Property title : String Index 8 Read Ftitle Write Settitle; Property thumbnailUrl : String Index 16 Read FthumbnailUrl Write SetthumbnailUrl; end; TLinkClass = Class of TLink; { -------------------------------------------------------------------- TForm --------------------------------------------------------------------} TForm = Class(TGoogleBaseObject) Private FformUrl : String; FresponseUrl : String; Ftitle : String; FthumbnailUrl : String; Protected //Property setters Procedure SetformUrl(AIndex : Integer; const AValue : String); virtual; Procedure SetresponseUrl(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure SetthumbnailUrl(AIndex : Integer; const AValue : String); virtual; Public Published Property formUrl : String Index 0 Read FformUrl Write SetformUrl; Property responseUrl : String Index 8 Read FresponseUrl Write SetresponseUrl; Property title : String Index 16 Read Ftitle Write Settitle; Property thumbnailUrl : String Index 24 Read FthumbnailUrl Write SetthumbnailUrl; end; TFormClass = Class of TForm; { -------------------------------------------------------------------- TEmpty --------------------------------------------------------------------} TEmpty = Class(TGoogleBaseObject) Private Protected //Property setters Public Published end; TEmptyClass = Class of TEmpty; { -------------------------------------------------------------------- TListCoursesResponse --------------------------------------------------------------------} TListCoursesResponse = Class(TGoogleBaseObject) Private Fcourses : TListCoursesResponseTypecoursesArray; FnextPageToken : String; Protected //Property setters Procedure Setcourses(AIndex : Integer; const AValue : TListCoursesResponseTypecoursesArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property courses : TListCoursesResponseTypecoursesArray Index 0 Read Fcourses Write Setcourses; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListCoursesResponseClass = Class of TListCoursesResponse; { -------------------------------------------------------------------- TCourseAlias --------------------------------------------------------------------} TCourseAlias = Class(TGoogleBaseObject) Private Falias : String; Protected //Property setters Procedure Setalias(AIndex : Integer; const AValue : String); virtual; Public Published Property alias : String Index 0 Read Falias Write Setalias; end; TCourseAliasClass = Class of TCourseAlias; { -------------------------------------------------------------------- TListCourseAliasesResponse --------------------------------------------------------------------} TListCourseAliasesResponse = Class(TGoogleBaseObject) Private Faliases : TListCourseAliasesResponseTypealiasesArray; FnextPageToken : String; Protected //Property setters Procedure Setaliases(AIndex : Integer; const AValue : TListCourseAliasesResponseTypealiasesArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property aliases : TListCourseAliasesResponseTypealiasesArray Index 0 Read Faliases Write Setaliases; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListCourseAliasesResponseClass = Class of TListCourseAliasesResponse; { -------------------------------------------------------------------- TInvitation --------------------------------------------------------------------} TInvitation = Class(TGoogleBaseObject) Private Fid : String; FuserId : String; FcourseId : String; Frole : String; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure SetuserId(AIndex : Integer; const AValue : String); virtual; Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual; Procedure Setrole(AIndex : Integer; const AValue : String); virtual; Public Published Property id : String Index 0 Read Fid Write Setid; Property userId : String Index 8 Read FuserId Write SetuserId; Property courseId : String Index 16 Read FcourseId Write SetcourseId; Property role : String Index 24 Read Frole Write Setrole; end; TInvitationClass = Class of TInvitation; { -------------------------------------------------------------------- TListInvitationsResponse --------------------------------------------------------------------} TListInvitationsResponse = Class(TGoogleBaseObject) Private Finvitations : TListInvitationsResponseTypeinvitationsArray; FnextPageToken : String; Protected //Property setters Procedure Setinvitations(AIndex : Integer; const AValue : TListInvitationsResponseTypeinvitationsArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property invitations : TListInvitationsResponseTypeinvitationsArray Index 0 Read Finvitations Write Setinvitations; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListInvitationsResponseClass = Class of TListInvitationsResponse; { -------------------------------------------------------------------- TUserProfile --------------------------------------------------------------------} TUserProfile = Class(TGoogleBaseObject) Private Fid : String; Fname : TName; FemailAddress : String; FphotoUrl : String; Fpermissions : TUserProfileTypepermissionsArray; Protected //Property setters Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Setname(AIndex : Integer; const AValue : TName); virtual; Procedure SetemailAddress(AIndex : Integer; const AValue : String); virtual; Procedure SetphotoUrl(AIndex : Integer; const AValue : String); virtual; Procedure Setpermissions(AIndex : Integer; const AValue : TUserProfileTypepermissionsArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property id : String Index 0 Read Fid Write Setid; Property name : TName Index 8 Read Fname Write Setname; Property emailAddress : String Index 16 Read FemailAddress Write SetemailAddress; Property photoUrl : String Index 24 Read FphotoUrl Write SetphotoUrl; Property permissions : TUserProfileTypepermissionsArray Index 32 Read Fpermissions Write Setpermissions; end; TUserProfileClass = Class of TUserProfile; { -------------------------------------------------------------------- TName --------------------------------------------------------------------} TName = Class(TGoogleBaseObject) Private FgivenName : String; FfamilyName : String; FfullName : String; Protected //Property setters Procedure SetgivenName(AIndex : Integer; const AValue : String); virtual; Procedure SetfamilyName(AIndex : Integer; const AValue : String); virtual; Procedure SetfullName(AIndex : Integer; const AValue : String); virtual; Public Published Property givenName : String Index 0 Read FgivenName Write SetgivenName; Property familyName : String Index 8 Read FfamilyName Write SetfamilyName; Property fullName : String Index 16 Read FfullName Write SetfullName; end; TNameClass = Class of TName; { -------------------------------------------------------------------- TGlobalPermission --------------------------------------------------------------------} TGlobalPermission = Class(TGoogleBaseObject) Private Fpermission : String; Protected //Property setters Procedure Setpermission(AIndex : Integer; const AValue : String); virtual; Public Published Property permission : String Index 0 Read Fpermission Write Setpermission; end; TGlobalPermissionClass = Class of TGlobalPermission; { -------------------------------------------------------------------- TTeacher --------------------------------------------------------------------} TTeacher = Class(TGoogleBaseObject) Private FcourseId : String; FuserId : String; Fprofile : TUserProfile; Protected //Property setters Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual; Procedure SetuserId(AIndex : Integer; const AValue : String); virtual; Procedure Setprofile(AIndex : Integer; const AValue : TUserProfile); virtual; Public Published Property courseId : String Index 0 Read FcourseId Write SetcourseId; Property userId : String Index 8 Read FuserId Write SetuserId; Property profile : TUserProfile Index 16 Read Fprofile Write Setprofile; end; TTeacherClass = Class of TTeacher; { -------------------------------------------------------------------- TListTeachersResponse --------------------------------------------------------------------} TListTeachersResponse = Class(TGoogleBaseObject) Private Fteachers : TListTeachersResponseTypeteachersArray; FnextPageToken : String; Protected //Property setters Procedure Setteachers(AIndex : Integer; const AValue : TListTeachersResponseTypeteachersArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property teachers : TListTeachersResponseTypeteachersArray Index 0 Read Fteachers Write Setteachers; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListTeachersResponseClass = Class of TListTeachersResponse; { -------------------------------------------------------------------- TStudent --------------------------------------------------------------------} TStudent = Class(TGoogleBaseObject) Private FcourseId : String; FuserId : String; Fprofile : TUserProfile; FstudentWorkFolder : TDriveFolder; Protected //Property setters Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual; Procedure SetuserId(AIndex : Integer; const AValue : String); virtual; Procedure Setprofile(AIndex : Integer; const AValue : TUserProfile); virtual; Procedure SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); virtual; Public Published Property courseId : String Index 0 Read FcourseId Write SetcourseId; Property userId : String Index 8 Read FuserId Write SetuserId; Property profile : TUserProfile Index 16 Read Fprofile Write Setprofile; Property studentWorkFolder : TDriveFolder Index 24 Read FstudentWorkFolder Write SetstudentWorkFolder; end; TStudentClass = Class of TStudent; { -------------------------------------------------------------------- TListStudentsResponse --------------------------------------------------------------------} TListStudentsResponse = Class(TGoogleBaseObject) Private Fstudents : TListStudentsResponseTypestudentsArray; FnextPageToken : String; Protected //Property setters Procedure Setstudents(AIndex : Integer; const AValue : TListStudentsResponseTypestudentsArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property students : TListStudentsResponseTypestudentsArray Index 0 Read Fstudents Write Setstudents; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListStudentsResponseClass = Class of TListStudentsResponse; { -------------------------------------------------------------------- TCourseWork --------------------------------------------------------------------} TCourseWork = Class(TGoogleBaseObject) Private FcourseId : String; Fid : String; Ftitle : String; Fdescription : String; Fmaterials : TCourseWorkTypematerialsArray; Fstate : String; FalternateLink : String; FcreationTime : String; FupdateTime : String; FdueDate : TDate; FdueTime : TTimeOfDay; FmaxPoints : double; FworkType : String; FassociatedWithDeveloper : boolean; FsubmissionModificationMode : String; Fassignment : TAssignment; FmultipleChoiceQuestion : TMultipleChoiceQuestion; Protected //Property setters Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual; Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure Setdescription(AIndex : Integer; const AValue : String); virtual; Procedure Setmaterials(AIndex : Integer; const AValue : TCourseWorkTypematerialsArray); virtual; Procedure Setstate(AIndex : Integer; const AValue : String); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual; Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual; Procedure SetdueDate(AIndex : Integer; const AValue : TDate); virtual; Procedure SetdueTime(AIndex : Integer; const AValue : TTimeOfDay); virtual; Procedure SetmaxPoints(AIndex : Integer; const AValue : double); virtual; Procedure SetworkType(AIndex : Integer; const AValue : String); virtual; Procedure SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); virtual; Procedure SetsubmissionModificationMode(AIndex : Integer; const AValue : String); virtual; Procedure Setassignment(AIndex : Integer; const AValue : TAssignment); virtual; Procedure SetmultipleChoiceQuestion(AIndex : Integer; const AValue : TMultipleChoiceQuestion); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property courseId : String Index 0 Read FcourseId Write SetcourseId; Property id : String Index 8 Read Fid Write Setid; Property title : String Index 16 Read Ftitle Write Settitle; Property description : String Index 24 Read Fdescription Write Setdescription; Property materials : TCourseWorkTypematerialsArray Index 32 Read Fmaterials Write Setmaterials; Property state : String Index 40 Read Fstate Write Setstate; Property alternateLink : String Index 48 Read FalternateLink Write SetalternateLink; Property creationTime : String Index 56 Read FcreationTime Write SetcreationTime; Property updateTime : String Index 64 Read FupdateTime Write SetupdateTime; Property dueDate : TDate Index 72 Read FdueDate Write SetdueDate; Property dueTime : TTimeOfDay Index 80 Read FdueTime Write SetdueTime; Property maxPoints : double Index 88 Read FmaxPoints Write SetmaxPoints; Property workType : String Index 96 Read FworkType Write SetworkType; Property associatedWithDeveloper : boolean Index 104 Read FassociatedWithDeveloper Write SetassociatedWithDeveloper; Property submissionModificationMode : String Index 112 Read FsubmissionModificationMode Write SetsubmissionModificationMode; Property assignment : TAssignment Index 120 Read Fassignment Write Setassignment; Property multipleChoiceQuestion : TMultipleChoiceQuestion Index 128 Read FmultipleChoiceQuestion Write SetmultipleChoiceQuestion; end; TCourseWorkClass = Class of TCourseWork; { -------------------------------------------------------------------- TMaterial --------------------------------------------------------------------} TMaterial = Class(TGoogleBaseObject) Private FdriveFile : TSharedDriveFile; FyoutubeVideo : TYouTubeVideo; Flink : TLink; Fform : TForm; Protected //Property setters Procedure SetdriveFile(AIndex : Integer; const AValue : TSharedDriveFile); virtual; Procedure SetyoutubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual; Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual; Procedure Setform(AIndex : Integer; const AValue : TForm); virtual; Public Published Property driveFile : TSharedDriveFile Index 0 Read FdriveFile Write SetdriveFile; Property youtubeVideo : TYouTubeVideo Index 8 Read FyoutubeVideo Write SetyoutubeVideo; Property link : TLink Index 16 Read Flink Write Setlink; Property form : TForm Index 24 Read Fform Write Setform; end; TMaterialClass = Class of TMaterial; { -------------------------------------------------------------------- TSharedDriveFile --------------------------------------------------------------------} TSharedDriveFile = Class(TGoogleBaseObject) Private FdriveFile : TDriveFile; FshareMode : String; Protected //Property setters Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual; Procedure SetshareMode(AIndex : Integer; const AValue : String); virtual; Public Published Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile; Property shareMode : String Index 8 Read FshareMode Write SetshareMode; end; TSharedDriveFileClass = Class of TSharedDriveFile; { -------------------------------------------------------------------- TDate --------------------------------------------------------------------} TDate = Class(TGoogleBaseObject) Private Fyear : integer; Fmonth : integer; Fday : integer; Protected //Property setters Procedure Setyear(AIndex : Integer; const AValue : integer); virtual; Procedure Setmonth(AIndex : Integer; const AValue : integer); virtual; Procedure Setday(AIndex : Integer; const AValue : integer); virtual; Public Published Property year : integer Index 0 Read Fyear Write Setyear; Property month : integer Index 8 Read Fmonth Write Setmonth; Property day : integer Index 16 Read Fday Write Setday; end; TDateClass = Class of TDate; { -------------------------------------------------------------------- TTimeOfDay --------------------------------------------------------------------} TTimeOfDay = Class(TGoogleBaseObject) Private Fhours : integer; Fminutes : integer; Fseconds : integer; Fnanos : integer; Protected //Property setters Procedure Sethours(AIndex : Integer; const AValue : integer); virtual; Procedure Setminutes(AIndex : Integer; const AValue : integer); virtual; Procedure Setseconds(AIndex : Integer; const AValue : integer); virtual; Procedure Setnanos(AIndex : Integer; const AValue : integer); virtual; Public Published Property hours : integer Index 0 Read Fhours Write Sethours; Property minutes : integer Index 8 Read Fminutes Write Setminutes; Property seconds : integer Index 16 Read Fseconds Write Setseconds; Property nanos : integer Index 24 Read Fnanos Write Setnanos; end; TTimeOfDayClass = Class of TTimeOfDay; { -------------------------------------------------------------------- TAssignment --------------------------------------------------------------------} TAssignment = Class(TGoogleBaseObject) Private FstudentWorkFolder : TDriveFolder; Protected //Property setters Procedure SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); virtual; Public Published Property studentWorkFolder : TDriveFolder Index 0 Read FstudentWorkFolder Write SetstudentWorkFolder; end; TAssignmentClass = Class of TAssignment; { -------------------------------------------------------------------- TMultipleChoiceQuestion --------------------------------------------------------------------} TMultipleChoiceQuestion = Class(TGoogleBaseObject) Private Fchoices : TStringArray; Protected //Property setters Procedure Setchoices(AIndex : Integer; const AValue : TStringArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property choices : TStringArray Index 0 Read Fchoices Write Setchoices; end; TMultipleChoiceQuestionClass = Class of TMultipleChoiceQuestion; { -------------------------------------------------------------------- TListCourseWorkResponse --------------------------------------------------------------------} TListCourseWorkResponse = Class(TGoogleBaseObject) Private FcourseWork : TListCourseWorkResponseTypecourseWorkArray; FnextPageToken : String; Protected //Property setters Procedure SetcourseWork(AIndex : Integer; const AValue : TListCourseWorkResponseTypecourseWorkArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property courseWork : TListCourseWorkResponseTypecourseWorkArray Index 0 Read FcourseWork Write SetcourseWork; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListCourseWorkResponseClass = Class of TListCourseWorkResponse; { -------------------------------------------------------------------- TStudentSubmission --------------------------------------------------------------------} TStudentSubmission = Class(TGoogleBaseObject) Private FcourseId : String; FcourseWorkId : String; Fid : String; FuserId : String; FcreationTime : String; FupdateTime : String; Fstate : String; Flate : boolean; FdraftGrade : double; FassignedGrade : double; FalternateLink : String; FcourseWorkType : String; FassociatedWithDeveloper : boolean; FassignmentSubmission : TAssignmentSubmission; FshortAnswerSubmission : TShortAnswerSubmission; FmultipleChoiceSubmission : TMultipleChoiceSubmission; Protected //Property setters Procedure SetcourseId(AIndex : Integer; const AValue : String); virtual; Procedure SetcourseWorkId(AIndex : Integer; const AValue : String); virtual; Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure SetuserId(AIndex : Integer; const AValue : String); virtual; Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual; Procedure SetupdateTime(AIndex : Integer; const AValue : String); virtual; Procedure Setstate(AIndex : Integer; const AValue : String); virtual; Procedure Setlate(AIndex : Integer; const AValue : boolean); virtual; Procedure SetdraftGrade(AIndex : Integer; const AValue : double); virtual; Procedure SetassignedGrade(AIndex : Integer; const AValue : double); virtual; Procedure SetalternateLink(AIndex : Integer; const AValue : String); virtual; Procedure SetcourseWorkType(AIndex : Integer; const AValue : String); virtual; Procedure SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); virtual; Procedure SetassignmentSubmission(AIndex : Integer; const AValue : TAssignmentSubmission); virtual; Procedure SetshortAnswerSubmission(AIndex : Integer; const AValue : TShortAnswerSubmission); virtual; Procedure SetmultipleChoiceSubmission(AIndex : Integer; const AValue : TMultipleChoiceSubmission); virtual; Public Published Property courseId : String Index 0 Read FcourseId Write SetcourseId; Property courseWorkId : String Index 8 Read FcourseWorkId Write SetcourseWorkId; Property id : String Index 16 Read Fid Write Setid; Property userId : String Index 24 Read FuserId Write SetuserId; Property creationTime : String Index 32 Read FcreationTime Write SetcreationTime; Property updateTime : String Index 40 Read FupdateTime Write SetupdateTime; Property state : String Index 48 Read Fstate Write Setstate; Property late : boolean Index 56 Read Flate Write Setlate; Property draftGrade : double Index 64 Read FdraftGrade Write SetdraftGrade; Property assignedGrade : double Index 72 Read FassignedGrade Write SetassignedGrade; Property alternateLink : String Index 80 Read FalternateLink Write SetalternateLink; Property courseWorkType : String Index 88 Read FcourseWorkType Write SetcourseWorkType; Property associatedWithDeveloper : boolean Index 96 Read FassociatedWithDeveloper Write SetassociatedWithDeveloper; Property assignmentSubmission : TAssignmentSubmission Index 104 Read FassignmentSubmission Write SetassignmentSubmission; Property shortAnswerSubmission : TShortAnswerSubmission Index 112 Read FshortAnswerSubmission Write SetshortAnswerSubmission; Property multipleChoiceSubmission : TMultipleChoiceSubmission Index 120 Read FmultipleChoiceSubmission Write SetmultipleChoiceSubmission; end; TStudentSubmissionClass = Class of TStudentSubmission; { -------------------------------------------------------------------- TAssignmentSubmission --------------------------------------------------------------------} TAssignmentSubmission = Class(TGoogleBaseObject) Private Fattachments : TAssignmentSubmissionTypeattachmentsArray; Protected //Property setters Procedure Setattachments(AIndex : Integer; const AValue : TAssignmentSubmissionTypeattachmentsArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property attachments : TAssignmentSubmissionTypeattachmentsArray Index 0 Read Fattachments Write Setattachments; end; TAssignmentSubmissionClass = Class of TAssignmentSubmission; { -------------------------------------------------------------------- TAttachment --------------------------------------------------------------------} TAttachment = Class(TGoogleBaseObject) Private FdriveFile : TDriveFile; FyouTubeVideo : TYouTubeVideo; Flink : TLink; Fform : TForm; Protected //Property setters Procedure SetdriveFile(AIndex : Integer; const AValue : TDriveFile); virtual; Procedure SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); virtual; Procedure Setlink(AIndex : Integer; const AValue : TLink); virtual; Procedure Setform(AIndex : Integer; const AValue : TForm); virtual; Public Published Property driveFile : TDriveFile Index 0 Read FdriveFile Write SetdriveFile; Property youTubeVideo : TYouTubeVideo Index 8 Read FyouTubeVideo Write SetyouTubeVideo; Property link : TLink Index 16 Read Flink Write Setlink; Property form : TForm Index 24 Read Fform Write Setform; end; TAttachmentClass = Class of TAttachment; { -------------------------------------------------------------------- TShortAnswerSubmission --------------------------------------------------------------------} TShortAnswerSubmission = Class(TGoogleBaseObject) Private Fanswer : String; Protected //Property setters Procedure Setanswer(AIndex : Integer; const AValue : String); virtual; Public Published Property answer : String Index 0 Read Fanswer Write Setanswer; end; TShortAnswerSubmissionClass = Class of TShortAnswerSubmission; { -------------------------------------------------------------------- TMultipleChoiceSubmission --------------------------------------------------------------------} TMultipleChoiceSubmission = Class(TGoogleBaseObject) Private Fanswer : String; Protected //Property setters Procedure Setanswer(AIndex : Integer; const AValue : String); virtual; Public Published Property answer : String Index 0 Read Fanswer Write Setanswer; end; TMultipleChoiceSubmissionClass = Class of TMultipleChoiceSubmission; { -------------------------------------------------------------------- TListStudentSubmissionsResponse --------------------------------------------------------------------} TListStudentSubmissionsResponse = Class(TGoogleBaseObject) Private FstudentSubmissions : TListStudentSubmissionsResponseTypestudentSubmissionsArray; FnextPageToken : String; Protected //Property setters Procedure SetstudentSubmissions(AIndex : Integer; const AValue : TListStudentSubmissionsResponseTypestudentSubmissionsArray); virtual; Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property studentSubmissions : TListStudentSubmissionsResponseTypestudentSubmissionsArray Index 0 Read FstudentSubmissions Write SetstudentSubmissions; Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; end; TListStudentSubmissionsResponseClass = Class of TListStudentSubmissionsResponse; { -------------------------------------------------------------------- TTurnInStudentSubmissionRequest --------------------------------------------------------------------} TTurnInStudentSubmissionRequest = Class(TGoogleBaseObject) Private Protected //Property setters Public Published end; TTurnInStudentSubmissionRequestClass = Class of TTurnInStudentSubmissionRequest; { -------------------------------------------------------------------- TReclaimStudentSubmissionRequest --------------------------------------------------------------------} TReclaimStudentSubmissionRequest = Class(TGoogleBaseObject) Private Protected //Property setters Public Published end; TReclaimStudentSubmissionRequestClass = Class of TReclaimStudentSubmissionRequest; { -------------------------------------------------------------------- TReturnStudentSubmissionRequest --------------------------------------------------------------------} TReturnStudentSubmissionRequest = Class(TGoogleBaseObject) Private Protected //Property setters Public Published end; TReturnStudentSubmissionRequestClass = Class of TReturnStudentSubmissionRequest; { -------------------------------------------------------------------- TModifyAttachmentsRequest --------------------------------------------------------------------} TModifyAttachmentsRequest = Class(TGoogleBaseObject) Private FaddAttachments : TModifyAttachmentsRequestTypeaddAttachmentsArray; Protected //Property setters Procedure SetaddAttachments(AIndex : Integer; const AValue : TModifyAttachmentsRequestTypeaddAttachmentsArray); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property addAttachments : TModifyAttachmentsRequestTypeaddAttachmentsArray Index 0 Read FaddAttachments Write SetaddAttachments; end; TModifyAttachmentsRequestClass = Class of TModifyAttachmentsRequest; { -------------------------------------------------------------------- TCoursesAliasesResource --------------------------------------------------------------------} //Optional query Options for TCoursesAliasesResource, method List TCoursesAliasesListOptions = Record pageSize : integer; pageToken : String; end; TCoursesAliasesResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(courseId: string; aCourseAlias : TCourseAlias) : TCourseAlias;overload; Function Delete(courseId: string; alias: string) : TEmpty; Function List(courseId: string; AQuery : string = '') : TListCourseAliasesResponse; Function List(courseId: string; AQuery : TCoursesAliaseslistOptions) : TListCourseAliasesResponse; end; { -------------------------------------------------------------------- TCoursesTeachersResource --------------------------------------------------------------------} //Optional query Options for TCoursesTeachersResource, method List TCoursesTeachersListOptions = Record pageSize : integer; pageToken : String; end; TCoursesTeachersResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(courseId: string; aTeacher : TTeacher) : TTeacher;overload; Function Get(courseId: string; userId: string) : TTeacher; Function Delete(courseId: string; userId: string) : TEmpty; Function List(courseId: string; AQuery : string = '') : TListTeachersResponse; Function List(courseId: string; AQuery : TCoursesTeacherslistOptions) : TListTeachersResponse; end; { -------------------------------------------------------------------- TCoursesStudentsResource --------------------------------------------------------------------} //Optional query Options for TCoursesStudentsResource, method Create TCoursesStudentsCreateOptions = Record enrollmentCode : String; end; //Optional query Options for TCoursesStudentsResource, method List TCoursesStudentsListOptions = Record pageSize : integer; pageToken : String; end; TCoursesStudentsResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(courseId: string; aStudent : TStudent; AQuery : string = '') : TStudent;overload; Function Create(courseId: string; aStudent : TStudent; AQuery : TCoursesStudentscreateOptions) : TStudent;overload; Function Get(courseId: string; userId: string) : TStudent; Function Delete(courseId: string; userId: string) : TEmpty; Function List(courseId: string; AQuery : string = '') : TListStudentsResponse; Function List(courseId: string; AQuery : TCoursesStudentslistOptions) : TListStudentsResponse; end; { -------------------------------------------------------------------- TCoursesCourseWorkStudentSubmissionsResource --------------------------------------------------------------------} //Optional query Options for TCoursesCourseWorkStudentSubmissionsResource, method Patch TCoursesCourseWorkStudentSubmissionsPatchOptions = Record updateMask : String; end; //Optional query Options for TCoursesCourseWorkStudentSubmissionsResource, method List TCoursesCourseWorkStudentSubmissionsListOptions = Record userId : String; states : String; late : String; pageSize : integer; pageToken : String; end; TCoursesCourseWorkStudentSubmissionsResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Get(courseId: string; courseWorkId: string; id: string) : TStudentSubmission; Function Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : string = '') : TStudentSubmission; Function Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : TCoursesCourseWorkStudentSubmissionspatchOptions) : TStudentSubmission; Function List(courseId: string; courseWorkId: string; AQuery : string = '') : TListStudentSubmissionsResponse; Function List(courseId: string; courseWorkId: string; AQuery : TCoursesCourseWorkStudentSubmissionslistOptions) : TListStudentSubmissionsResponse; Function TurnIn(courseId: string; courseWorkId: string; id: string; aTurnInStudentSubmissionRequest : TTurnInStudentSubmissionRequest) : TEmpty; Function Reclaim(courseId: string; courseWorkId: string; id: string; aReclaimStudentSubmissionRequest : TReclaimStudentSubmissionRequest) : TEmpty; Function Return(courseId: string; courseWorkId: string; id: string; aReturnStudentSubmissionRequest : TReturnStudentSubmissionRequest) : TEmpty; Function ModifyAttachments(courseId: string; courseWorkId: string; id: string; aModifyAttachmentsRequest : TModifyAttachmentsRequest) : TStudentSubmission; end; { -------------------------------------------------------------------- TCoursesCourseWorkResource --------------------------------------------------------------------} //Optional query Options for TCoursesCourseWorkResource, method List TCoursesCourseWorkListOptions = Record courseWorkStates : String; orderBy : String; pageSize : integer; pageToken : String; end; TCoursesCourseWorkResource = Class(TGoogleResource) Private FStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; Function GetStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual; Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(courseId: string; aCourseWork : TCourseWork) : TCourseWork;overload; Function Get(courseId: string; id: string) : TCourseWork; Function List(courseId: string; AQuery : string = '') : TListCourseWorkResponse; Function List(courseId: string; AQuery : TCoursesCourseWorklistOptions) : TListCourseWorkResponse; Function CreateStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Function CreateStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Property StudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetStudentSubmissionsInstance; end; { -------------------------------------------------------------------- TCoursesResource --------------------------------------------------------------------} //Optional query Options for TCoursesResource, method Patch TCoursesPatchOptions = Record updateMask : String; end; //Optional query Options for TCoursesResource, method List TCoursesListOptions = Record studentId : String; teacherId : String; pageSize : integer; pageToken : String; end; TCoursesResource = Class(TGoogleResource) Private FAliasesInstance : TCoursesAliasesResource; FTeachersInstance : TCoursesTeachersResource; FStudentsInstance : TCoursesStudentsResource; FCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; FCourseWorkInstance : TCoursesCourseWorkResource; Function GetAliasesInstance : TCoursesAliasesResource;virtual; Function GetTeachersInstance : TCoursesTeachersResource;virtual; Function GetStudentsInstance : TCoursesStudentsResource;virtual; Function GetCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual; Function GetCourseWorkInstance : TCoursesCourseWorkResource;virtual; Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(aCourse : TCourse) : TCourse;overload; Function Get(id: string) : TCourse; Function Update(id: string; aCourse : TCourse) : TCourse; Function Patch(id: string; aCourse : TCourse; AQuery : string = '') : TCourse; Function Patch(id: string; aCourse : TCourse; AQuery : TCoursespatchOptions) : TCourse; Function Delete(id: string) : TEmpty; Function List(AQuery : string = '') : TListCoursesResponse; Function List(AQuery : TCourseslistOptions) : TListCoursesResponse; Function CreateAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;virtual;overload; Function CreateAliasesResource : TCoursesAliasesResource;virtual;overload; Function CreateTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;virtual;overload; Function CreateTeachersResource : TCoursesTeachersResource;virtual;overload; Function CreateStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;virtual;overload; Function CreateStudentsResource : TCoursesStudentsResource;virtual;overload; Function CreateCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Function CreateCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Function CreateCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;virtual;overload; Function CreateCourseWorkResource : TCoursesCourseWorkResource;virtual;overload; Property AliasesResource : TCoursesAliasesResource Read GetAliasesInstance; Property TeachersResource : TCoursesTeachersResource Read GetTeachersInstance; Property StudentsResource : TCoursesStudentsResource Read GetStudentsInstance; Property CourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetCourseWorkStudentSubmissionsInstance; Property CourseWorkResource : TCoursesCourseWorkResource Read GetCourseWorkInstance; end; { -------------------------------------------------------------------- TInvitationsResource --------------------------------------------------------------------} //Optional query Options for TInvitationsResource, method List TInvitationsListOptions = Record userId : String; courseId : String; pageSize : integer; pageToken : String; end; TInvitationsResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Create(aInvitation : TInvitation) : TInvitation;overload; Function Get(id: string) : TInvitation; Function Delete(id: string) : TEmpty; Function List(AQuery : string = '') : TListInvitationsResponse; Function List(AQuery : TInvitationslistOptions) : TListInvitationsResponse; Function Accept(id: string) : TEmpty; end; { -------------------------------------------------------------------- TUserProfilesResource --------------------------------------------------------------------} TUserProfilesResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Get(userId: string) : TUserProfile; end; { -------------------------------------------------------------------- TClassroomAPI --------------------------------------------------------------------} TClassroomAPI = Class(TGoogleAPI) Private FCoursesAliasesInstance : TCoursesAliasesResource; FCoursesTeachersInstance : TCoursesTeachersResource; FCoursesStudentsInstance : TCoursesStudentsResource; FCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; FCoursesCourseWorkInstance : TCoursesCourseWorkResource; FCoursesInstance : TCoursesResource; FInvitationsInstance : TInvitationsResource; FUserProfilesInstance : TUserProfilesResource; Function GetCoursesAliasesInstance : TCoursesAliasesResource;virtual; Function GetCoursesTeachersInstance : TCoursesTeachersResource;virtual; Function GetCoursesStudentsInstance : TCoursesStudentsResource;virtual; Function GetCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource;virtual; Function GetCoursesCourseWorkInstance : TCoursesCourseWorkResource;virtual; Function GetCoursesInstance : TCoursesResource;virtual; Function GetInvitationsInstance : TInvitationsResource;virtual; Function GetUserProfilesInstance : TUserProfilesResource;virtual; Public //Override class functions with API info Class Function APIName : String; override; Class Function APIVersion : String; override; Class Function APIRevision : String; override; Class Function APIID : String; override; Class Function APITitle : String; override; Class Function APIDescription : String; override; Class Function APIOwnerDomain : String; override; Class Function APIOwnerName : String; override; Class Function APIIcon16 : String; override; Class Function APIIcon32 : String; override; Class Function APIdocumentationLink : String; override; Class Function APIrootUrl : string; override; Class Function APIbasePath : string;override; Class Function APIbaseURL : String;override; Class Function APIProtocol : string;override; Class Function APIservicePath : string;override; Class Function APIbatchPath : String;override; Class Function APIAuthScopes : TScopeInfoArray;override; Class Function APINeedsAuth : Boolean;override; Class Procedure RegisterAPIResources; override; //Add create function for resources Function CreateCoursesAliasesResource(AOwner : TComponent) : TCoursesAliasesResource;virtual;overload; Function CreateCoursesAliasesResource : TCoursesAliasesResource;virtual;overload; Function CreateCoursesTeachersResource(AOwner : TComponent) : TCoursesTeachersResource;virtual;overload; Function CreateCoursesTeachersResource : TCoursesTeachersResource;virtual;overload; Function CreateCoursesStudentsResource(AOwner : TComponent) : TCoursesStudentsResource;virtual;overload; Function CreateCoursesStudentsResource : TCoursesStudentsResource;virtual;overload; Function CreateCoursesCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Function CreateCoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource;virtual;overload; Function CreateCoursesCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource;virtual;overload; Function CreateCoursesCourseWorkResource : TCoursesCourseWorkResource;virtual;overload; Function CreateCoursesResource(AOwner : TComponent) : TCoursesResource;virtual;overload; Function CreateCoursesResource : TCoursesResource;virtual;overload; Function CreateInvitationsResource(AOwner : TComponent) : TInvitationsResource;virtual;overload; Function CreateInvitationsResource : TInvitationsResource;virtual;overload; Function CreateUserProfilesResource(AOwner : TComponent) : TUserProfilesResource;virtual;overload; Function CreateUserProfilesResource : TUserProfilesResource;virtual;overload; //Add default on-demand instances for resources Property CoursesAliasesResource : TCoursesAliasesResource Read GetCoursesAliasesInstance; Property CoursesTeachersResource : TCoursesTeachersResource Read GetCoursesTeachersInstance; Property CoursesStudentsResource : TCoursesStudentsResource Read GetCoursesStudentsInstance; Property CoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource Read GetCoursesCourseWorkStudentSubmissionsInstance; Property CoursesCourseWorkResource : TCoursesCourseWorkResource Read GetCoursesCourseWorkInstance; Property CoursesResource : TCoursesResource Read GetCoursesInstance; Property InvitationsResource : TInvitationsResource Read GetInvitationsInstance; Property UserProfilesResource : TUserProfilesResource Read GetUserProfilesInstance; end; implementation { -------------------------------------------------------------------- TCourse --------------------------------------------------------------------} Procedure TCourse.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.Setname(AIndex : Integer; const AValue : String); begin If (Fname=AValue) then exit; Fname:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.Setsection(AIndex : Integer; const AValue : String); begin If (Fsection=AValue) then exit; Fsection:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetdescriptionHeading(AIndex : Integer; const AValue : String); begin If (FdescriptionHeading=AValue) then exit; FdescriptionHeading:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.Setdescription(AIndex : Integer; const AValue : String); begin If (Fdescription=AValue) then exit; Fdescription:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.Setroom(AIndex : Integer; const AValue : String); begin If (Froom=AValue) then exit; Froom:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetownerId(AIndex : Integer; const AValue : String); begin If (FownerId=AValue) then exit; FownerId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetcreationTime(AIndex : Integer; const AValue : String); begin If (FcreationTime=AValue) then exit; FcreationTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetupdateTime(AIndex : Integer; const AValue : String); begin If (FupdateTime=AValue) then exit; FupdateTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetenrollmentCode(AIndex : Integer; const AValue : String); begin If (FenrollmentCode=AValue) then exit; FenrollmentCode:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetcourseState(AIndex : Integer; const AValue : String); begin If (FcourseState=AValue) then exit; FcourseState:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetteacherGroupEmail(AIndex : Integer; const AValue : String); begin If (FteacherGroupEmail=AValue) then exit; FteacherGroupEmail:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetcourseGroupEmail(AIndex : Integer; const AValue : String); begin If (FcourseGroupEmail=AValue) then exit; FcourseGroupEmail:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetteacherFolder(AIndex : Integer; const AValue : TDriveFolder); begin If (FteacherFolder=AValue) then exit; FteacherFolder:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourse.SetcourseMaterialSets(AIndex : Integer; const AValue : TCourseTypecourseMaterialSetsArray); begin If (FcourseMaterialSets=AValue) then exit; FcourseMaterialSets:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TCourse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'coursematerialsets' : SetLength(FcourseMaterialSets,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TDriveFolder --------------------------------------------------------------------} Procedure TDriveFolder.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDriveFolder.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDriveFolder.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TCourseMaterialSet --------------------------------------------------------------------} Procedure TCourseMaterialSet.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseMaterialSet.Setmaterials(AIndex : Integer; const AValue : TCourseMaterialSetTypematerialsArray); begin If (Fmaterials=AValue) then exit; Fmaterials:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TCourseMaterialSet.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'materials' : SetLength(Fmaterials,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TCourseMaterial --------------------------------------------------------------------} Procedure TCourseMaterial.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); begin If (FdriveFile=AValue) then exit; FdriveFile:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseMaterial.SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); begin If (FyouTubeVideo=AValue) then exit; FyouTubeVideo:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseMaterial.Setlink(AIndex : Integer; const AValue : TLink); begin If (Flink=AValue) then exit; Flink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseMaterial.Setform(AIndex : Integer; const AValue : TForm); begin If (Fform=AValue) then exit; Fform:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TDriveFile --------------------------------------------------------------------} Procedure TDriveFile.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDriveFile.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDriveFile.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDriveFile.SetthumbnailUrl(AIndex : Integer; const AValue : String); begin If (FthumbnailUrl=AValue) then exit; FthumbnailUrl:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TYouTubeVideo --------------------------------------------------------------------} Procedure TYouTubeVideo.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TYouTubeVideo.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TYouTubeVideo.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TYouTubeVideo.SetthumbnailUrl(AIndex : Integer; const AValue : String); begin If (FthumbnailUrl=AValue) then exit; FthumbnailUrl:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TLink --------------------------------------------------------------------} Procedure TLink.Seturl(AIndex : Integer; const AValue : String); begin If (Furl=AValue) then exit; Furl:=AValue; MarkPropertyChanged(AIndex); end; Procedure TLink.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TLink.SetthumbnailUrl(AIndex : Integer; const AValue : String); begin If (FthumbnailUrl=AValue) then exit; FthumbnailUrl:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TForm --------------------------------------------------------------------} Procedure TForm.SetformUrl(AIndex : Integer; const AValue : String); begin If (FformUrl=AValue) then exit; FformUrl:=AValue; MarkPropertyChanged(AIndex); end; Procedure TForm.SetresponseUrl(AIndex : Integer; const AValue : String); begin If (FresponseUrl=AValue) then exit; FresponseUrl:=AValue; MarkPropertyChanged(AIndex); end; Procedure TForm.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TForm.SetthumbnailUrl(AIndex : Integer; const AValue : String); begin If (FthumbnailUrl=AValue) then exit; FthumbnailUrl:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TEmpty --------------------------------------------------------------------} { -------------------------------------------------------------------- TListCoursesResponse --------------------------------------------------------------------} Procedure TListCoursesResponse.Setcourses(AIndex : Integer; const AValue : TListCoursesResponseTypecoursesArray); begin If (Fcourses=AValue) then exit; Fcourses:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListCoursesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListCoursesResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'courses' : SetLength(Fcourses,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TCourseAlias --------------------------------------------------------------------} Procedure TCourseAlias.Setalias(AIndex : Integer; const AValue : String); begin If (Falias=AValue) then exit; Falias:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TListCourseAliasesResponse --------------------------------------------------------------------} Procedure TListCourseAliasesResponse.Setaliases(AIndex : Integer; const AValue : TListCourseAliasesResponseTypealiasesArray); begin If (Faliases=AValue) then exit; Faliases:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListCourseAliasesResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListCourseAliasesResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'aliases' : SetLength(Faliases,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TInvitation --------------------------------------------------------------------} Procedure TInvitation.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TInvitation.SetuserId(AIndex : Integer; const AValue : String); begin If (FuserId=AValue) then exit; FuserId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TInvitation.SetcourseId(AIndex : Integer; const AValue : String); begin If (FcourseId=AValue) then exit; FcourseId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TInvitation.Setrole(AIndex : Integer; const AValue : String); begin If (Frole=AValue) then exit; Frole:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TListInvitationsResponse --------------------------------------------------------------------} Procedure TListInvitationsResponse.Setinvitations(AIndex : Integer; const AValue : TListInvitationsResponseTypeinvitationsArray); begin If (Finvitations=AValue) then exit; Finvitations:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListInvitationsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListInvitationsResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'invitations' : SetLength(Finvitations,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TUserProfile --------------------------------------------------------------------} Procedure TUserProfile.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TUserProfile.Setname(AIndex : Integer; const AValue : TName); begin If (Fname=AValue) then exit; Fname:=AValue; MarkPropertyChanged(AIndex); end; Procedure TUserProfile.SetemailAddress(AIndex : Integer; const AValue : String); begin If (FemailAddress=AValue) then exit; FemailAddress:=AValue; MarkPropertyChanged(AIndex); end; Procedure TUserProfile.SetphotoUrl(AIndex : Integer; const AValue : String); begin If (FphotoUrl=AValue) then exit; FphotoUrl:=AValue; MarkPropertyChanged(AIndex); end; Procedure TUserProfile.Setpermissions(AIndex : Integer; const AValue : TUserProfileTypepermissionsArray); begin If (Fpermissions=AValue) then exit; Fpermissions:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TUserProfile.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'permissions' : SetLength(Fpermissions,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TName --------------------------------------------------------------------} Procedure TName.SetgivenName(AIndex : Integer; const AValue : String); begin If (FgivenName=AValue) then exit; FgivenName:=AValue; MarkPropertyChanged(AIndex); end; Procedure TName.SetfamilyName(AIndex : Integer; const AValue : String); begin If (FfamilyName=AValue) then exit; FfamilyName:=AValue; MarkPropertyChanged(AIndex); end; Procedure TName.SetfullName(AIndex : Integer; const AValue : String); begin If (FfullName=AValue) then exit; FfullName:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TGlobalPermission --------------------------------------------------------------------} Procedure TGlobalPermission.Setpermission(AIndex : Integer; const AValue : String); begin If (Fpermission=AValue) then exit; Fpermission:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TTeacher --------------------------------------------------------------------} Procedure TTeacher.SetcourseId(AIndex : Integer; const AValue : String); begin If (FcourseId=AValue) then exit; FcourseId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TTeacher.SetuserId(AIndex : Integer; const AValue : String); begin If (FuserId=AValue) then exit; FuserId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TTeacher.Setprofile(AIndex : Integer; const AValue : TUserProfile); begin If (Fprofile=AValue) then exit; Fprofile:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TListTeachersResponse --------------------------------------------------------------------} Procedure TListTeachersResponse.Setteachers(AIndex : Integer; const AValue : TListTeachersResponseTypeteachersArray); begin If (Fteachers=AValue) then exit; Fteachers:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListTeachersResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListTeachersResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'teachers' : SetLength(Fteachers,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TStudent --------------------------------------------------------------------} Procedure TStudent.SetcourseId(AIndex : Integer; const AValue : String); begin If (FcourseId=AValue) then exit; FcourseId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudent.SetuserId(AIndex : Integer; const AValue : String); begin If (FuserId=AValue) then exit; FuserId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudent.Setprofile(AIndex : Integer; const AValue : TUserProfile); begin If (Fprofile=AValue) then exit; Fprofile:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudent.SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); begin If (FstudentWorkFolder=AValue) then exit; FstudentWorkFolder:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TListStudentsResponse --------------------------------------------------------------------} Procedure TListStudentsResponse.Setstudents(AIndex : Integer; const AValue : TListStudentsResponseTypestudentsArray); begin If (Fstudents=AValue) then exit; Fstudents:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListStudentsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListStudentsResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'students' : SetLength(Fstudents,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TCourseWork --------------------------------------------------------------------} Procedure TCourseWork.SetcourseId(AIndex : Integer; const AValue : String); begin If (FcourseId=AValue) then exit; FcourseId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Setdescription(AIndex : Integer; const AValue : String); begin If (Fdescription=AValue) then exit; Fdescription:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Setmaterials(AIndex : Integer; const AValue : TCourseWorkTypematerialsArray); begin If (Fmaterials=AValue) then exit; Fmaterials:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Setstate(AIndex : Integer; const AValue : String); begin If (Fstate=AValue) then exit; Fstate:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetcreationTime(AIndex : Integer; const AValue : String); begin If (FcreationTime=AValue) then exit; FcreationTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetupdateTime(AIndex : Integer; const AValue : String); begin If (FupdateTime=AValue) then exit; FupdateTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetdueDate(AIndex : Integer; const AValue : TDate); begin If (FdueDate=AValue) then exit; FdueDate:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetdueTime(AIndex : Integer; const AValue : TTimeOfDay); begin If (FdueTime=AValue) then exit; FdueTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetmaxPoints(AIndex : Integer; const AValue : double); begin If (FmaxPoints=AValue) then exit; FmaxPoints:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetworkType(AIndex : Integer; const AValue : String); begin If (FworkType=AValue) then exit; FworkType:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); begin If (FassociatedWithDeveloper=AValue) then exit; FassociatedWithDeveloper:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetsubmissionModificationMode(AIndex : Integer; const AValue : String); begin If (FsubmissionModificationMode=AValue) then exit; FsubmissionModificationMode:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.Setassignment(AIndex : Integer; const AValue : TAssignment); begin If (Fassignment=AValue) then exit; Fassignment:=AValue; MarkPropertyChanged(AIndex); end; Procedure TCourseWork.SetmultipleChoiceQuestion(AIndex : Integer; const AValue : TMultipleChoiceQuestion); begin If (FmultipleChoiceQuestion=AValue) then exit; FmultipleChoiceQuestion:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TCourseWork.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'materials' : SetLength(Fmaterials,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TMaterial --------------------------------------------------------------------} Procedure TMaterial.SetdriveFile(AIndex : Integer; const AValue : TSharedDriveFile); begin If (FdriveFile=AValue) then exit; FdriveFile:=AValue; MarkPropertyChanged(AIndex); end; Procedure TMaterial.SetyoutubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); begin If (FyoutubeVideo=AValue) then exit; FyoutubeVideo:=AValue; MarkPropertyChanged(AIndex); end; Procedure TMaterial.Setlink(AIndex : Integer; const AValue : TLink); begin If (Flink=AValue) then exit; Flink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TMaterial.Setform(AIndex : Integer; const AValue : TForm); begin If (Fform=AValue) then exit; Fform:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TSharedDriveFile --------------------------------------------------------------------} Procedure TSharedDriveFile.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); begin If (FdriveFile=AValue) then exit; FdriveFile:=AValue; MarkPropertyChanged(AIndex); end; Procedure TSharedDriveFile.SetshareMode(AIndex : Integer; const AValue : String); begin If (FshareMode=AValue) then exit; FshareMode:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TDate --------------------------------------------------------------------} Procedure TDate.Setyear(AIndex : Integer; const AValue : integer); begin If (Fyear=AValue) then exit; Fyear:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDate.Setmonth(AIndex : Integer; const AValue : integer); begin If (Fmonth=AValue) then exit; Fmonth:=AValue; MarkPropertyChanged(AIndex); end; Procedure TDate.Setday(AIndex : Integer; const AValue : integer); begin If (Fday=AValue) then exit; Fday:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TTimeOfDay --------------------------------------------------------------------} Procedure TTimeOfDay.Sethours(AIndex : Integer; const AValue : integer); begin If (Fhours=AValue) then exit; Fhours:=AValue; MarkPropertyChanged(AIndex); end; Procedure TTimeOfDay.Setminutes(AIndex : Integer; const AValue : integer); begin If (Fminutes=AValue) then exit; Fminutes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TTimeOfDay.Setseconds(AIndex : Integer; const AValue : integer); begin If (Fseconds=AValue) then exit; Fseconds:=AValue; MarkPropertyChanged(AIndex); end; Procedure TTimeOfDay.Setnanos(AIndex : Integer; const AValue : integer); begin If (Fnanos=AValue) then exit; Fnanos:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TAssignment --------------------------------------------------------------------} Procedure TAssignment.SetstudentWorkFolder(AIndex : Integer; const AValue : TDriveFolder); begin If (FstudentWorkFolder=AValue) then exit; FstudentWorkFolder:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TMultipleChoiceQuestion --------------------------------------------------------------------} Procedure TMultipleChoiceQuestion.Setchoices(AIndex : Integer; const AValue : TStringArray); begin If (Fchoices=AValue) then exit; Fchoices:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TMultipleChoiceQuestion.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'choices' : SetLength(Fchoices,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TListCourseWorkResponse --------------------------------------------------------------------} Procedure TListCourseWorkResponse.SetcourseWork(AIndex : Integer; const AValue : TListCourseWorkResponseTypecourseWorkArray); begin If (FcourseWork=AValue) then exit; FcourseWork:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListCourseWorkResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListCourseWorkResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'coursework' : SetLength(FcourseWork,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TStudentSubmission --------------------------------------------------------------------} Procedure TStudentSubmission.SetcourseId(AIndex : Integer; const AValue : String); begin If (FcourseId=AValue) then exit; FcourseId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetcourseWorkId(AIndex : Integer; const AValue : String); begin If (FcourseWorkId=AValue) then exit; FcourseWorkId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetuserId(AIndex : Integer; const AValue : String); begin If (FuserId=AValue) then exit; FuserId:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetcreationTime(AIndex : Integer; const AValue : String); begin If (FcreationTime=AValue) then exit; FcreationTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetupdateTime(AIndex : Integer; const AValue : String); begin If (FupdateTime=AValue) then exit; FupdateTime:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.Setstate(AIndex : Integer; const AValue : String); begin If (Fstate=AValue) then exit; Fstate:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.Setlate(AIndex : Integer; const AValue : boolean); begin If (Flate=AValue) then exit; Flate:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetdraftGrade(AIndex : Integer; const AValue : double); begin If (FdraftGrade=AValue) then exit; FdraftGrade:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetassignedGrade(AIndex : Integer; const AValue : double); begin If (FassignedGrade=AValue) then exit; FassignedGrade:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetalternateLink(AIndex : Integer; const AValue : String); begin If (FalternateLink=AValue) then exit; FalternateLink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetcourseWorkType(AIndex : Integer; const AValue : String); begin If (FcourseWorkType=AValue) then exit; FcourseWorkType:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetassociatedWithDeveloper(AIndex : Integer; const AValue : boolean); begin If (FassociatedWithDeveloper=AValue) then exit; FassociatedWithDeveloper:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetassignmentSubmission(AIndex : Integer; const AValue : TAssignmentSubmission); begin If (FassignmentSubmission=AValue) then exit; FassignmentSubmission:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetshortAnswerSubmission(AIndex : Integer; const AValue : TShortAnswerSubmission); begin If (FshortAnswerSubmission=AValue) then exit; FshortAnswerSubmission:=AValue; MarkPropertyChanged(AIndex); end; Procedure TStudentSubmission.SetmultipleChoiceSubmission(AIndex : Integer; const AValue : TMultipleChoiceSubmission); begin If (FmultipleChoiceSubmission=AValue) then exit; FmultipleChoiceSubmission:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TAssignmentSubmission --------------------------------------------------------------------} Procedure TAssignmentSubmission.Setattachments(AIndex : Integer; const AValue : TAssignmentSubmissionTypeattachmentsArray); begin If (Fattachments=AValue) then exit; Fattachments:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TAssignmentSubmission.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'attachments' : SetLength(Fattachments,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TAttachment --------------------------------------------------------------------} Procedure TAttachment.SetdriveFile(AIndex : Integer; const AValue : TDriveFile); begin If (FdriveFile=AValue) then exit; FdriveFile:=AValue; MarkPropertyChanged(AIndex); end; Procedure TAttachment.SetyouTubeVideo(AIndex : Integer; const AValue : TYouTubeVideo); begin If (FyouTubeVideo=AValue) then exit; FyouTubeVideo:=AValue; MarkPropertyChanged(AIndex); end; Procedure TAttachment.Setlink(AIndex : Integer; const AValue : TLink); begin If (Flink=AValue) then exit; Flink:=AValue; MarkPropertyChanged(AIndex); end; Procedure TAttachment.Setform(AIndex : Integer; const AValue : TForm); begin If (Fform=AValue) then exit; Fform:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TShortAnswerSubmission --------------------------------------------------------------------} Procedure TShortAnswerSubmission.Setanswer(AIndex : Integer; const AValue : String); begin If (Fanswer=AValue) then exit; Fanswer:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TMultipleChoiceSubmission --------------------------------------------------------------------} Procedure TMultipleChoiceSubmission.Setanswer(AIndex : Integer; const AValue : String); begin If (Fanswer=AValue) then exit; Fanswer:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TListStudentSubmissionsResponse --------------------------------------------------------------------} Procedure TListStudentSubmissionsResponse.SetstudentSubmissions(AIndex : Integer; const AValue : TListStudentSubmissionsResponseTypestudentSubmissionsArray); begin If (FstudentSubmissions=AValue) then exit; FstudentSubmissions:=AValue; MarkPropertyChanged(AIndex); end; Procedure TListStudentSubmissionsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); begin If (FnextPageToken=AValue) then exit; FnextPageToken:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TListStudentSubmissionsResponse.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'studentsubmissions' : SetLength(FstudentSubmissions,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TTurnInStudentSubmissionRequest --------------------------------------------------------------------} { -------------------------------------------------------------------- TReclaimStudentSubmissionRequest --------------------------------------------------------------------} { -------------------------------------------------------------------- TReturnStudentSubmissionRequest --------------------------------------------------------------------} { -------------------------------------------------------------------- TModifyAttachmentsRequest --------------------------------------------------------------------} Procedure TModifyAttachmentsRequest.SetaddAttachments(AIndex : Integer; const AValue : TModifyAttachmentsRequestTypeaddAttachmentsArray); begin If (FaddAttachments=AValue) then exit; FaddAttachments:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TModifyAttachmentsRequest.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'addattachments' : SetLength(FaddAttachments,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TCoursesAliasesResource --------------------------------------------------------------------} Class Function TCoursesAliasesResource.ResourceName : String; begin Result:='aliases'; end; Class Function TCoursesAliasesResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesAliasesResource.Create(courseId: string; aCourseAlias : TCourseAlias) : TCourseAlias; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/aliases'; _Methodid = 'classroom.courses.aliases.create'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,'',aCourseAlias,TCourseAlias) as TCourseAlias; end; Function TCoursesAliasesResource.Delete(courseId: string; alias: string) : TEmpty; Const _HTTPMethod = 'DELETE'; _Path = 'v1/courses/{courseId}/aliases/{alias}'; _Methodid = 'classroom.courses.aliases.delete'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'alias',alias]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; Function TCoursesAliasesResource.List(courseId: string; AQuery : string = '') : TListCourseAliasesResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/aliases'; _Methodid = 'classroom.courses.aliases.list'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListCourseAliasesResponse) as TListCourseAliasesResponse; end; Function TCoursesAliasesResource.List(courseId: string; AQuery : TCoursesAliaseslistOptions) : TListCourseAliasesResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(courseId,_Q); end; { -------------------------------------------------------------------- TCoursesTeachersResource --------------------------------------------------------------------} Class Function TCoursesTeachersResource.ResourceName : String; begin Result:='teachers'; end; Class Function TCoursesTeachersResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesTeachersResource.Create(courseId: string; aTeacher : TTeacher) : TTeacher; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/teachers'; _Methodid = 'classroom.courses.teachers.create'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,'',aTeacher,TTeacher) as TTeacher; end; Function TCoursesTeachersResource.Get(courseId: string; userId: string) : TTeacher; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/teachers/{userId}'; _Methodid = 'classroom.courses.teachers.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTeacher) as TTeacher; end; Function TCoursesTeachersResource.Delete(courseId: string; userId: string) : TEmpty; Const _HTTPMethod = 'DELETE'; _Path = 'v1/courses/{courseId}/teachers/{userId}'; _Methodid = 'classroom.courses.teachers.delete'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; Function TCoursesTeachersResource.List(courseId: string; AQuery : string = '') : TListTeachersResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/teachers'; _Methodid = 'classroom.courses.teachers.list'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListTeachersResponse) as TListTeachersResponse; end; Function TCoursesTeachersResource.List(courseId: string; AQuery : TCoursesTeacherslistOptions) : TListTeachersResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(courseId,_Q); end; { -------------------------------------------------------------------- TCoursesStudentsResource --------------------------------------------------------------------} Class Function TCoursesStudentsResource.ResourceName : String; begin Result:='students'; end; Class Function TCoursesStudentsResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesStudentsResource.Create(courseId: string; aStudent : TStudent; AQuery : string = '') : TStudent; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/students'; _Methodid = 'classroom.courses.students.create'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStudent,TStudent) as TStudent; end; Function TCoursesStudentsResource.Create(courseId: string; aStudent : TStudent; AQuery : TCoursesStudentscreateOptions) : TStudent; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'enrollmentCode',AQuery.enrollmentCode); Result:=Create(courseId,aStudent,_Q); end; Function TCoursesStudentsResource.Get(courseId: string; userId: string) : TStudent; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/students/{userId}'; _Methodid = 'classroom.courses.students.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStudent) as TStudent; end; Function TCoursesStudentsResource.Delete(courseId: string; userId: string) : TEmpty; Const _HTTPMethod = 'DELETE'; _Path = 'v1/courses/{courseId}/students/{userId}'; _Methodid = 'classroom.courses.students.delete'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'userId',userId]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; Function TCoursesStudentsResource.List(courseId: string; AQuery : string = '') : TListStudentsResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/students'; _Methodid = 'classroom.courses.students.list'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStudentsResponse) as TListStudentsResponse; end; Function TCoursesStudentsResource.List(courseId: string; AQuery : TCoursesStudentslistOptions) : TListStudentsResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(courseId,_Q); end; { -------------------------------------------------------------------- TCoursesCourseWorkStudentSubmissionsResource --------------------------------------------------------------------} Class Function TCoursesCourseWorkStudentSubmissionsResource.ResourceName : String; begin Result:='studentSubmissions'; end; Class Function TCoursesCourseWorkStudentSubmissionsResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesCourseWorkStudentSubmissionsResource.Get(courseId: string; courseWorkId: string; id: string) : TStudentSubmission; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TStudentSubmission) as TStudentSubmission; end; Function TCoursesCourseWorkStudentSubmissionsResource.Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : string = '') : TStudentSubmission; Const _HTTPMethod = 'PATCH'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.patch'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,aStudentSubmission,TStudentSubmission) as TStudentSubmission; end; Function TCoursesCourseWorkStudentSubmissionsResource.Patch(courseId: string; courseWorkId: string; id: string; aStudentSubmission : TStudentSubmission; AQuery : TCoursesCourseWorkStudentSubmissionspatchOptions) : TStudentSubmission; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'updateMask',AQuery.updateMask); Result:=Patch(courseId,courseWorkId,id,aStudentSubmission,_Q); end; Function TCoursesCourseWorkStudentSubmissionsResource.List(courseId: string; courseWorkId: string; AQuery : string = '') : TListStudentSubmissionsResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.list'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListStudentSubmissionsResponse) as TListStudentSubmissionsResponse; end; Function TCoursesCourseWorkStudentSubmissionsResource.List(courseId: string; courseWorkId: string; AQuery : TCoursesCourseWorkStudentSubmissionslistOptions) : TListStudentSubmissionsResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'userId',AQuery.userId); AddToQuery(_Q,'states',AQuery.states); AddToQuery(_Q,'late',AQuery.late); AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(courseId,courseWorkId,_Q); end; Function TCoursesCourseWorkStudentSubmissionsResource.TurnIn(courseId: string; courseWorkId: string; id: string; aTurnInStudentSubmissionRequest : TTurnInStudentSubmissionRequest) : TEmpty; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.turnIn'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',aTurnInStudentSubmissionRequest,TEmpty) as TEmpty; end; Function TCoursesCourseWorkStudentSubmissionsResource.Reclaim(courseId: string; courseWorkId: string; id: string; aReclaimStudentSubmissionRequest : TReclaimStudentSubmissionRequest) : TEmpty; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.reclaim'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',aReclaimStudentSubmissionRequest,TEmpty) as TEmpty; end; Function TCoursesCourseWorkStudentSubmissionsResource.Return(courseId: string; courseWorkId: string; id: string; aReturnStudentSubmissionRequest : TReturnStudentSubmissionRequest) : TEmpty; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.return'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',aReturnStudentSubmissionRequest,TEmpty) as TEmpty; end; Function TCoursesCourseWorkStudentSubmissionsResource.ModifyAttachments(courseId: string; courseWorkId: string; id: string; aModifyAttachmentsRequest : TModifyAttachmentsRequest) : TStudentSubmission; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments'; _Methodid = 'classroom.courses.courseWork.studentSubmissions.modifyAttachments'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'courseWorkId',courseWorkId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',aModifyAttachmentsRequest,TStudentSubmission) as TStudentSubmission; end; { -------------------------------------------------------------------- TCoursesCourseWorkResource --------------------------------------------------------------------} Class Function TCoursesCourseWorkResource.ResourceName : String; begin Result:='courseWork'; end; Class Function TCoursesCourseWorkResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesCourseWorkResource.Create(courseId: string; aCourseWork : TCourseWork) : TCourseWork; Const _HTTPMethod = 'POST'; _Path = 'v1/courses/{courseId}/courseWork'; _Methodid = 'classroom.courses.courseWork.create'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,'',aCourseWork,TCourseWork) as TCourseWork; end; Function TCoursesCourseWorkResource.Get(courseId: string; id: string) : TCourseWork; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/courseWork/{id}'; _Methodid = 'classroom.courses.courseWork.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId,'id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCourseWork) as TCourseWork; end; Function TCoursesCourseWorkResource.List(courseId: string; AQuery : string = '') : TListCourseWorkResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{courseId}/courseWork'; _Methodid = 'classroom.courses.courseWork.list'; Var _P : String; begin _P:=SubstitutePath(_Path,['courseId',courseId]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListCourseWorkResponse) as TListCourseWorkResponse; end; Function TCoursesCourseWorkResource.List(courseId: string; AQuery : TCoursesCourseWorklistOptions) : TListCourseWorkResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'courseWorkStates',AQuery.courseWorkStates); AddToQuery(_Q,'orderBy',AQuery.orderBy); AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(courseId,_Q); end; Function TCoursesCourseWorkResource.GetStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; begin if (FStudentSubmissionsInstance=Nil) then FStudentSubmissionsInstance:=CreateStudentSubmissionsResource; Result:=FStudentSubmissionsInstance; end; Function TCoursesCourseWorkResource.CreateStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=CreateStudentSubmissionsResource(Self); end; Function TCoursesCourseWorkResource.CreateStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner); Result.API:=Self.API; end; { -------------------------------------------------------------------- TCoursesResource --------------------------------------------------------------------} Class Function TCoursesResource.ResourceName : String; begin Result:='courses'; end; Class Function TCoursesResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TCoursesResource.Create(aCourse : TCourse) : TCourse; Const _HTTPMethod = 'POST'; _Path = 'v1/courses'; _Methodid = 'classroom.courses.create'; begin Result:=ServiceCall(_HTTPMethod,_Path,'',aCourse,TCourse) as TCourse; end; Function TCoursesResource.Get(id: string) : TCourse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses/{id}'; _Methodid = 'classroom.courses.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TCourse) as TCourse; end; Function TCoursesResource.Update(id: string; aCourse : TCourse) : TCourse; Const _HTTPMethod = 'PUT'; _Path = 'v1/courses/{id}'; _Methodid = 'classroom.courses.update'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',aCourse,TCourse) as TCourse; end; Function TCoursesResource.Patch(id: string; aCourse : TCourse; AQuery : string = '') : TCourse; Const _HTTPMethod = 'PATCH'; _Path = 'v1/courses/{id}'; _Methodid = 'classroom.courses.patch'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,AQuery,aCourse,TCourse) as TCourse; end; Function TCoursesResource.Patch(id: string; aCourse : TCourse; AQuery : TCoursespatchOptions) : TCourse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'updateMask',AQuery.updateMask); Result:=Patch(id,aCourse,_Q); end; Function TCoursesResource.Delete(id: string) : TEmpty; Const _HTTPMethod = 'DELETE'; _Path = 'v1/courses/{id}'; _Methodid = 'classroom.courses.delete'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; Function TCoursesResource.List(AQuery : string = '') : TListCoursesResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/courses'; _Methodid = 'classroom.courses.list'; begin Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListCoursesResponse) as TListCoursesResponse; end; Function TCoursesResource.List(AQuery : TCourseslistOptions) : TListCoursesResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'studentId',AQuery.studentId); AddToQuery(_Q,'teacherId',AQuery.teacherId); AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(_Q); end; Function TCoursesResource.GetAliasesInstance : TCoursesAliasesResource; begin if (FAliasesInstance=Nil) then FAliasesInstance:=CreateAliasesResource; Result:=FAliasesInstance; end; Function TCoursesResource.CreateAliasesResource : TCoursesAliasesResource; begin Result:=CreateAliasesResource(Self); end; Function TCoursesResource.CreateAliasesResource(AOwner : TComponent) : TCoursesAliasesResource; begin Result:=TCoursesAliasesResource.Create(AOwner); Result.API:=Self.API; end; Function TCoursesResource.GetTeachersInstance : TCoursesTeachersResource; begin if (FTeachersInstance=Nil) then FTeachersInstance:=CreateTeachersResource; Result:=FTeachersInstance; end; Function TCoursesResource.CreateTeachersResource : TCoursesTeachersResource; begin Result:=CreateTeachersResource(Self); end; Function TCoursesResource.CreateTeachersResource(AOwner : TComponent) : TCoursesTeachersResource; begin Result:=TCoursesTeachersResource.Create(AOwner); Result.API:=Self.API; end; Function TCoursesResource.GetStudentsInstance : TCoursesStudentsResource; begin if (FStudentsInstance=Nil) then FStudentsInstance:=CreateStudentsResource; Result:=FStudentsInstance; end; Function TCoursesResource.CreateStudentsResource : TCoursesStudentsResource; begin Result:=CreateStudentsResource(Self); end; Function TCoursesResource.CreateStudentsResource(AOwner : TComponent) : TCoursesStudentsResource; begin Result:=TCoursesStudentsResource.Create(AOwner); Result.API:=Self.API; end; Function TCoursesResource.GetCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; begin if (FCourseWorkStudentSubmissionsInstance=Nil) then FCourseWorkStudentSubmissionsInstance:=CreateCourseWorkStudentSubmissionsResource; Result:=FCourseWorkStudentSubmissionsInstance; end; Function TCoursesResource.CreateCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=CreateCourseWorkStudentSubmissionsResource(Self); end; Function TCoursesResource.CreateCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner); Result.API:=Self.API; end; Function TCoursesResource.GetCourseWorkInstance : TCoursesCourseWorkResource; begin if (FCourseWorkInstance=Nil) then FCourseWorkInstance:=CreateCourseWorkResource; Result:=FCourseWorkInstance; end; Function TCoursesResource.CreateCourseWorkResource : TCoursesCourseWorkResource; begin Result:=CreateCourseWorkResource(Self); end; Function TCoursesResource.CreateCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource; begin Result:=TCoursesCourseWorkResource.Create(AOwner); Result.API:=Self.API; end; { -------------------------------------------------------------------- TInvitationsResource --------------------------------------------------------------------} Class Function TInvitationsResource.ResourceName : String; begin Result:='invitations'; end; Class Function TInvitationsResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TInvitationsResource.Create(aInvitation : TInvitation) : TInvitation; Const _HTTPMethod = 'POST'; _Path = 'v1/invitations'; _Methodid = 'classroom.invitations.create'; begin Result:=ServiceCall(_HTTPMethod,_Path,'',aInvitation,TInvitation) as TInvitation; end; Function TInvitationsResource.Get(id: string) : TInvitation; Const _HTTPMethod = 'GET'; _Path = 'v1/invitations/{id}'; _Methodid = 'classroom.invitations.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TInvitation) as TInvitation; end; Function TInvitationsResource.Delete(id: string) : TEmpty; Const _HTTPMethod = 'DELETE'; _Path = 'v1/invitations/{id}'; _Methodid = 'classroom.invitations.delete'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; Function TInvitationsResource.List(AQuery : string = '') : TListInvitationsResponse; Const _HTTPMethod = 'GET'; _Path = 'v1/invitations'; _Methodid = 'classroom.invitations.list'; begin Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListInvitationsResponse) as TListInvitationsResponse; end; Function TInvitationsResource.List(AQuery : TInvitationslistOptions) : TListInvitationsResponse; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'userId',AQuery.userId); AddToQuery(_Q,'courseId',AQuery.courseId); AddToQuery(_Q,'pageSize',AQuery.pageSize); AddToQuery(_Q,'pageToken',AQuery.pageToken); Result:=List(_Q); end; Function TInvitationsResource.Accept(id: string) : TEmpty; Const _HTTPMethod = 'POST'; _Path = 'v1/invitations/{id}:accept'; _Methodid = 'classroom.invitations.accept'; Var _P : String; begin _P:=SubstitutePath(_Path,['id',id]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TEmpty) as TEmpty; end; { -------------------------------------------------------------------- TUserProfilesResource --------------------------------------------------------------------} Class Function TUserProfilesResource.ResourceName : String; begin Result:='userProfiles'; end; Class Function TUserProfilesResource.DefaultAPI : TGoogleAPIClass; begin Result:=TclassroomAPI; end; Function TUserProfilesResource.Get(userId: string) : TUserProfile; Const _HTTPMethod = 'GET'; _Path = 'v1/userProfiles/{userId}'; _Methodid = 'classroom.userProfiles.get'; Var _P : String; begin _P:=SubstitutePath(_Path,['userId',userId]); Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TUserProfile) as TUserProfile; end; { -------------------------------------------------------------------- TClassroomAPI --------------------------------------------------------------------} Class Function TClassroomAPI.APIName : String; begin Result:='classroom'; end; Class Function TClassroomAPI.APIVersion : String; begin Result:='v1'; end; Class Function TClassroomAPI.APIRevision : String; begin Result:='20160517'; end; Class Function TClassroomAPI.APIID : String; begin Result:='classroom:v1'; end; Class Function TClassroomAPI.APITitle : String; begin Result:='Google Classroom API'; end; Class Function TClassroomAPI.APIDescription : String; begin Result:='Manages classes, rosters, and invitations in Google Classroom.'; end; Class Function TClassroomAPI.APIOwnerDomain : String; begin Result:='google.com'; end; Class Function TClassroomAPI.APIOwnerName : String; begin Result:='Google'; end; Class Function TClassroomAPI.APIIcon16 : String; begin Result:='http://www.google.com/images/icons/product/search-16.gif'; end; Class Function TClassroomAPI.APIIcon32 : String; begin Result:='http://www.google.com/images/icons/product/search-32.gif'; end; Class Function TClassroomAPI.APIdocumentationLink : String; begin Result:='https://developers.google.com/classroom/'; end; Class Function TClassroomAPI.APIrootUrl : string; begin Result:='https://classroom.googleapis.com/'; end; Class Function TClassroomAPI.APIbasePath : string; begin Result:=''; end; Class Function TClassroomAPI.APIbaseURL : String; begin Result:='https://classroom.googleapis.com/'; end; Class Function TClassroomAPI.APIProtocol : string; begin Result:='rest'; end; Class Function TClassroomAPI.APIservicePath : string; begin Result:=''; end; Class Function TClassroomAPI.APIbatchPath : String; begin Result:='batch'; end; Class Function TClassroomAPI.APIAuthScopes : TScopeInfoArray; begin SetLength(Result,13); Result[0].Name:='https://www.googleapis.com/auth/classroom.course-work.readonly'; Result[0].Description:='View instructions for teacher-assigned work in your Google Classroom classes'; Result[1].Name:='https://www.googleapis.com/auth/classroom.courses'; Result[1].Description:='Manage your Google Classroom classes'; Result[2].Name:='https://www.googleapis.com/auth/classroom.courses.readonly'; Result[2].Description:='View your Google Classroom classes'; Result[3].Name:='https://www.googleapis.com/auth/classroom.coursework.me'; Result[3].Description:='Manage your course work and view your grades in Google Classroom'; Result[4].Name:='https://www.googleapis.com/auth/classroom.coursework.me.readonly'; Result[4].Description:='View your course work and grades in Google Classroom'; Result[5].Name:='https://www.googleapis.com/auth/classroom.coursework.students'; Result[5].Description:='Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer'; Result[6].Name:='https://www.googleapis.com/auth/classroom.coursework.students.readonly'; Result[6].Description:='View course work and grades for students in the Google Classroom classes you teach or administer'; Result[7].Name:='https://www.googleapis.com/auth/classroom.profile.emails'; Result[7].Description:='View the email addresses of people in your classes'; Result[8].Name:='https://www.googleapis.com/auth/classroom.profile.photos'; Result[8].Description:='View the profile photos of people in your classes'; Result[9].Name:='https://www.googleapis.com/auth/classroom.rosters'; Result[9].Description:='Manage your Google Classroom class rosters'; Result[10].Name:='https://www.googleapis.com/auth/classroom.rosters.readonly'; Result[10].Description:='View your Google Classroom class rosters'; Result[11].Name:='https://www.googleapis.com/auth/classroom.student-submissions.me.readonly'; Result[11].Description:='View your course work and grades in Google Classroom'; Result[12].Name:='https://www.googleapis.com/auth/classroom.student-submissions.students.readonly'; Result[12].Description:='View course work and grades for students in the Google Classroom classes you teach or administer'; end; Class Function TClassroomAPI.APINeedsAuth : Boolean; begin Result:=True; end; Class Procedure TClassroomAPI.RegisterAPIResources; begin TCourse.RegisterObject; TDriveFolder.RegisterObject; TCourseMaterialSet.RegisterObject; TCourseMaterial.RegisterObject; TDriveFile.RegisterObject; TYouTubeVideo.RegisterObject; TLink.RegisterObject; TForm.RegisterObject; TEmpty.RegisterObject; TListCoursesResponse.RegisterObject; TCourseAlias.RegisterObject; TListCourseAliasesResponse.RegisterObject; TInvitation.RegisterObject; TListInvitationsResponse.RegisterObject; TUserProfile.RegisterObject; TName.RegisterObject; TGlobalPermission.RegisterObject; TTeacher.RegisterObject; TListTeachersResponse.RegisterObject; TStudent.RegisterObject; TListStudentsResponse.RegisterObject; TCourseWork.RegisterObject; TMaterial.RegisterObject; TSharedDriveFile.RegisterObject; TDate.RegisterObject; TTimeOfDay.RegisterObject; TAssignment.RegisterObject; TMultipleChoiceQuestion.RegisterObject; TListCourseWorkResponse.RegisterObject; TStudentSubmission.RegisterObject; TAssignmentSubmission.RegisterObject; TAttachment.RegisterObject; TShortAnswerSubmission.RegisterObject; TMultipleChoiceSubmission.RegisterObject; TListStudentSubmissionsResponse.RegisterObject; TTurnInStudentSubmissionRequest.RegisterObject; TReclaimStudentSubmissionRequest.RegisterObject; TReturnStudentSubmissionRequest.RegisterObject; TModifyAttachmentsRequest.RegisterObject; end; Function TClassroomAPI.GetCoursesAliasesInstance : TCoursesAliasesResource; begin if (FCoursesAliasesInstance=Nil) then FCoursesAliasesInstance:=CreateCoursesAliasesResource; Result:=FCoursesAliasesInstance; end; Function TClassroomAPI.CreateCoursesAliasesResource : TCoursesAliasesResource; begin Result:=CreateCoursesAliasesResource(Self); end; Function TClassroomAPI.CreateCoursesAliasesResource(AOwner : TComponent) : TCoursesAliasesResource; begin Result:=TCoursesAliasesResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetCoursesTeachersInstance : TCoursesTeachersResource; begin if (FCoursesTeachersInstance=Nil) then FCoursesTeachersInstance:=CreateCoursesTeachersResource; Result:=FCoursesTeachersInstance; end; Function TClassroomAPI.CreateCoursesTeachersResource : TCoursesTeachersResource; begin Result:=CreateCoursesTeachersResource(Self); end; Function TClassroomAPI.CreateCoursesTeachersResource(AOwner : TComponent) : TCoursesTeachersResource; begin Result:=TCoursesTeachersResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetCoursesStudentsInstance : TCoursesStudentsResource; begin if (FCoursesStudentsInstance=Nil) then FCoursesStudentsInstance:=CreateCoursesStudentsResource; Result:=FCoursesStudentsInstance; end; Function TClassroomAPI.CreateCoursesStudentsResource : TCoursesStudentsResource; begin Result:=CreateCoursesStudentsResource(Self); end; Function TClassroomAPI.CreateCoursesStudentsResource(AOwner : TComponent) : TCoursesStudentsResource; begin Result:=TCoursesStudentsResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetCoursesCourseWorkStudentSubmissionsInstance : TCoursesCourseWorkStudentSubmissionsResource; begin if (FCoursesCourseWorkStudentSubmissionsInstance=Nil) then FCoursesCourseWorkStudentSubmissionsInstance:=CreateCoursesCourseWorkStudentSubmissionsResource; Result:=FCoursesCourseWorkStudentSubmissionsInstance; end; Function TClassroomAPI.CreateCoursesCourseWorkStudentSubmissionsResource : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=CreateCoursesCourseWorkStudentSubmissionsResource(Self); end; Function TClassroomAPI.CreateCoursesCourseWorkStudentSubmissionsResource(AOwner : TComponent) : TCoursesCourseWorkStudentSubmissionsResource; begin Result:=TCoursesCourseWorkStudentSubmissionsResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetCoursesCourseWorkInstance : TCoursesCourseWorkResource; begin if (FCoursesCourseWorkInstance=Nil) then FCoursesCourseWorkInstance:=CreateCoursesCourseWorkResource; Result:=FCoursesCourseWorkInstance; end; Function TClassroomAPI.CreateCoursesCourseWorkResource : TCoursesCourseWorkResource; begin Result:=CreateCoursesCourseWorkResource(Self); end; Function TClassroomAPI.CreateCoursesCourseWorkResource(AOwner : TComponent) : TCoursesCourseWorkResource; begin Result:=TCoursesCourseWorkResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetCoursesInstance : TCoursesResource; begin if (FCoursesInstance=Nil) then FCoursesInstance:=CreateCoursesResource; Result:=FCoursesInstance; end; Function TClassroomAPI.CreateCoursesResource : TCoursesResource; begin Result:=CreateCoursesResource(Self); end; Function TClassroomAPI.CreateCoursesResource(AOwner : TComponent) : TCoursesResource; begin Result:=TCoursesResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetInvitationsInstance : TInvitationsResource; begin if (FInvitationsInstance=Nil) then FInvitationsInstance:=CreateInvitationsResource; Result:=FInvitationsInstance; end; Function TClassroomAPI.CreateInvitationsResource : TInvitationsResource; begin Result:=CreateInvitationsResource(Self); end; Function TClassroomAPI.CreateInvitationsResource(AOwner : TComponent) : TInvitationsResource; begin Result:=TInvitationsResource.Create(AOwner); Result.API:=Self.API; end; Function TClassroomAPI.GetUserProfilesInstance : TUserProfilesResource; begin if (FUserProfilesInstance=Nil) then FUserProfilesInstance:=CreateUserProfilesResource; Result:=FUserProfilesInstance; end; Function TClassroomAPI.CreateUserProfilesResource : TUserProfilesResource; begin Result:=CreateUserProfilesResource(Self); end; Function TClassroomAPI.CreateUserProfilesResource(AOwner : TComponent) : TUserProfilesResource; begin Result:=TUserProfilesResource.Create(AOwner); Result.API:=Self.API; end; initialization TClassroomAPI.RegisterAPI; end.