bx-rest 0.0.5 → 0.0.7

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 (77) hide show
  1. package/README.md +24 -0
  2. package/bx-rest.service.d.ts +6 -0
  3. package/consts/time.d.ts +3 -0
  4. package/esm2020/bx-rest.mjs +5 -0
  5. package/esm2020/bx-rest.service.mjs +14 -0
  6. package/esm2020/consts/time.mjs +4 -0
  7. package/esm2020/public-api.mjs +7 -0
  8. package/esm2020/rest/bx-rest.module.mjs +28 -0
  9. package/esm2020/services/base.mjs +174 -0
  10. package/fesm2015/bx-rest.mjs +225 -0
  11. package/fesm2015/bx-rest.mjs.map +1 -0
  12. package/fesm2020/bx-rest.mjs +222 -0
  13. package/fesm2020/bx-rest.mjs.map +1 -0
  14. package/index.d.ts +5 -0
  15. package/package.json +40 -138
  16. package/public-api.d.ts +3 -0
  17. package/rest/bx-rest.module.d.ts +8 -0
  18. package/services/base.d.ts +32 -0
  19. package/LICENSE +0 -21
  20. package/src/consts/part-name-metods.ts +0 -11
  21. package/src/consts/time.ts +0 -3
  22. package/src/functions/isDate.ts +0 -8
  23. package/src/functions/isEqual.ts +0 -17
  24. package/src/functions/isValidDate.ts +0 -9
  25. package/src/functions/serializeJavascript.ts +0 -229
  26. package/src/index.d.ts +0 -19
  27. package/src/index.ts +0 -3
  28. package/src/rest/user/user.ts +0 -342
  29. package/src/services/base.ts +0 -187
  30. package/src/services/http/HttpBX.ts +0 -176
  31. package/src/services/http/HttpData.ts +0 -142
  32. package/src/services/http/base/HttpData.ts +0 -141
  33. package/src/services/http/base/base.ts +0 -40
  34. package/src/services/http/base/http.ts +0 -67
  35. package/src/services/http/http.ts +0 -182
  36. package/src/services/http/sessionKey.ts +0 -205
  37. package/src/services/map/base.ts +0 -8
  38. package/src/services/map/rest/user.ts +0 -82
  39. package/src/services/snack-bar/snack-bar.service.ts +0 -40
  40. package/src/services/snack-bar/toast-message/toast-message.component.html +0 -13
  41. package/src/services/snack-bar/toast-message/toast-message.component.scss +0 -53
  42. package/src/services/snack-bar/toast-message/toast-message.component.ts +0 -26
  43. package/src/services/vanilla/JSON.ts +0 -15
  44. package/src/services/vanilla/iframe.ts +0 -57
  45. package/src/services/vanilla/localStorage.ts +0 -42
  46. package/src/services/vanilla//321/201ookies.ts +0 -43
  47. package/src/store/auth.ts +0 -46
  48. package/src/store/users.ts +0 -88
  49. package/src/tsconfig.base.json +0 -6
  50. package/src/tsconfig.cjs.json +0 -10
  51. package/src/tsconfig.cjs.spec.json +0 -10
  52. package/src/tsconfig.esm.json +0 -9
  53. package/src/tsconfig.esm5.json +0 -11
  54. package/src/tsconfig.esm5.rollup.json +0 -8
  55. package/src/tsconfig.types.json +0 -14
  56. package/src/tsconfig.types.spec.json +0 -7
  57. package/src/typification/auth/OAuthBXParam.ts +0 -6
  58. package/src/typification/auth/application.ts +0 -8
  59. package/src/typification/auth/save.ts +0 -14
  60. package/src/typification/auth/urlData.ts +0 -4
  61. package/src/typification/rest/api-lib.ts +0 -18
  62. package/src/typification/rest/base/ApiPaginationBX.ts +0 -3
  63. package/src/typification/rest/base/OrderOptions.ts +0 -3
  64. package/src/typification/rest/base/YesNo.ts +0 -1
  65. package/src/typification/rest/base/fieldBXType.ts +0 -1
  66. package/src/typification/rest/base/filterGenerator.ts +0 -3
  67. package/src/typification/rest/base/httpAnswerBX.ts +0 -15
  68. package/src/typification/rest/batch/batchRequestParam.ts +0 -14
  69. package/src/typification/rest/lib.ts +0 -19
  70. package/src/typification/rest/settings.ts +0 -7
  71. package/src/typification/rest/support/param.ts +0 -8
  72. package/src/typification/rest/user/CustomUserFieldInfo.ts +0 -70
  73. package/src/typification/rest/user/UserFilterSearch.ts +0 -43
  74. package/src/typification/rest/user/get.ts +0 -17
  75. package/src/typification/rest/user/user.ts +0 -68
  76. package/src/typification/rest/user/userFilter.ts +0 -17
  77. package/tsconfig.json +0 -24
