@pronto-tools-and-more/api 12.39.0 → 12.41.0

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pronto-tools-and-more/api",
3
- "version": "12.39.0",
3
+ "version": "12.41.0",
4
4
  "description": "",
5
5
  "main": "src/main.js",
6
6
  "type": "module",
@@ -0,0 +1,241 @@
1
+ export const top = `query CatalogTaxonomiesQuery($appInfo: AppInfo!, $deviceInfo: DeviceInfo!, $authorization: Authorization!, $filter: TaxonomyFilter, $sort: [TaxonomyComparator!], $first: Int, $after: String, $includeTaxonomySeoMetadata: Boolean!, $includeContents: Boolean!, $contentFilter: ContentFilter, $contentSort: [ContentComparator!], $contentFirst: Int, $contentAfter: String, $includeBundledContent: Boolean!, $includeResources: Boolean!, $includeBlocks: Boolean!, $includeHtml: Boolean!, $includeContentSeoMetadata: Boolean!, $propertyFilter: PropertyFilter) {
2
+ catalog(
3
+ appInfo: $appInfo
4
+ deviceInfo: $deviceInfo
5
+ authorization: $authorization
6
+ ) {
7
+ taxonomiesConnection(first: $first, after: $after, sort: $sort, filter: $filter) {
8
+ pageInfo {
9
+ hasNextPage
10
+ endCursor
11
+ }
12
+ edges {
13
+ node {
14
+ __typename
15
+ ...TaxonomyFragment
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
21
+
22
+ fragment TaxonomyFragment on Taxonomy {
23
+ id
24
+ internalId
25
+ name
26
+ description
27
+ type
28
+ parentId
29
+ seoMetadata @include(if: $includeTaxonomySeoMetadata) {
30
+ key
31
+ value
32
+ }
33
+ properties {
34
+ key
35
+ value
36
+ }
37
+ thumbnails {
38
+ kind
39
+ url
40
+ properties {
41
+ key
42
+ value
43
+ }
44
+ }
45
+ contentsConnection(
46
+ filter: $contentFilter
47
+ sort: $contentSort
48
+ first: $contentFirst
49
+ after: $contentAfter
50
+ ) @include(if: $includeContents) {
51
+ pageInfo {
52
+ hasNextPage
53
+ endCursor
54
+ }
55
+ edges {
56
+ node {
57
+ ...ContentFragment
58
+ ...IssueFragment
59
+ ...PostFragment
60
+ ...BundleFragment
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ fragment ContentFragment on Content {
67
+ __typename
68
+ id
69
+ version
70
+ name
71
+ description
72
+ index
73
+ alias
74
+ externalId
75
+ publicationDate
76
+ unpublishDate
77
+ lastModified
78
+ access
79
+ productId
80
+ purchaseData {
81
+ purchased
82
+ purchasedBy
83
+ }
84
+ publication {
85
+ id
86
+ }
87
+ properties(filter: $propertyFilter) {
88
+ key
89
+ value
90
+ }
91
+ seoMetadata @include(if: $includeContentSeoMetadata) {
92
+ key
93
+ value
94
+ }
95
+ thumbnails {
96
+ kind
97
+ url
98
+ properties {
99
+ key
100
+ value
101
+ }
102
+ }
103
+ categories
104
+ tags
105
+ }
106
+
107
+ fragment IssueFragment on Issue {
108
+ contentLength
109
+ numberOfPages
110
+ previewContentLength
111
+ resources @include(if: $includeResources) {
112
+ id
113
+ url
114
+ type
115
+ contentLength
116
+ properties {
117
+ key
118
+ value
119
+ type
120
+ }
121
+ }
122
+ }
123
+
124
+ fragment PostFragment on Post {
125
+ postType
126
+ bundleId
127
+ bundles {
128
+ id
129
+ bundleType
130
+ }
131
+ taxonomies {
132
+ ...TaxonomySummaryFragment
133
+ }
134
+ authors {
135
+ name
136
+ email
137
+ }
138
+ bundleId
139
+ content @include(if: $includeBlocks) {
140
+ ...ContentBlockFragment
141
+ }
142
+ previewContentBlocks @include(if: $includeBlocks) {
143
+ ...ContentBlockFragment
144
+ }
145
+ contentHtml @include(if: $includeHtml)
146
+ previewContentHtml @include(if: $includeHtml)
147
+ resources @include(if: $includeResources) {
148
+ id
149
+ url
150
+ type
151
+ contentLength
152
+ properties {
153
+ key
154
+ value
155
+ type
156
+ }
157
+ }
158
+ }
159
+
160
+ fragment ContentBlockFragment on ContentBlock {
161
+ id
162
+ type
163
+ parentId
164
+ children
165
+ sequence
166
+ html
167
+ level
168
+ properties {
169
+ key
170
+ value
171
+ type
172
+ }
173
+ }
174
+
175
+ fragment BundleFragment on Bundle {
176
+ bundleType
177
+ taxonomies {
178
+ ...TaxonomySummaryFragment
179
+ }
180
+ authors {
181
+ name
182
+ email
183
+ }
184
+ contents @include(if: $includeBundledContent) {
185
+ id
186
+ content {
187
+ ...ContentFragment
188
+ ...PostFragment
189
+ }
190
+ }
191
+ }
192
+
193
+ fragment TaxonomySummaryFragment on Taxonomy {
194
+ id
195
+ internalId
196
+ name
197
+ type
198
+ parentId
199
+ seoMetadata @include(if: $includeContentSeoMetadata) {
200
+ key
201
+ value
202
+ }
203
+ properties {
204
+ key
205
+ value
206
+ }
207
+ }`;
208
+
209
+ export const bottom = {
210
+ filter: {
211
+ id: {
212
+ value: "celine-bichay",
213
+ },
214
+ },
215
+ first: 1,
216
+ includeTaxonomySeoMetadata: false,
217
+ includeContents: false,
218
+ includeBundledContent: false,
219
+ includeResources: false,
220
+ includeBlocks: false,
221
+ includeHtml: false,
222
+ includeContentSeoMetadata: false,
223
+ appInfo: {
224
+ appId: "b745c9ad-2d2e-4515-92a0-d0a2baed181e",
225
+ appVersion: "1.0-SNAPSHOT",
226
+ preview: true,
227
+ },
228
+ deviceInfo: {
229
+ deviceId: "editor-preview",
230
+ deviceModel: "web",
231
+ locale: "de_DE",
232
+ smallestScreenWidthDp: 0,
233
+ deviceOs: "web",
234
+ platform: "WEB",
235
+ },
236
+ authorization: {
237
+ subscriptionCodes: [],
238
+ },
239
+ };
240
+
241
+ export const operationName = "CatalogTaxonomiesQuery";
@@ -6,6 +6,7 @@ import * as HandleApiCollections from "../HandleApiCollections/HandleApiCollecti
6
6
  import * as HandleApiDossier from "../HandleApiDossier/HandleApiDossier.js";
