@progress/sitefinity-webservices-sdk 0.3.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +19 -0
  3. package/ci/pipelines/ci.yml +219 -0
  4. package/config/helpers.js +0 -6
  5. package/config/webpack.common.js +1 -3
  6. package/config/webpack.dev.js +2 -9
  7. package/config/webpack.prod.js +5 -6
  8. package/dist/docs/.nojekyll +1 -0
  9. package/dist/docs/assets/highlight.css +57 -0
  10. package/dist/docs/assets/icons.css +1043 -0
  11. package/dist/docs/assets/icons.png +0 -0
  12. package/dist/docs/assets/icons@2x.png +0 -0
  13. package/dist/docs/assets/main.js +52 -0
  14. package/dist/docs/assets/search.js +1 -0
  15. package/dist/docs/assets/style.css +1413 -0
  16. package/dist/docs/assets/{images/widgets.png → widgets.png} +0 -0
  17. package/dist/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  18. package/dist/docs/classes/BlobBuilder.BlobBuilder-1.html +7 -0
  19. package/dist/docs/classes/Data.Data-1.html +65 -0
  20. package/dist/docs/classes/Expression.BinaryExpression.html +1 -0
  21. package/dist/docs/classes/Expression.ComplexExpression.html +1 -0
  22. package/dist/docs/classes/Expression.ExpressionBase.html +1 -0
  23. package/dist/docs/classes/OrderProperty.OrderProperty-1.html +1 -0
  24. package/dist/docs/classes/Query.Query-1.html +33 -0
  25. package/dist/docs/classes/QueryBase.QueryBase-1.html +7 -0
  26. package/dist/docs/classes/QueryBuilder.QueryBuilder-1.html +1 -0
  27. package/dist/docs/classes/Requests_BatchRequest.BatchRequest.html +17 -0
  28. package/dist/docs/classes/Requests_BatchRequest.Transaction.html +17 -0
  29. package/dist/docs/classes/Requests_ExecutableRequest.ExecutableRequest.html +1 -0
  30. package/dist/docs/classes/Requests_Request.CreateRelatedRequest.html +1 -0
  31. package/dist/docs/classes/Requests_Request.CreateRequest.html +1 -0
  32. package/dist/docs/classes/Requests_Request.DeleteRelatedByIdRequest.html +1 -0
  33. package/dist/docs/classes/Requests_Request.DeleteRelatedRequest.html +1 -0
  34. package/dist/docs/classes/Requests_Request.DeleteRequest.html +1 -0
  35. package/dist/docs/classes/Requests_Request.GetByIdRequest.html +1 -0
  36. package/dist/docs/classes/Requests_Request.GetRelatedByIdRequest.html +1 -0
  37. package/dist/docs/classes/Requests_Request.GetRelatedRequest.html +1 -0
  38. package/dist/docs/classes/Requests_Request.GetRequest.html +1 -0
  39. package/dist/docs/classes/Requests_Request.UpdateRequest.html +1 -0
  40. package/dist/docs/classes/Requests_Request.UploadRequest.html +1 -0
  41. package/dist/docs/classes/Requests_RequestBase.RequestBase.html +1 -0
  42. package/dist/docs/classes/Requests_RequestFactory.RequestFactory.html +1 -0
  43. package/dist/docs/classes/Sitefinity.Sitefinity-1.html +5 -0
  44. package/dist/docs/classes/WhereQuery.WhereQuery-1.html +31 -0
  45. package/dist/docs/classes/utils.utils-1.html +1 -0
  46. package/dist/docs/index.html +54 -242
  47. package/dist/docs/interfaces/Data.CreateRelatedRequestOptions.html +1 -0
  48. package/dist/docs/interfaces/Data.CreateRequestOptions.html +1 -0
  49. package/dist/docs/interfaces/Data.OperationsRequestOptions.html +1 -0
  50. package/dist/docs/interfaces/Data.PropertyRequestOptions.html +1 -0
  51. package/dist/docs/interfaces/Data.RequestOptionsBase.html +1 -0
  52. package/dist/docs/interfaces/Data.SingleRelatedItemRequestOptions.html +1 -0
  53. package/dist/docs/interfaces/Data.UpdateRequestOptions.html +1 -0
  54. package/dist/docs/interfaces/Data.UploadRequestOptions.html +1 -0
  55. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRelatedRequestOptions.html +1 -0
  56. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRequestOptions.html +1 -0
  57. package/dist/docs/interfaces/Requests_BatchRequest.BatchPropertyRequestOptions.html +1 -0
  58. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsBase.html +1 -0
  59. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsExtended.html +1 -0
  60. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleItemRequestOptions.html +1 -0
  61. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleRelatedItemRequestOptions.html +1 -0
  62. package/dist/docs/interfaces/Requests_BatchRequest.BatchUpdateRequestOptions.html +1 -0
  63. package/dist/docs/interfaces/Requests_ExecutableRequest.ResponseHandlers.html +5 -0
  64. package/dist/docs/interfaces/Requests_Request.PostRequestOptionsExtended.html +1 -0
  65. package/dist/docs/interfaces/Requests_Request.PutRequestOptionsExtended.html +1 -0
  66. package/dist/docs/interfaces/Requests_Request.RelatedByIdRequestOptionsExtended.html +1 -0
  67. package/dist/docs/interfaces/Requests_Request.RelatedRequestOptionsExtended.html +1 -0
  68. package/dist/docs/interfaces/Requests_Request.UploadRequestOptionsExtended.html +1 -0
  69. package/dist/docs/interfaces/Requests_RequestBase.RequestOptionsBaseExtended.html +1 -0
  70. package/dist/docs/interfaces/Sitefinity.SDKOptions.html +9 -0
  71. package/dist/docs/interfaces/Sitefinity.Token.html +1 -0
  72. package/dist/docs/interfaces/Sitefinity.TypeOptions.html +13 -0
  73. package/dist/docs/modules/BlobBuilder.html +1 -0
  74. package/dist/docs/modules/Data.html +1 -0
  75. package/dist/docs/modules/Expression.html +1 -0
  76. package/dist/docs/modules/OrderProperty.html +1 -0
  77. package/dist/docs/modules/Query.html +1 -0
  78. package/dist/docs/modules/QueryBase.html +1 -0
  79. package/dist/docs/modules/QueryBuilder.html +1 -0
  80. package/dist/docs/modules/Requests_BatchRequest.html +1 -0
  81. package/dist/docs/modules/Requests_ExecutableRequest.html +1 -0
  82. package/dist/docs/modules/Requests_Request.html +1 -0
  83. package/dist/docs/modules/Requests_RequestBase.html +1 -0
  84. package/dist/docs/modules/Requests_RequestFactory.html +1 -0
  85. package/dist/docs/modules/Sitefinity.html +1 -0
  86. package/dist/docs/modules/WhereQuery.html +1 -0
  87. package/dist/docs/modules/constants.html +1 -0
  88. package/dist/docs/modules/utils.html +1 -0
  89. package/dist/docs/modules.html +1 -0
  90. package/dist/samples.html +33 -81
  91. package/dist/sitefinity-webservices-sdk.d.ts +16 -0
  92. package/dist/sitefinity-webservices-sdk.js +1140 -1734
  93. package/dist/sitefinity-webservices-sdk.js.map +1 -1
  94. package/dist/sitefinity-webservices-sdk.min.js +2 -16
  95. package/dist/sitefinity-webservices-sdk.min.js.LICENSE.txt +14 -0
  96. package/dist/src/BlobBuilder.d.ts +14 -0
  97. package/dist/src/Data.d.ts +144 -0
  98. package/dist/src/Expression.d.ts +19 -0
  99. package/dist/src/OrderProperty.d.ts +8 -0
  100. package/dist/src/Query.d.ts +59 -0
  101. package/dist/src/QueryBase.d.ts +18 -0
  102. package/dist/src/QueryBuilder.d.ts +13 -0
  103. package/dist/src/Requests/BatchRequest.d.ts +146 -0
  104. package/dist/src/Requests/ExecutableRequest.d.ts +20 -0
  105. package/dist/src/Requests/Request.d.ts +88 -0
  106. package/dist/src/Requests/RequestBase.d.ts +28 -0
  107. package/dist/src/Requests/RequestFactory.d.ts +22 -0
  108. package/dist/src/Sitefinity.d.ts +66 -0
  109. package/dist/src/WhereQuery.d.ts +68 -0
  110. package/dist/src/constants.d.ts +55 -0
  111. package/dist/src/utils.d.ts +16 -0
  112. package/karma.conf.js +29 -0
  113. package/package-lock.json +16108 -6805
  114. package/package.json +28 -10
  115. package/sitefinity-webservices-sdk.ts +16 -0
  116. package/src/BlobBuilder.ts +7 -12
  117. package/src/Data.spec.ts +160 -0
  118. package/src/Data.ts +132 -207
  119. package/src/Expression.ts +0 -1
  120. package/src/OrderProperty.ts +4 -5
  121. package/src/Query.ts +52 -78
  122. package/src/QueryBase.ts +21 -47
  123. package/src/QueryBuilder.ts +68 -83
  124. package/src/Requests/BatchRequest.ts +312 -335
  125. package/src/Requests/ExecutableRequest.ts +46 -73
  126. package/src/Requests/Request.ts +134 -260
  127. package/src/Requests/RequestBase.ts +161 -0
  128. package/src/Requests/RequestFactory.ts +36 -54
  129. package/src/Requests/request.spec.ts +108 -0
  130. package/src/Sitefinity.spec.ts +418 -0
  131. package/src/Sitefinity.ts +77 -146
  132. package/src/WhereQuery.ts +52 -112
  133. package/src/constants.ts +58 -39
  134. package/src/utils.ts +17 -14
  135. package/template.html +33 -35
  136. package/tsconfig.json +8 -1
  137. package/type.txt +1 -1
  138. package/config/html.conf.json +0 -5
  139. package/dist/docs/assets/css/main.css +0 -865
  140. package/dist/docs/assets/css/main.css.map +0 -7
  141. package/dist/docs/assets/images/icons.png +0 -0
  142. package/dist/docs/assets/images/icons@2x.png +0 -0
  143. package/dist/docs/assets/js/main.js +0 -5
  144. package/dist/docs/assets/js/search.js +0 -3
  145. package/dist/docs/classes/_authentication_.authentication.html +0 -527
  146. package/dist/docs/classes/_blobbuilder_.blobbuilder.html +0 -351
  147. package/dist/docs/classes/_data_.data.html +0 -974
  148. package/dist/docs/classes/_expression_.binaryexpression.html +0 -450
  149. package/dist/docs/classes/_expression_.complexexpression.html +0 -374
  150. package/dist/docs/classes/_expression_.expressionbase.html +0 -336
  151. package/dist/docs/classes/_orderproperty_.orderproperty.html +0 -381
  152. package/dist/docs/classes/_query_.query.html +0 -896
  153. package/dist/docs/classes/_querybase_.querybase.html +0 -518
  154. package/dist/docs/classes/_querybuilder_.querybuilder.html +0 -493
  155. package/dist/docs/classes/_requests_batchrequest_.batchrequest.html +0 -1511
  156. package/dist/docs/classes/_requests_batchrequest_.transaction.html +0 -804
  157. package/dist/docs/classes/_requests_executablerequest_.executablerequest.html +0 -549
  158. package/dist/docs/classes/_requests_request_.createrelatedrequest.html +0 -689
  159. package/dist/docs/classes/_requests_request_.createrequest.html +0 -680
  160. package/dist/docs/classes/_requests_request_.deleterelatedbyidrequest.html +0 -687
  161. package/dist/docs/classes/_requests_request_.deleterelatedrequest.html +0 -673
  162. package/dist/docs/classes/_requests_request_.deleterequest.html +0 -666
  163. package/dist/docs/classes/_requests_request_.getbyidrequest.html +0 -666
  164. package/dist/docs/classes/_requests_request_.getrelatedbyidrequest.html +0 -687
  165. package/dist/docs/classes/_requests_request_.getrelatedrequest.html +0 -673
  166. package/dist/docs/classes/_requests_request_.getrequest.html +0 -658
  167. package/dist/docs/classes/_requests_request_.requestbase.html +0 -687
  168. package/dist/docs/classes/_requests_request_.updaterequest.html +0 -686
  169. package/dist/docs/classes/_requests_request_.uploadrequest.html +0 -715
  170. package/dist/docs/classes/_requests_requestfactory_.requestfactory.html +0 -724
  171. package/dist/docs/classes/_sitefinity_.sitefinity.html +0 -521
  172. package/dist/docs/classes/_utils_.utils.html +0 -597
  173. package/dist/docs/classes/_wherequery_.wherequery.html +0 -992
  174. package/dist/docs/globals.html +0 -238
  175. package/dist/docs/modules/_authentication_.html +0 -225
  176. package/dist/docs/modules/_blobbuilder_.html +0 -225
  177. package/dist/docs/modules/_constants_.html +0 -528
  178. package/dist/docs/modules/_contenttypes_.html +0 -248
  179. package/dist/docs/modules/_data_.html +0 -225
  180. package/dist/docs/modules/_expression_.html +0 -233
  181. package/dist/docs/modules/_headers_.html +0 -328
  182. package/dist/docs/modules/_httpmethods_.html +0 -288
  183. package/dist/docs/modules/_main_.html +0 -209
  184. package/dist/docs/modules/_orderproperty_.html +0 -225
  185. package/dist/docs/modules/_query_.html +0 -225
  186. package/dist/docs/modules/_querybase_.html +0 -225
  187. package/dist/docs/modules/_querybuilder_.html +0 -247
  188. package/dist/docs/modules/_requests_batchrequest_.html +0 -265
  189. package/dist/docs/modules/_requests_executablerequest_.html +0 -296
  190. package/dist/docs/modules/_requests_request_.html +0 -333
  191. package/dist/docs/modules/_requests_requestfactory_.html +0 -247
  192. package/dist/docs/modules/_sitefinity_.html +0 -225
  193. package/dist/docs/modules/_utils_.html +0 -225
  194. package/dist/docs/modules/_wherequery_.html +0 -247
  195. package/dist/index.html +0 -474
  196. package/src/Authentication.ts +0 -96
  197. package/src/ContentTypes.ts +0 -5
  198. package/src/Headers.ts +0 -12
  199. package/src/HttpMethods.ts +0 -9
  200. package/src/main.ts +0 -2
  201. package/version.txt +0 -1
