@streamscloud/streams-api-client 1.0.0

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.
@@ -0,0 +1,152 @@
1
+ query SitePosts($cursor: CursorOfSitePostsOrderByInput!, $filter: SitePostsFilterInput!) {
2
+ sitePosts(cursor: $cursor, filter: $filter) {
3
+ items {
4
+ ...PostItemFragment
5
+ }
6
+ }
7
+ }
8
+
9
+ fragment PostItemFragment on Post {
10
+ id
11
+ postType
12
+ postData {
13
+ media {
14
+ ...ContentMediaItemPayloadFragment
15
+ ...ContentMediaItemTagsPayloadFragment
16
+ }
17
+ audioData {
18
+ text
19
+ }
20
+ eventData {
21
+ title
22
+ text
23
+ location {
24
+ latitude
25
+ longitude
26
+ name
27
+ }
28
+ startDateTime
29
+ endDateTime
30
+ }
31
+ mediaData {
32
+ text
33
+ }
34
+ momentData {
35
+ text
36
+ }
37
+ linkData {
38
+ text
39
+ linkData {
40
+ ...LinkViewPayloadFragment
41
+ }
42
+ }
43
+ shortVideoData {
44
+ text
45
+ }
46
+ articleData {
47
+ title
48
+ kicker
49
+ article {
50
+ slug
51
+ }
52
+ }
53
+ textData {
54
+ text
55
+ }
56
+ videoData {
57
+ title
58
+ text
59
+ }
60
+ }
61
+ postHeading {
62
+ ...PostHeadingPayloadFragment
63
+ }
64
+ }
65
+
66
+ fragment ContentMediaItemPayloadFragment on ContentMediaItem {
67
+ url(scale: ORIGINAL_ENCODED)
68
+ thumbnailUrl(scale: ORIGINAL_ENCODED)
69
+ type
70
+ metadata {
71
+ ...MediaItemMetadataPayloadFragment
72
+ }
73
+ }
74
+
75
+ fragment MediaItemMetadataPayloadFragment on MediaItemMetadata {
76
+ fileName
77
+ width
78
+ height
79
+ durationSec
80
+ }
81
+
82
+ fragment ContentMediaItemTagsPayloadFragment on ContentMediaItem {
83
+ productTags {
84
+ ...ProductTagPositionPayloadFragment
85
+ }
86
+ userTags {
87
+ ...UserTagPositionPayloadFragment
88
+ }
89
+ mediaPageTags {
90
+ ...MediaPageTagPositionPayloadFragment
91
+ }
92
+ }
93
+
94
+ fragment ProductTagPositionPayloadFragment on ProductTagPosition {
95
+ itemId
96
+ leftPCT
97
+ topPCT
98
+ product {
99
+ id
100
+ name
101
+ image
102
+ price
103
+ currency
104
+ }
105
+ }
106
+
107
+ fragment UserTagPositionPayloadFragment on UserTagPosition {
108
+ itemId
109
+ leftPCT
110
+ topPCT
111
+ user {
112
+ id
113
+ name
114
+ image
115
+ username
116
+ }
117
+ }
118
+
119
+ fragment MediaPageTagPositionPayloadFragment on MediaPageTagPosition {
120
+ itemId
121
+ leftPCT
122
+ topPCT
123
+ mediaPage {
124
+ id
125
+ name
126
+ image
127
+ handle
128
+ }
129
+ }
130
+
131
+ fragment LinkViewPayloadFragment on LinkData {
132
+ hideImage
133
+ host
134
+ text
135
+ title
136
+ url
137
+ media {
138
+ url
139
+ thumbnailUrl
140
+ type
141
+ }
142
+ }
143
+
144
+ fragment PostHeadingPayloadFragment on PostHeading {
145
+ sourceId
146
+ sourceName
147
+ sourceImage
148
+ sourceHandle
149
+ sourceType
150
+ postDisplayDate
151
+ postViewsCount
152
+ }
@@ -0,0 +1,5 @@
1
+ export type StreamsApiClientModel = {
2
+ streamsGqlEndpoint: string;
3
+ organizationId: string;
4
+ siteId: string;
5
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=streams-api-client-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams-api-client-model.js","sourceRoot":"","sources":["../src/streams-api-client-model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { AdCampaign, Article, ContentList, Post } from './types';
2
+ export declare class StreamsContentApiClient {
3
+ private readonly gqlEndpoint;
4
+ private readonly organizationId;
5
+ private readonly siteId;
6
+ private readonly postStatus;
7
+ constructor(gqlEndpoint: string, organizationId: string, siteId: string);
8
+ getArticle(slug: string): Promise<Article | null>;
9
+ getPost(id: string): Promise<Post | undefined>;
10
+ getPosts(ids: string[] | null, types?: string[] | null, contentListId?: string | null): Promise<Post[] | undefined>;
11
+ getContentLists(): Promise<ContentList[] | undefined>;
12
+ getAdCampaigns(page: number, perPage: number): Promise<AdCampaign[] | undefined>;
13
+ private queryGql;
14
+ }
@@ -0,0 +1,87 @@
1
+ import SiteActiveCampaignsQuery from './adcampaignsquery.graphql';
2
+ import SiteArticleQuery from './articlequery.graphql';
3
+ import SiteContentListsQuery from './contentlistsquery.graphql';
4
+ import SitePostsQuery from './postsquery.graphql';
5
+ import { SiteAdCampaignsOrderBy, SiteContentListsOrderBy, SitePostsOrderBy } from './types';
6
+ export class StreamsContentApiClient {
7
+ gqlEndpoint = '{{streamsGqlEndpoint}}';
8
+ organizationId = '{{organizationId}}';
9
+ siteId = '{{siteId}}';
10
+ postStatus = 'PUBLISHED';
11
+ constructor(gqlEndpoint, organizationId, siteId) {
12
+ this.gqlEndpoint = gqlEndpoint;
13
+ this.organizationId = organizationId;
14
+ this.siteId = siteId;
15
+ }
16
+ async getArticle(slug) {
17
+ const response = await this.queryGql(SiteArticleQuery, { organizationId: this.organizationId, slug });
18
+ return response.siteArticle;
19
+ }
20
+ async getPost(id) {
21
+ const response = await this.getPosts([id]);
22
+ return response?.pop();
23
+ }
24
+ async getPosts(ids, types = null, contentListId = null) {
25
+ const response = await this.queryGql(SitePostsQuery, {
26
+ cursor: {
27
+ sorting: {
28
+ orderBy: SitePostsOrderBy.Published
29
+ }
30
+ },
31
+ filter: {
32
+ ids: ids,
33
+ organizationId: this.organizationId,
34
+ postTypes: types,
35
+ statuses: [this.postStatus],
36
+ contentListId: contentListId
37
+ }
38
+ });
39
+ return response.sitePosts?.items;
40
+ }
41
+ async getContentLists() {
42
+ const response = await this.queryGql(SiteContentListsQuery, {
43
+ cursor: {
44
+ sorting: {
45
+ orderBy: SiteContentListsOrderBy.Name
46
+ }
47
+ },
48
+ filter: {
49
+ organizationId: this.organizationId
50
+ }
51
+ });
52
+ return response.siteContentLists?.items;
53
+ }
54
+ async getAdCampaigns(page, perPage) {
55
+ const response = await this.queryGql(SiteActiveCampaignsQuery, {
56
+ pageQuery: {
57
+ orderBy: SiteAdCampaignsOrderBy.Modified,
58
+ fetchTotal: false,
59
+ page: page,
60
+ perPage: perPage
61
+ },
62
+ filter: {
63
+ organizationId: this.organizationId,
64
+ siteId: this.siteId
65
+ }
66
+ });
67
+ return response.siteActiveCampaigns?.items;
68
+ }
69
+ queryGql = async (query, variables) => {
70
+ const response = await fetch(this.gqlEndpoint, {
71
+ method: 'POST',
72
+ headers: {
73
+ 'Content-Type': 'application/json'
74
+ },
75
+ body: JSON.stringify({
76
+ query,
77
+ variables
78
+ })
79
+ });
80
+ const gql = await response.json();
81
+ if (!gql.data) {
82
+ throw new Error(JSON.stringify(gql.errors));
83
+ }
84
+ return gql.data;
85
+ };
86
+ }
87
+ //# sourceMappingURL=streams-content-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams-content-api-client.js","sourceRoot":"","sources":["../src/streams-content-api-client.ts"],"names":[],"mappings":"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"}