7
7
  import * as HandleDossiers from "../HandleApiDossiers/HandleApiDossiers.js";
8
8
  import * as HandleApiIndex from "../HandleApiIndex/HandleApiIndex.js";
9
+ import * as HandleApiAuthor from "../HandleApiAuthor/HandleApiAuthor.js";
9
10
  import * as HandleApiAppSettings from "../HandleApiAppSettings/HandleApiAppSettings.js";
10
11
  import * as HandleApiIssues from "../HandleApiIssues/HandleApiIssues.js";
11
12
  import * as HandleApiMenus from "../HandleApiMenus/HandleApiMenus.js";
@@ -32,6 +33,9 @@ export const handleApi = ({ appId, apiUrl, req }) => {
32
33
  if (req.url === "/authors") {
33
34
  return HandleApiAuthors.handleAuthors({ appId, apiUrl, req });
34
35
  }
36
+ if (req.url.startsWith("/authors/")) {
37
+ return HandleApiAuthor.handleAuthor({ appId, apiUrl, req });
38
+ }
35
39
  if (req.url.startsWith("/articles")) {
36
40
  return HandleApiArticle.handleApiArticle({ appId, apiUrl, req });
37
41
  }
@@ -0,0 +1,50 @@
1
+ import * as GraphQlQueryAuthor from "../GraphQlQueryAuthor/GraphQlQueryAuthor.js";
2
+
3
+ export const handleAuthor = async ({ appId, apiUrl, req }) => {
4
+ const firstPart = "/authors/";
5
+ const secondPart = req.url.slice(firstPart.length);
6
+ const realBottom = {
7
+ ...GraphQlQueryAuthor.bottom,
8
+ appInfo: {
9
+ ...GraphQlQueryAuthor.bottom.appInfo,
10
+ appId,
11
+ },
12
+ filter: {
13
+ id: {
14
+ value: secondPart,
15
+ },
16
+ },
17
+ };
18
+ const response = await fetch(apiUrl, {
19
+ method: "POST",
20
+ headers: {
21
+ Accept: "application/json",
22
+ "Content-Type": "application/json",
23
+ },
24
+ body: JSON.stringify({
25
+ operationName: GraphQlQueryAuthor.operationName,
26
+ query: GraphQlQueryAuthor.top,
27
+ variables: realBottom,
28
+ }),
29
+ });
30
+ const result = await response.json();
31
+ // @ts-ignore
32
+ if (result.errors) {
33
+ // @ts-ignore
34
+ throw new Error(result.errors[0].message);
35
+ }
36
+ // @ts-ignore
37
+ const realData = result.data.catalog.taxonomiesConnection.edges
38
+ .map((edge) => edge.node)
39
+ .map((node) => {
40
+ const { __typename, ...rest } = node;
41
+ return rest;
42
+ });
43
+ return {
44
+ status: 200,
45
+ headers: {
46
+ "content-type": "application/json",
47
+ },
48
+ body: JSON.stringify(realData, null, 2),
49
+ };
50
+ };