@@ -1,138 +1,111 @@
1
- import { RequestBase } from './Request';
1
+ import { RequestBase, RequestOptionsBaseExtended } from './RequestBase';
2
2
  import { utils } from '../utils';
3
+ import { HEADER_NAMES } from "../constants";
4
+ import { SDKOptions, Token } from "../Sitefinity";
3
5
 
4
- var headerNames = require("../Headers").headerNames;
5
- var XMLHttpRequestDone = 4;
6
+ const XMLHttpRequestDone = 4;
6
7
 
7
- function isFunction(func) {
8
- return typeof func === 'function';
9
- }
10
-
11
- export class ExecutableRequest {
12
- private request: RequestBase;
13
- private handlers: any;
14
- private token: any;
8
+ export class ExecutableRequest extends RequestBase {
9
+ private token: Token;
15
10
  private enableUnlimitedChoices: boolean;
16
11
  private integrationMode: boolean;
17
12
 
18
- constructor(options: any) {
19
- this.request = options.request;
20
- this.handlers = options.handlers;
21
- this.token = options.token;
22
- this.enableUnlimitedChoices = options.enableUnlimitedChoices;
23
- this.integrationMode = options.integrationMode;
13
+ constructor(requestOptions: RequestOptionsBaseExtended, token: Token, sdkOptions: SDKOptions) {
14
+ super(requestOptions);
15
+ this.token = token;
16
+ this.successCb = this.successCb || sdkOptions.handlers?.successCb;
17
+ this.failureCb = this.failureCb || sdkOptions.handlers?.failureCb;
18
+ this.enableUnlimitedChoices = sdkOptions.enableUnlimitedChoices;
19
+ this.integrationMode = sdkOptions.integrationMode;
24
20
  }
25
21
 
26
22
  execute() {
27
- this._execute();
28
- }
29
-
30
- _execute() {
31
- var http = new XMLHttpRequest();
23
+ const http = new XMLHttpRequest();
32
24
 
33
25
  http.onreadystatechange = () => {
34
26
  if (http.readyState === XMLHttpRequestDone) {
35
27
  if (http.status > 0) {
36
- var data = this.request._parseResponse(http);
28
+ let data = this.parseResponse(http);
37
29
 
38
30
  if (http.status >= 200 && http.status <= 206) {
39
31
 
40
- if (isFunction(this.request.successCb)) {
41
- this.request.successCb(data);
42
- }
43
-
44
- if (this.handlers && isFunction(this.handlers.successCb)) {
45
- this.handlers.successCb(data);
32
+ if (utils.isFunction(this.successCb)) {
33
+ this.successCb(data);
46
34
  }
47
35
  }
48
36
  else if (http.status >= 400) {
49
37
  // When the data is string, we save the string as message
50
38
  // and convert the data to normal object with message property
51
39
  if (utils.isString(data)) {
52
- var message = data;
53
40
  data = {
54
- message: message
41
+ message: data
55
42
  };
56
43
  }
57
44
 
58
45
  data.status = http.status;
59
46
 
60
47
  // in case of errors we would like there to be one handler for all of the errors
61
- if (isFunction(this.request.failureCb)) {
62
- this.request.failureCb(data);
63
- }
64
-
65
- if (this.handlers && isFunction(this.handlers.failureCb)) {
66
- this.handlers.failureCb(data);
48
+ if (utils.isFunction(this.failureCb)) {
49
+ this.failureCb(data);
67
50
  }
68
51
  }
69
52
  }
70
53
  }
71
54
  };
72
55
 
73
- if (isFunction(this.request.progressCb)) {
56
+ if (utils.isFunction(this.progressCb)) {
74
57
  if (http.upload) {
75
- var that = this;
76
- http.upload.onprogress = function (event) {
77
- that.request.progressCb(event);
58
+ http.upload.onprogress = (event) => {
59
+ this.progressCb(event);
78
60
  };
79
61
  }
80
62
  }
81
63
 
82
- var method = this._getMethod();
83
- var url = this._buildUrl();
64
+ const method = this.getMethod();
65
+ const url = this.buildUrl();
84
66
  http.open(method, url, true);
85
- this.setHeaders(http, this._getHeaders());
67
+ this.setHeaders(http, this.getHeaders());
86
68
 
87
- http.send(this._getBody());
69
+ http.send(utils.serializeToJSON(this.getBody()));
88
70
  }
89
71
 
90
- setHeaders(http: any, headers: any) {
91
- var headerKeys = Object.keys(headers);
92
- for (var i = 0; i < headerKeys.length; i++) {
93
- var currentHeaderName = headerKeys[i];
72
+ private setHeaders(http: XMLHttpRequest, headers: { [key: string]: string }) {
73
+ const headerKeys = Object.keys(headers);
74
+ for (let i = 0; i < headerKeys.length; i++) {
75
+ const currentHeaderName = headerKeys[i];
94
76
  http.setRequestHeader(currentHeaderName, headers[currentHeaderName]);
95
77
  }
96
78
 
97
79
  if (this.token) {
98
80
  if (typeof this.token === 'string') {
99
81
  // for backward compatibility
100
- http.setRequestHeader(headerNames.authorization, this.token);
82
+ http.setRequestHeader(HEADER_NAMES.authorization, this.token);
101
83
  } else {
102
- http.setRequestHeader(headerNames.authorization, this.token.type + " " + this.token.value);
84
+ http.setRequestHeader(HEADER_NAMES.authorization, this.token.type + " " + this.token.value);
103
85
  }
104
86
  }
105
87
 
106
88
  if (this.enableUnlimitedChoices) {
107
- http.setRequestHeader(headerNames.choicesBinaryRepresentation, true);
89
+ http.setRequestHeader(HEADER_NAMES.choicesBinaryRepresentation, "true");
108
90
  }
109
91
 
110
92
  if (this.integrationMode) {
111
- http.setRequestHeader(headerNames.integrationMode, "true");
93
+ http.setRequestHeader(HEADER_NAMES.integrationMode, "true");
112
94
  }
113
95
 
114
96
  // for backward compatibility
115
- http.setRequestHeader(headerNames.serviceRequest, "true");
116
- }
117
-
118
- _getBody() {
119
- var body = utils.serializeToJSON(this.request._getBody());
120
- return body;
121
- }
122
-
123
- _getMethod = function() {
124
- return this.request._getMethod();
125
- }
126
-
127
- _getHeaders = function () {
128
- return this.request._getHeaders();
97
+ http.setRequestHeader(HEADER_NAMES.serviceRequest, "true");
129
98
  }
99
+ }
130
100
 
131
- _getQueryString = function (urlOptions: any) {
132
- return this.request._getQueryString(urlOptions);
133
- }
101
+ export interface ResponseHandlers {
102
+ /**
103
+ * The success handler.
104
+ */
105
+ successCb?: Function;
134
106
 
135
- _buildUrl = function () {
136
- return this.request._buildUrl();
137
- }
107
+ /**
108
+ * The failure handler.
109
+ */
110
+ failureCb?: Function;
138
111
  }
@@ -1,339 +1,213 @@
1
- import { utils } from '../utils';
2
-
3
- var constants = require("../constants").default;
4
- var headerNames = require("../Headers").headerNames;
5
- var contentTypes = require("../ContentTypes").default;
6
- var httpMethods = require("../HttpMethods").default;
7
-
8
- export class RequestBase {
9
- public successCb: (data: any) => void;
10
- public failureCb: (data: any) => void;
11
- public progressCb: any;
12
- public key: string;
13
- private action: string;
14
- private _fallbackProperties: string[];
15
- public urlOptions: any;
16
-
17
- constructor(options: any) {
18
- this.successCb = options.successCb;
19
- this.failureCb = options.failureCb;
20
- this.urlOptions = options.urlOptions;
21
- this.progressCb = options.progressCb;
22
- this.key = options.key;
23
- this.action = options.action;
24
- this._fallbackProperties = options.fallbackProperties;
25
- }
26
-
27
- _getBody() {
28
- return undefined;
29
- }
30
-
31
- _getMethod() {
32
- return null;
33
- }
34
-
35
- _getHeaders(): any {
36
- var headers = {};
37
- headers[headerNames.contentType] = contentTypes.json;
38
- return headers;
39
- }
40
-
41
- _getQueryParameters(paramDictionary: any, urlOptions: any) {
42
- if (urlOptions.ODataParams) {
43
- var query = urlOptions.ODataParams.build();
44
- if (utils.isString(query.$filter))
45
- paramDictionary[constants.ODataParams.$filter] = query.$filter;
46
- if (utils.isString(query.$select))
47
- paramDictionary[constants.ODataParams.$select] = query.$select;
48
- if (utils.isString(query.$expand))
49
- paramDictionary[constants.ODataParams.$expand] = query.$expand;
50
- if (utils.isString(query.$orderby))
51
- paramDictionary[constants.ODataParams.$orderby] = query.$orderby;
52
- if (utils.isNumber(query.$skip))
53
- paramDictionary[constants.ODataParams.$skip] = query.$skip;
54
- if (utils.isNumber(query.$top))
55
- paramDictionary[constants.ODataParams.$top] = query.$top;
56
- if (utils.isString(query.$search))
57
- paramDictionary[constants.ODataParams.$search] = query.$search;
58
-
59
- // inline count
60
- if (utils.isBoolean(query.$count) && query.$count)
61
- paramDictionary[constants.ODataParams.$count] = query.$count;
62
- }
63
-
64
- if (urlOptions.SFParams) {
65
- var sfParams = urlOptions.SFParams;
66
- if (sfParams.provider) {
67
- paramDictionary[constants.SfParams.provider] = sfParams.provider;
68
- }
69
-
70
- if (sfParams.culture) {
71
- paramDictionary[constants.SfParams.culture] = sfParams.culture;
72
- }
73
-
74
- if (sfParams.siteId) {
75
- paramDictionary[constants.SfParams.siteId] = sfParams.siteId;
76
- }
77
- }
78
-
79
- if (this._fallbackProperties) {
80
- paramDictionary["sf_fallback_prop_names"] = this._fallbackProperties.join();
81
- }
82
-
83
- if (urlOptions.additionalQueryParams) {
84
- for (const key in urlOptions.additionalQueryParams) {
85
- if (urlOptions.additionalQueryParams.hasOwnProperty(key)) {
86
- paramDictionary[key] = urlOptions.additionalQueryParams[key];
87
- }
88
- }
89
- }
90
- }
91
-
92
- _getQueryString(urlOptions: any) {
93
- var paramDictionary = {};
94
-
95
- this._getQueryParameters(paramDictionary, urlOptions);
96
- var keys = Object.keys(paramDictionary);
97
- if (keys.length == 0)
98
- return null;
99
-
100
- var queryString = "?";
101
- for (var prop in paramDictionary) {
102
- queryString += prop + "=" + paramDictionary[prop] + "&";
103
- }
104
-
105
- queryString = queryString.substring(0, queryString.length - 1);
106
-
107
- return queryString;
108
- }
109
-
110
- _buildUrl() {
111
- var url = this.urlOptions.baseUrl + (this.urlOptions.entitySet || "");
112
- url += this.key ? ("(" + this.key + ")") : "";
113
- if (this.action) {
114
- url += url.endsWith("/") ? "" : "/";
115
- url += this.action;
116
- }
117
-
118
- // including count here
119
- // not the best solution as build() is called once more in getQueryString
120
- // but not that big of an issue right now
121
- if (this.urlOptions.ODataParams) {
122
- var getCount = this.urlOptions.ODataParams.build().$count;
123
-
124
- if (utils.isBoolean(getCount) && !getCount) {
125
- url += "/$count";
126
- }
127
- }
128
-
129
- return this._addQueryParameters(url);
130
- }
131
-
132
- _parseResponse(http: any) {
133
- var data = utils.parseStringToJson(http.responseText);
134
- if (data) {
135
- if (http.status >= 400 && data.error) {
136
- return data.error;
137
- }
138
-
139
- return data;
140
- }
1
+ import { HEADER_NAMES, HTTP_METHODS } from "../constants";
2
+ import { SDKOptions, Token } from "../Sitefinity";
3
+ import { utils } from '../utils';
4
+ import { ExecutableRequest } from "./ExecutableRequest";
5
+ import { RequestOptionsBaseExtended } from "./RequestBase";
141
6
 
142
- return http.responseText;
7
+ export class GetRequest extends ExecutableRequest {
8
+ constructor(requestOptions: RequestOptionsBaseExtended, token: Token, sdkOptions: SDKOptions) {
9
+ super(requestOptions, token, sdkOptions);
143
10
  }
144
11
 
145
- _addQueryParameters(url: string) {
146
- var queryString = this._getQueryString(this.urlOptions);
147
-
148
- if (queryString) {
149
- if (url.indexOf("?") > -1 && queryString[0] == "?") {
150
- queryString = "&" + queryString.substring(1);
151
- }
152
-
153
- url += queryString;
154
- }
155
-
156
- return url;
12
+ getMethod(): string {
13
+ return HTTP_METHODS.get;
157
14
  }
158
15
  }
159
16
 
160
- export class GetRequest extends RequestBase {
161
- constructor(options: any) {
162
- super(options);
17
+ export class GetByIdRequest extends ExecutableRequest {
18
+ constructor(requestOptions: RequestOptionsBaseExtended, token: Token, sdkOptions: SDKOptions) {
19
+ super(requestOptions, token, sdkOptions);
163
20
  }
164
21
 
165
- _getMethod() {
166
- return httpMethods.Get;
22
+ getMethod(): string {
23
+ return HTTP_METHODS.get;
167
24
  }
168
25
  }
169
26
 
170
- export class GetByIdRequest extends RequestBase {
171
- constructor(options: any) {
172
- super(options);
27
+ export class DeleteRequest extends ExecutableRequest {
28
+ constructor(requestOptions: RequestOptionsBaseExtended, token: Token, sdkOptions: SDKOptions) {
29
+ super(requestOptions, token, sdkOptions);
173
30
  }
174
31
 
175
- _getMethod() {
176
- return httpMethods.Get;
32
+ getMethod(): string {
33
+ return HTTP_METHODS.delete;
177
34
  }
178
35
  }
179
36
 
180
- export class DeleteRequest extends RequestBase {
181
- constructor(options: any) {
182
- super(options);
183
- }
184
-
185
- _getMethod() {
186
- return httpMethods.Delete;
187
- }
188
- }
37
+ export class UpdateRequest extends ExecutableRequest {
38
+ private data: object;
39
+ private saveTemp: boolean;
189
40
 
190
- export class UpdateRequest extends RequestBase {
191
- private _data: any;
192
- private _saveTemp: any;
193
- constructor(options: any) {
194
- super(options);
195
- this._data = options.data;
196
- this._saveTemp = options.saveTemp;
41
+ constructor(requestOptions: PutRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
42
+ super(requestOptions, token, sdkOptions);
43
+ this.data = requestOptions.data;
44
+ this.saveTemp = requestOptions.saveTemp;
197
45
  }
198
46
 
199
- _getMethod() {
200
- return httpMethods.Patch;
47
+ getMethod(): string {
48
+ return HTTP_METHODS.patch;
201
49
  }
202
50
 
203
- _getBody() {
204
- var body = utils.convertDateFieldToISOString(this._data);
51
+ getBody(): object {
52
+ const body = utils.convertDateFieldToISOString(this.data);
205
53
  return body;
206
54
  }
207
55
 
208
- _getHeaders() {
209
- var headers = RequestBase.prototype._getHeaders.call(this);
210
- if (this._saveTemp) {
211
- headers[headerNames.operation] = "SaveTemp";
56
+ getHeaders(): { [key: string]: string } {
57
+ const headers = super.getHeaders();
58
+ if (this.saveTemp) {
59
+ headers[HEADER_NAMES.operation] = "SaveTemp";
212
60
  }
213
61
 
214
62
  return headers;
215
63
  }
216
64
  }
217
65
 
218
- export class CreateRequest extends RequestBase {
219
- public _data: any;
220
- constructor(options: any) {
221
- super(options);
222
- this._data = options.data;
66
+ export class CreateRequest extends ExecutableRequest {
67
+ protected data: object;
68
+
69
+ constructor(requestOptions: PostRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
70
+ super(requestOptions, token, sdkOptions);
71
+ this.data = requestOptions.data;
223
72
  }
224
73
 
225
- _getMethod() {
226
- return httpMethods.Post;
74
+ getMethod(): string {
75
+ return HTTP_METHODS.post;
227
76
  }
228
77
 
229
- _getBody() {
230
- var body = utils.convertDateFieldToISOString(this._data);
78
+ getBody(): object {
79
+ const body = utils.convertDateFieldToISOString(this.data);
231
80
  return body;
232
81
  }
233
82
  }
234
83
 
235
84
  export class GetRelatedRequest extends GetByIdRequest {
236
- private navigationProperty: string;
237
- constructor(options: any) {
238
- super(options);
239
- this.navigationProperty = options.navigationProperty;
85
+ private property: string;
86
+
87
+ constructor(requestOptions: RelatedRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
88
+ super(requestOptions, token, sdkOptions);
89
+ this.property = requestOptions.property;
240
90
  }
241
91
 
242
- _buildUrl() {
243
- var url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.navigationProperty;
244
- return this._addQueryParameters(url);
92
+ buildUrl(): string {
93
+ const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.property;
94
+ return this.addQueryParameters(url);
245
95
  }
246
96
  }
247
97
 
248
98
  export class GetRelatedByIdRequest extends GetByIdRequest {
249
- private navigationProperty: string;
250
- private relatedKey: string;
251
- constructor(options: any) {
252
- super(options);
253
- this.navigationProperty = options.navigationProperty;
254
- this.relatedKey = options.relatedKey;
99
+ private property: string;
100
+ private relatedId: string;
101
+
102
+ constructor(requestOptions: RelatedByIdRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
103
+ super(requestOptions, token, sdkOptions);
104
+ this.property = requestOptions.property;
105
+ this.relatedId = requestOptions.relatedId;
255
106
  }
256
107
 
257
- _buildUrl() {
258
- var url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.navigationProperty + "(" + this.relatedKey + ")";
259
- return this._addQueryParameters(url);
108
+ buildUrl(): string {
109
+ const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.property + "(" + this.relatedId + ")";
110
+ return this.addQueryParameters(url);
260
111
  }
261
112
  }
262
113
 
263
114
  export class DeleteRelatedRequest extends DeleteRequest {
264
- private navigationProperty: string;
265
- constructor(options: any) {
266
- super(options);
267
- this.navigationProperty = options.navigationProperty;
268
- }
115
+ private property: string;
269
116
 
117
+ constructor(requestOptions: RelatedRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
118
+ super(requestOptions, token, sdkOptions);
119
+ this.property = requestOptions.property;
120
+ }
270
121
 
271
- _buildUrl() {
272
- var url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.navigationProperty + "/$ref"
273
- return this._addQueryParameters(url);
122
+ buildUrl(): string {
123
+ const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.property + "/$ref"
124
+ return this.addQueryParameters(url);
274
125
  }
275
126
  }
276
127
 
277
128
  export class DeleteRelatedByIdRequest extends DeleteRequest {
278
- private navigationProperty: string;
279
- private relatedKey: string;
280
- constructor(options: any) {
281
- super(options);
282
- this.navigationProperty = options.navigationProperty;
283
- this.relatedKey = options.relatedKey
129
+ private property: string;
130
+ private relatedId: string;
131
+
132
+ constructor(requestOptions: RelatedByIdRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
133
+ super(requestOptions, token, sdkOptions);
134
+ this.property = requestOptions.property;
135
+ this.relatedId = requestOptions.relatedId;
284
136
  }
285
137
 
286
- _buildUrl() {
287
- var url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.navigationProperty + "(" + this.relatedKey + ")/$ref";
288
- return this._addQueryParameters(url);
138
+ buildUrl(): string {
139
+ const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.property + "(" + this.relatedId + ")/$ref";
140
+ return this.addQueryParameters(url);
289
141
  }
290
142
  }
291
143
 
292
144
  export class CreateRelatedRequest extends CreateRequest {
293
- private navigationProperty: string;
294
- constructor(options: any) {
295
- super(options);
296
- this.navigationProperty = options.navigationProperty;
297
- this.key = options.key;
145
+ private property: string;
146
+
147
+ constructor(requestOptions: RelatedRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
148
+ super(requestOptions, token, sdkOptions);
149
+ this.property = requestOptions.property;
150
+ this.key = requestOptions.key;
298
151
  }
299
152
 
300
- _buildUrl() {
301
- var url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.navigationProperty + "/$ref";
302
- return this._addQueryParameters(url);
153
+ buildUrl(): string {
154
+ const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + "(" + this.key + ")/" + this.property + "/$ref";
155
+ return this.addQueryParameters(url);
303
156
  }
304
157
  }
305
158
 
306
-
307
159
  export class UploadRequest extends CreateRequest {
308
- private fileName: any;
309
- private uploadProperties: any;
310
- private contentType: any;
311
-
312
- constructor(options: any) {
313
- super(options);
314
- this.fileName = options.fileName;
315
- this.uploadProperties = options.uploadProperties;
316
- this.contentType = options.contentType;
317
- }
318
-
319
- _getHeaders() {
320
- var headers = super._getHeaders();
321
- headers[headerNames.contentType] = this.contentType || "application/octet-stream";
322
- headers[headerNames.fileName] = this.fileName;
323
- headers[headerNames.properties] = this.uploadProperties;
324
- headers[headerNames.contentEncoding] = "identity";
160
+ private fileName: string;
161
+ private uploadProperties: { [key: string]: string };
162
+ private contentType: string;
163
+
164
+ constructor(requestOptions: UploadRequestOptionsExtended, token: Token, sdkOptions: SDKOptions) {
165
+ super(requestOptions, token, sdkOptions);
166
+ this.fileName = requestOptions.fileName;
167
+ this.uploadProperties = requestOptions.uploadProperties;
168
+ this.contentType = requestOptions.contentType;
169
+ }
170
+
171
+ getHeaders(): { [key: string]: string } {
172
+ const headers = super.getHeaders();
173
+ headers[HEADER_NAMES.contentType] = this.contentType || "application/octet-stream";
174
+ headers[HEADER_NAMES.fileName] = this.fileName;
175
+ headers[HEADER_NAMES.properties] = JSON.stringify(this.uploadProperties);
176
+ headers[HEADER_NAMES.contentEncoding] = "identity";
325
177
  return headers;
326
178
  }
327
179
 
328
- _getBody() {
329
- return this._data;
180
+ getBody(): object {
181
+ return this.data;
330
182
  }
331
183
 
332
- _getMethod() {
184
+ getMethod(): string {
333
185
  if (this.key) {
334
- return httpMethods.Patch;
186
+ return HTTP_METHODS.patch;
335
187
  }
336
188
 
337
- return httpMethods.Post;
189
+ return HTTP_METHODS.post;
338
190
  }
339
191
  }
192
+
193
+ export interface PostRequestOptionsExtended extends RequestOptionsBaseExtended {
194
+ data?: object;
195
+ }
196
+
197
+ export interface PutRequestOptionsExtended extends PostRequestOptionsExtended {
198
+ saveTemp: boolean;
199
+ }
200
+
201
+ export interface RelatedRequestOptionsExtended extends PostRequestOptionsExtended {
202
+ property: string;
203
+ }
204
+
205
+ export interface RelatedByIdRequestOptionsExtended extends RelatedRequestOptionsExtended {
206
+ relatedId: string;
207
+ }
208
+
209
+ export interface UploadRequestOptionsExtended extends PostRequestOptionsExtended {
210
+ fileName: string;
211
+ contentType: string;
212
+ uploadProperties: { [key: string]: string };
213
+ }