@@ -1,187 +0,0 @@
1
- import { Injectable } from '@angular/core'
2
- import { time } from 'bx-rest/src/consts/time'
3
- // import { environment } from 'bx-rest/src/environments/environment'
4
- import { DateTime } from 'luxon'
5
- import { DateTimeOptions } from 'luxon/src/datetime'
6
-
7
- @Injectable({
8
- providedIn: 'root'
9
- })
10
- export class BaseServices {
11
-
12
- toStr(val: any): string {
13
- return (val) ? String(val) : ''
14
- }
15
-
16
- toNumber(val: any): number {
17
- return (val && Number(val)) ? Number(val) : 0
18
- }
19
-
20
- toDate(val: number | string | Date, format?: string, opt?: DateTimeOptions): Date {
21
- if (val instanceof Date) {
22
- return val
23
- } else if (typeof val == 'string') {
24
- if (format) {
25
- if (opt) {
26
- return DateTime.fromFormat(val, format, opt).toJSDate()
27
- }
28
- return DateTime.fromFormat(val, format).toJSDate()
29
- } else {
30
- return new Date(val)
31
- }
32
- } else if (typeof val == 'number') {
33
- return new Date(val)
34
- }
35
- console.error('Wrong date format', val, format)
36
- throw 'Wrong date format'
37
- }
38
-
39
- getBXStrTime(date: Date): string {
40
- return this.toISOStringWithTimezone(date)
41
- }
42
-
43
- toISOStringWithTimezone(date: Date): string {
44
- const tzOffset = -date.getTimezoneOffset()
45
- const diff = tzOffset >= 0 ? '+' : '-'
46
- const pad = (n: number) => `${Math.floor(Math.abs(n))}`.padStart(2, '0')
47
- return date.getFullYear() +
48
- '-' + pad(date.getMonth() + 1) +
49
- '-' + pad(date.getDate()) +
50
- 'T' + pad(date.getHours()) +
51
- ':' + pad(date.getMinutes()) +
52
- ':' + pad(date.getSeconds()) +
53
- diff + pad(tzOffset / 60) +
54
- ':' + pad(tzOffset % 60)
55
- };
56
-
57
- toBool(val: any) {
58
- switch (typeof val) {
59
- case 'string':
60
- val = val.toLowerCase()
61
- if (val === 'n' || val === 'y') { // битриксовые понятия о bool
62
- return val === 'y'
63
- } else if (val === 'true' || val === 'false') { // битриксовые понятия о bool
64
- return val === 'true'
65
- } else {
66
- return false
67
- }
68
- default:
69
- return Boolean(val)
70
- }
71
- }
72
-
73
- toBXYorN(val: boolean) {
74
- return (val) ? 'Y' : 'N'
75
- }
76
-
77
- typeof(val: any) {
78
- return typeof val
79
- }
80
-
81
- typeDefClass(val: object): undefined | null | 'date' {
82
- if (val) {
83
- if (val instanceof Date) {
84
- return 'date'
85
- }
86
- return undefined
87
- } else {
88
- return null
89
- }
90
- }
91
-
92
- toJSON(val: object) {
93
- return JSON.stringify(val)
94
- }
95
-
96
- fromJSON<T>(val: string): T | undefined {
97
- return JSON.parse(val)
98
- }
99
-
100
- prepareBaseAddress(url: string, add: string = '') {
101
- if (url.search('https://') !== 0 && url.search('http://')) {
102
- url = 'https://' + url
103
- }
104
-
105
- if (url.lastIndexOf('/') !== (url.length - 1)) {
106
- url = url + '/'
107
- }
108
-
109
- url = url + add
110
-
111
- return url
112
- }
113
-
114
- getHomeAddress() {
115
- // return this.prepareBaseAddress(environment.urls.home)
116
- return this.prepareBaseAddress('b24.trace-studio.com')
117
- }
118
-
119
- dateDiff(a: Date, b: Date) {
120
- return new Date(a.valueOf() - b.valueOf())
121
- }
122
-
123
- dateDiffInDays(a: Date, b: Date) {
124
- return Math.floor(this.dateDiff(a, b).valueOf() / time.oneDayMilliseconds);
125
- }
126
-
127
- getBase64File(file: File) {
128
- return new Promise((resolve, reject) => {
129
- const reader = new FileReader()
130
- reader.readAsDataURL(file)
131
- reader.onload = () => resolve(reader.result)
132
- reader.onerror = error => reject(error)
133
- })
134
- }
135
-
136
- async getBase64FileLikeStr(file: File): Promise<{ header: string, val: string } | undefined> {
137
- let result = await this.getBase64File(file)
138
- if (typeof result === 'string') {
139
- let split = result.split(',')
140
- return {
141
- header: split[0],
142
- val: split[1]
143
- }
144
- }
145
- return undefined
146
- }
147
-
148
- sumArray(numbers: number[]) {
149
- return numbers.reduce((a, b) => {
150
- return a + b;
151
- })
152
- }
153
-
154
- isItTheSameDate(date1: Date, date2: Date) {
155
- return date1.getDate() === date2.getDate()
156
- && date1.getMonth() === date2.getMonth()
157
- && date1.getFullYear() === date2.getFullYear()
158
- }
159
-
160
- toUnix(date: Date) {
161
- return Math.floor(date.valueOf() / 1000)
162
- }
163
-
164
- arrSum(x: number[]) {
165
- let s = 0;
166
- for (let i = 0; i < x.length; i++) {
167
- s += x[i]
168
- }
169
- return s
170
- }
171
-
172
- getBaseUrlHttps(url: string, component = false) {
173
- if (component) {
174
- return encodeURI(this.cropUrl(url) + '/');
175
- } else {
176
- return encodeURI('https://' + this.cropUrl(url) + '/');
177
- }
178
- }
179
-
180
- cropUrl(url: string) {
181
- url = (url) ? url.replace('https://', '') : ''
182
- url = (url) ? url.replace('http://', '') : ''
183
- url = (url) ? url.replace('https:', '') : ''
184
- url = (url) ? url.replace('http:', '') : ''
185
- return url
186
- }
187
- }
@@ -1,176 +0,0 @@
1
- import { Observable, throwError, take, mergeMap, forkJoin } from 'rxjs'
2
- import { catchError, map } from 'rxjs/operators'
3
- import { Injectable } from '@angular/core'
4
- import clone from 'just-clone'
5
- import { iHttpParamSettings } from 'bx-rest/src/typification/rest/settings'
6
- import BaseHttpServices from 'bx-rest/src/services/http/http'
7
- import {
8
- iBatchRequestAnswer, iBatchRequestParam,
9
- iBatchRequestParamArr,
10
- iBatchRequestParamHttp, keyBatch
11
- } from 'bx-rest/src/typification/rest/batch/batchRequestParam'
12
- import flatten from 'just-flatten-it'
13
-
14
- @Injectable({
15
- providedIn: 'root'
16
- })
17
- export default class HttpBXServices extends BaseHttpServices {
18
-
19
- timeNowOnServer() {
20
- return this.httpGet<{ result?: Date, error?: string }>('server.time').pipe(
21
- map(v => {
22
- if (v && v.result) {
23
- return new Date(v.result)
24
- }
25
- return undefined
26
- }),
27
- )
28
- }
29
-
30
- /**
31
- * Это пиздец а не метод
32
- * @param param
33
- */
34
- branch<T, A>(param: iBatchRequestParamArr<T> | iBatchRequestParam<T>[]): Observable<iBatchRequestAnswer<A>[] | undefined> {
35
- let prepareParam = Object.entries<string>(this.prepareBatch<T>(param))
36
- const size = 50 // больше не отдаст
37
- let subarray = [] //массив в который будет выведен результат.
38
- for (let i = 0; i < Math.ceil(prepareParam.length / size); i++) {
39
- subarray[i] = prepareParam.slice((i * size), (i * size) + size)
40
- }
41
-
42
- return forkJoin(
43
- subarray.map(i => {
44
- return this.httpPost('batch.json', {
45
- halt: 0,
46
- cmd: Object.assign({}, ...i.map(x => {
47
- return {[x[0]]: x[1]}
48
- }))
49
- })
50
- })
51
- ) as Observable<iBatchRequestAnswer<A>[]>
52
- }
53
-
54
- prepareBatch<T>(param: iBatchRequestParamArr<T> | iBatchRequestParam<T>[]): iBatchRequestParamHttp {
55
- let res: iBatchRequestParamHttp = Object.keys(param).reduce(
56
- (obj, key) => {
57
- obj[key] = '';
58
- return obj;
59
- },
60
- {} as iBatchRequestParamHttp
61
- );
62
- for (let key in param) {
63
- if(typeof key === 'string' || typeof key === 'number' && param[key].param) {
64
- res[key] = param[key].name + '?' + this.getHttpParamsGet(param[key].param).toString()
65
- }
66
- }
67
- return res
68
- }
69
-
70
- mapBranchResult<T>(res: iBatchRequestAnswer<T>[]){
71
- return Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined)) as {[key:keyBatch]: T}
72
- }
73
-
74
- mapBranchResultWithoutKey<T>(res: iBatchRequestAnswer<T>[]): T[]{
75
- return flatten<T>(Object.assign([], ...res.map(i => (i.result && i.result.result) ? i.result.result : undefined)))
76
- }
77
-
78
- post<T>(name: string[],
79
- params: any = {},
80
- textError = '',
81
- settings: iHttpParamSettings = this.defSettings) {
82
- return this.httpPost<T>(this.getNameMethod(name), params, textError, settings)
83
- }
84
-
85
- get<T>(name: string[],
86
- params: any = {},
87
- textError = '',
88
- settings: iHttpParamSettings = this.defSettings) {
89
- return this.httpGet<T>(this.getNameMethod(name), params, textError, settings)
90
- }
91
-
92
- override httpPost<T>(url: string,
93
- params: any = {},
94
- textError = '',
95
- settings: iHttpParamSettings = this.defSettings
96
- ): Observable<T | undefined> {
97
- return this.session.getAuthParams().pipe(
98
- mergeMap(auth => {
99
- if (auth) {
100
- const paramsClone = clone(params)
101
- paramsClone[this.session.getKeyAuth()] = auth
102
- return this.session.getBaseUrl().pipe(mergeMap(v => {
103
- if (v) {
104
- return this.http.post<T | undefined>(
105
- this.prepareBaseAddress(v) + url,
106
- this.getHttpParamsPost(paramsClone, new FormData(), false, [], settings))
107
- .pipe(
108
- take(1),
109
- catchError(err => {
110
- if (!textError.length && err.error.error_description) {
111
- textError = err.error.error_description
112
- }
113
-
114
- this.snackBar.error('Ошибка: ' + textError)
115
- return throwError(() => err)
116
- })
117
- )
118
- }
119
- return throwError(() => 'get base url error')
120
- }))
121
- } else {
122
- this.snackBar.error('Error: Auth not get')
123
- return throwError(() => 'auth not get')
124
- }
125
- }))
126
- }
127
-
128
- override httpGet<T>(
129
- url: string,
130
- params: any = {},
131
- textError = '',
132
- settings: iHttpParamSettings = this.defSettings
133
- ): Observable<T | undefined> {
134
- return this.session.getAuthParams().pipe(
135
- mergeMap(auth => {
136
- if (auth) {
137
- if (params === null) {
138
- params = {}
139
- }
140
- const paramsClone = clone(params)
141
- paramsClone[this.session.getKeyAuth()] = auth
142
- let options = {
143
- params: this.getHttpParamsGet(paramsClone)
144
- }
145
-
146
- return this.session.getBaseUrl().pipe(
147
- mergeMap(v => {
148
- if (v) {
149
- return this.http.get<T>(this.prepareBaseAddress(v) + url, options).pipe(
150
- take(1),
151
- catchError(err => {
152
- if (!textError.length && err.error.error_description) {
153
- textError = err.error.error_description
154
- }
155
-
156
- this.snackBar.error('Ошибка: ' + textError)
157
- return throwError(() => err)
158
- }))
159
- }
160
- return throwError(() => 'get base url error')
161
- })
162
- )
163
- } else {
164
- this.snackBar.error('Error: Auth not get')
165
- return throwError(() => 'auth not get')
166
- }
167
- })
168
- )
169
- }
170
-
171
- getNameMethod(arr: string[]) {
172
- return arr.join('.')
173
- }
174
-
175
- }
176
-
@@ -1,142 +0,0 @@
1
- import { BaseServices } from 'bx-rest/src/services/base'
2
- import { HttpParams } from '@angular/common/http'
3
- import { iHttpParamSettings } from 'bx-rest/src/typification/rest/settings'
4
- import iHttpAnswerBX from 'bx-rest/src/typification/rest/base/httpAnswerBX'
5
-
6
- export class HttpData extends BaseServices {
7
-
8
- defSettings: iHttpParamSettings = {
9
- timeZone: {
10
- calc: true,
11
- levelOut: false
12
- }
13
- }
14
-
15
- getHttpParamsGet( // не так уж и сложно сделать сложенный HttpParams, да гугл?
16
- obj: any,
17
- sendHttpParams: HttpParams = new HttpParams(),
18
- thisArray = false,
19
- nesting: string[] = [],
20
- // settings = this.defSettings
21
- _ = this.defSettings
22
- ): any {
23
- for (const key in obj) {
24
- let setKey = ''
25
- if (nesting.length) {
26
- let first = nesting[0]
27
- setKey = (nesting.length > 1)
28
- ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
29
- : first + '[' + key + ']'
30
- } else {
31
- setKey = key
32
- }
33
- switch (typeof obj[key]) {
34
- case 'string':
35
- sendHttpParams = sendHttpParams.set(setKey, obj[key])
36
- break
37
- case 'symbol':
38
- case 'number':
39
- case 'bigint':
40
- case 'boolean':
41
- sendHttpParams = sendHttpParams.set(setKey, String(obj[key]))
42
- break
43
- case 'object':
44
- nesting.push(key)
45
- sendHttpParams = this.getHttpParamsGet(obj[key], sendHttpParams, false, nesting)
46
- nesting.pop()
47
- break
48
- case 'function':
49
- case 'undefined':
50
- default:
51
- console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj)
52
- }
53
- }
54
- return sendHttpParams
55
- }
56
-
57
- getHttpParamsPost(
58
- obj: any,
59
- sendHttpParams: FormData = new FormData(),
60
- thisArray = false,
61
- nesting: string[] = [],
62
- settings = this.defSettings
63
- ): any {
64
-
65
- if (obj instanceof Blob) {
66
- let first = nesting[0]
67
- let setKey = (nesting.length > 1)
68
- ? first + '[' + nesting.slice(1).join('][') + ']'
69
- : first
70
- sendHttpParams.set(setKey, obj)
71
- return sendHttpParams
72
- } else if (obj instanceof Date) {
73
- let first = nesting[0]
74
- let tzoffset = (settings.timeZone.calc) ? obj.getTimezoneOffset() * 60000 : 0 // вычисляем влияние часового пояса
75
- let levelOut = (settings.timeZone.levelOut) ? obj.getTimezoneOffset() * 60000 : 0 // вычисляем влияние часового пояса
76
- let setKey = (nesting.length > 1)
77
- ? first + '[' + nesting.slice(1).join('][') + ']'
78
- : first
79
- sendHttpParams.set(setKey, (new Date(obj.valueOf() + tzoffset - levelOut)).toISOString())
80
- return sendHttpParams
81
- } else {
82
- for (const key in obj) {
83
- let setKey = ''
84
- if (nesting.length) {
85
- let first = nesting[0]
86
- setKey = (nesting.length > 1)
87
- ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
88
- : first + '[' + key + ']'
89
- } else {
90
- setKey = key
91
- }
92
- switch (typeof obj[key]) {
93
- case 'string':
94
- sendHttpParams.set(setKey, obj[key])
95
- break
96
- case 'symbol':
97
- case 'number':
98
- case 'bigint':
99
- case 'boolean':
100
- sendHttpParams.set(setKey, String(obj[key]))
101
- break
102
- case 'object':
103
- nesting.push(key)
104
- sendHttpParams = this.getHttpParamsPost(
105
- obj[key],
106
- sendHttpParams,
107
- false,
108
- nesting,
109
- settings
110
- )
111
- nesting.pop()
112
- break
113
- case 'function':
114
- case 'undefined':
115
- default:
116
- console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj)
117
- }
118
- }
119
- }
120
- return sendHttpParams
121
- }
122
-
123
- mapResult<T>(v: iHttpAnswerBX<T> | undefined): T | undefined {
124
- if (v && (v.result || typeof v.result === 'boolean')) {
125
- return v.result
126
- }
127
- return undefined
128
- }
129
-
130
- sliceArrayIntoChunks(arr: any[], chunkSize: number) {
131
- const res = [];
132
- for (let i = 0; i < arr.length; i += chunkSize) {
133
- const chunk = arr.slice(i, i + chunkSize);
134
- res.push(chunk);
135
- }
136
- return res;
137
- }
138
-
139
- removingMultipleSlashes(str: string) {
140
- return str.replace(/\/{2,}/g, '/')
141
- }
142
- }
@@ -1,141 +0,0 @@
1
- import { BaseServices } from 'bx-rest/src/services/base'
2
- import { HttpParams } from '@angular/common/http'
3
- import { iHttpParamSettings } from 'bx-rest/src/typification/rest/settings'
4
- import iHttpAnswerBX from 'bx-rest/src/typification/rest/base/httpAnswerBX'
5
-
6
- export class HttpData extends BaseServices {
7
-
8
- defSettings: iHttpParamSettings = {
9
- timeZone: {
10
- calc: true,
11
- levelOut: false
12
- }
13
- }
14
-
15
- getHttpParamsGet( // не так уж и сложно сделать сложенный HttpParams, да гугл?
16
- obj: any,
17
- sendHttpParams: HttpParams = new HttpParams(),
18
- thisArray = false,
19
- nesting: string[] = [],
20
- // settings = this.defSettings
21
- _ = this.defSettings
22
- ): any {
23
- for (const key in obj) {
24
- let setKey = ''
25
- if (nesting.length) {
26
- let first = nesting[0]
27
- setKey = (nesting.length > 1)
28
- ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
29
- : first + '[' + key + ']'
30
- } else {
31
- setKey = key
32
- }
33
- switch (typeof obj[key]) {
34
- case 'string':
35
- sendHttpParams = sendHttpParams.set(setKey, obj[key])
36
- break
37
- case 'symbol':
38
- case 'number':
39
- case 'bigint':
40
- case 'boolean':
41
- sendHttpParams = sendHttpParams.set(setKey, String(obj[key]))
42
- break
43
- case 'object':
44
- nesting.push(key)
45
- sendHttpParams = this.getHttpParamsGet(obj[key], sendHttpParams, false, nesting)
46
- nesting.pop()
47
- break
48
- case 'function':
49
- case 'undefined':
50
- default:
51
- console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj)
52
- }
53
- }
54
- return sendHttpParams
55
- }
56
-
57
- getHttpParamsPost(
58
- obj: any,
59
- sendHttpParams: FormData = new FormData(),
60
- thisArray = false,
61
- nesting: string[] = [],
62
- settings = this.defSettings
63
- ): any {
64
-
65
- if (obj instanceof Blob) {
66
- let first = nesting[0]
67
- let setKey = (nesting.length > 1)
68
- ? first + '[' + nesting.slice(1).join('][') + ']'
69
- : first
70
- sendHttpParams.set(setKey, obj)
71
- return sendHttpParams
72
- } else if (obj instanceof Date) {
73
- let first = nesting[0]
74
- let tzoffset = (settings.timeZone.calc) ? obj.getTimezoneOffset() * 60000 : 0 // вычисляем влияние часового пояса
75
- let setKey = (nesting.length > 1)
76
- ? first + '[' + nesting.slice(1).join('][') + ']'
77
- : first
78
- sendHttpParams.set(setKey, (new Date(obj.valueOf() + tzoffset)).toISOString())
79
- return sendHttpParams
80
- } else {
81
- for (const key in obj) {
82
- let setKey = ''
83
- if (nesting.length) {
84
- let first = nesting[0]
85
- setKey = (nesting.length > 1)
86
- ? first + '[' + nesting.slice(1).join('][') + '][' + key + ']'
87
- : first + '[' + key + ']'
88
- } else {
89
- setKey = key
90
- }
91
- switch (typeof obj[key]) {
92
- case 'string':
93
- sendHttpParams.set(setKey, obj[key])
94
- break
95
- case 'symbol':
96
- case 'number':
97
- case 'bigint':
98
- case 'boolean':
99
- sendHttpParams.set(setKey, String(obj[key]))
100
- break
101
- case 'object':
102
- nesting.push(key)
103
- sendHttpParams = this.getHttpParamsPost(
104
- obj[key],
105
- sendHttpParams,
106
- false,
107
- nesting,
108
- settings
109
- )
110
- nesting.pop()
111
- break
112
- case 'function':
113
- case 'undefined':
114
- default:
115
- console.error('Ты отправил что-то не то', obj[key], typeof obj[key], typeof obj)
116
- }
117
- }
118
- }
119
- return sendHttpParams
120
- }
121
-
122
- mapResult<T>(v: iHttpAnswerBX<T> | undefined): T | undefined {
123
- if (v && (v.result || typeof v.result === 'boolean')) {
124
- return v.result
125
- }
126
- return undefined
127
- }
128
-
129
- sliceArrayIntoChunks(arr: any[], chunkSize: number) {
130
- const res = [];
131
- for (let i = 0; i < arr.length; i += chunkSize) {
132
- const chunk = arr.slice(i, i + chunkSize);
133
- res.push(chunk);
134
- }
135
- return res;
136
- }
137
-
138
- removingMultipleSlashes(str: string) {
139
- return str.replace(/\/{2,}/g, '/')
140
- }
141
- }
@@ -1,40 +0,0 @@
1
- // import { iHttpParamSettings } from '../../../typification/rest/settings'
2
- import { iHttpParamSettings } from 'bx-rest/src/typification/rest/settings'
3
- import { HttpClient } from '@angular/common/http'
4
- import SnackBarService from 'bx-rest/src/services/snack-bar/snack-bar.service'
5
- import { Observable, of, } from 'rxjs'
6
- import { HttpData } from 'bx-rest/src/services/http/HttpData'
7
- import { Injectable } from '@angular/core'
8
-
9
- @Injectable({
10
- providedIn: 'root'
11
- })
12
- export abstract class BaseHttp extends HttpData {
13
-
14
- protected constructor(public http: HttpClient, public snackBar: SnackBarService) {
15
- super()
16
- }
17
-
18
- abstract httpGet<T>(
19
- url: string,
20
- params: any,
21
- textError: string,
22
- settings: iHttpParamSettings
23
- ): Observable<T | undefined>
24
-
25
- abstract httpPost<T>(url: string,
26
- params: any ,
27
- textError: string,
28
- settings: iHttpParamSettings
29
- ): Observable<T | undefined>
30
-
31
- handleError<T>(
32
- result?: T,
33
- textError = 'получения данных') {
34
- return (error: Error): Observable<T> => {
35
- console.error(`failed: ${error.message}`)
36
- this.snackBar.error('Ошибка: ' + textError)
37
- return of(result as T)
38
- };
39
- }
40
- }