googlegroupsmigration.pp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. unit googlegroupsmigration;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TGroups = Class;
  9. TGroupsArray = Array of TGroups;
  10. //Anonymous types, using auto-generated names
  11. { --------------------------------------------------------------------
  12. TGroups
  13. --------------------------------------------------------------------}
  14. TGroups = Class(TGoogleBaseObject)
  15. Private
  16. Fkind : String;
  17. FresponseCode : String;
  18. Protected
  19. //Property setters
  20. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  21. Procedure SetresponseCode(AIndex : Integer; const AValue : String); virtual;
  22. Public
  23. Published
  24. Property kind : String Index 0 Read Fkind Write Setkind;
  25. Property responseCode : String Index 8 Read FresponseCode Write SetresponseCode;
  26. end;
  27. TGroupsClass = Class of TGroups;
  28. { --------------------------------------------------------------------
  29. TArchiveResource
  30. --------------------------------------------------------------------}
  31. TArchiveResource = Class(TGoogleResource)
  32. Public
  33. Class Function ResourceName : String; override;
  34. Class Function DefaultAPI : TGoogleAPIClass; override;
  35. Function Insert(groupId: string) : TGroups;
  36. end;
  37. { --------------------------------------------------------------------
  38. TGroupsmigrationAPI
  39. --------------------------------------------------------------------}
  40. TGroupsmigrationAPI = Class(TGoogleAPI)
  41. Private
  42. FArchiveInstance : TArchiveResource;
  43. Function GetArchiveInstance : TArchiveResource;virtual;
  44. Public
  45. //Override class functions with API info
  46. Class Function APIName : String; override;
  47. Class Function APIVersion : String; override;
  48. Class Function APIRevision : String; override;
  49. Class Function APIID : String; override;
  50. Class Function APITitle : String; override;
  51. Class Function APIDescription : String; override;
  52. Class Function APIOwnerDomain : String; override;
  53. Class Function APIOwnerName : String; override;
  54. Class Function APIIcon16 : String; override;
  55. Class Function APIIcon32 : String; override;
  56. Class Function APIdocumentationLink : String; override;
  57. Class Function APIrootUrl : string; override;
  58. Class Function APIbasePath : string;override;
  59. Class Function APIbaseURL : String;override;
  60. Class Function APIProtocol : string;override;
  61. Class Function APIservicePath : string;override;
  62. Class Function APIbatchPath : String;override;
  63. Class Function APIAuthScopes : TScopeInfoArray;override;
  64. Class Function APINeedsAuth : Boolean;override;
  65. Class Procedure RegisterAPIResources; override;
  66. //Add create function for resources
  67. Function CreateArchiveResource(AOwner : TComponent) : TArchiveResource;virtual;overload;
  68. Function CreateArchiveResource : TArchiveResource;virtual;overload;
  69. //Add default on-demand instances for resources
  70. Property ArchiveResource : TArchiveResource Read GetArchiveInstance;
  71. end;
  72. implementation
  73. { --------------------------------------------------------------------
  74. TGroups
  75. --------------------------------------------------------------------}
  76. Procedure TGroups.Setkind(AIndex : Integer; const AValue : String);
  77. begin
  78. If (Fkind=AValue) then exit;
  79. Fkind:=AValue;
  80. MarkPropertyChanged(AIndex);
  81. end;
  82. Procedure TGroups.SetresponseCode(AIndex : Integer; const AValue : String);
  83. begin
  84. If (FresponseCode=AValue) then exit;
  85. FresponseCode:=AValue;
  86. MarkPropertyChanged(AIndex);
  87. end;
  88. { --------------------------------------------------------------------
  89. TArchiveResource
  90. --------------------------------------------------------------------}
  91. Class Function TArchiveResource.ResourceName : String;
  92. begin
  93. Result:='archive';
  94. end;
  95. Class Function TArchiveResource.DefaultAPI : TGoogleAPIClass;
  96. begin
  97. Result:=TgroupsmigrationAPI;
  98. end;
  99. Function TArchiveResource.Insert(groupId: string) : TGroups;
  100. Const
  101. _HTTPMethod = 'POST';
  102. _Path = '{groupId}/archive';
  103. _Methodid = 'groupsmigration.archive.insert';
  104. Var
  105. _P : String;
  106. begin
  107. _P:=SubstitutePath(_Path,['groupId',groupId]);
  108. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TGroups) as TGroups;
  109. end;
  110. { --------------------------------------------------------------------
  111. TGroupsmigrationAPI
  112. --------------------------------------------------------------------}
  113. Class Function TGroupsmigrationAPI.APIName : String;
  114. begin
  115. Result:='groupsmigration';
  116. end;
  117. Class Function TGroupsmigrationAPI.APIVersion : String;
  118. begin
  119. Result:='v1';
  120. end;
  121. Class Function TGroupsmigrationAPI.APIRevision : String;
  122. begin
  123. Result:='20140416';
  124. end;
  125. Class Function TGroupsmigrationAPI.APIID : String;
  126. begin
  127. Result:='groupsmigration:v1';
  128. end;
  129. Class Function TGroupsmigrationAPI.APITitle : String;
  130. begin
  131. Result:='Groups Migration API';
  132. end;
  133. Class Function TGroupsmigrationAPI.APIDescription : String;
  134. begin
  135. Result:='Groups Migration Api.';
  136. end;
  137. Class Function TGroupsmigrationAPI.APIOwnerDomain : String;
  138. begin
  139. Result:='google.com';
  140. end;
  141. Class Function TGroupsmigrationAPI.APIOwnerName : String;
  142. begin
  143. Result:='Google';
  144. end;
  145. Class Function TGroupsmigrationAPI.APIIcon16 : String;
  146. begin
  147. Result:='http://www.google.com/images/icons/product/discussions-16.gif';
  148. end;
  149. Class Function TGroupsmigrationAPI.APIIcon32 : String;
  150. begin
  151. Result:='http://www.google.com/images/icons/product/discussions-32.gif';
  152. end;
  153. Class Function TGroupsmigrationAPI.APIdocumentationLink : String;
  154. begin
  155. Result:='https://developers.google.com/google-apps/groups-migration/';
  156. end;
  157. Class Function TGroupsmigrationAPI.APIrootUrl : string;
  158. begin
  159. Result:='https://www.googleapis.com/';
  160. end;
  161. Class Function TGroupsmigrationAPI.APIbasePath : string;
  162. begin
  163. Result:='/groups/v1/groups/';
  164. end;
  165. Class Function TGroupsmigrationAPI.APIbaseURL : String;
  166. begin
  167. Result:='https://www.googleapis.com/groups/v1/groups/';
  168. end;
  169. Class Function TGroupsmigrationAPI.APIProtocol : string;
  170. begin
  171. Result:='rest';
  172. end;
  173. Class Function TGroupsmigrationAPI.APIservicePath : string;
  174. begin
  175. Result:='groups/v1/groups/';
  176. end;
  177. Class Function TGroupsmigrationAPI.APIbatchPath : String;
  178. begin
  179. Result:='batch';
  180. end;
  181. Class Function TGroupsmigrationAPI.APIAuthScopes : TScopeInfoArray;
  182. begin
  183. SetLength(Result,1);
  184. Result[0].Name:='https://www.googleapis.com/auth/apps.groups.migration';
  185. Result[0].Description:='Manage messages in groups on your domain';
  186. end;
  187. Class Function TGroupsmigrationAPI.APINeedsAuth : Boolean;
  188. begin
  189. Result:=True;
  190. end;
  191. Class Procedure TGroupsmigrationAPI.RegisterAPIResources;
  192. begin
  193. TGroups.RegisterObject;
  194. end;
  195. Function TGroupsmigrationAPI.GetArchiveInstance : TArchiveResource;
  196. begin
  197. if (FArchiveInstance=Nil) then
  198. FArchiveInstance:=CreateArchiveResource;
  199. Result:=FArchiveInstance;
  200. end;
  201. Function TGroupsmigrationAPI.CreateArchiveResource : TArchiveResource;
  202. begin
  203. Result:=CreateArchiveResource(Self);
  204. end;
  205. Function TGroupsmigrationAPI.CreateArchiveResource(AOwner : TComponent) : TArchiveResource;
  206. begin
  207. Result:=TArchiveResource.Create(AOwner);
  208. Result.API:=Self.API;
  209. end;
  210. initialization
  211. TGroupsmigrationAPI.RegisterAPI;
  212. end.