Skip to content

Commit 6685849

Browse files
committed
Add feeds-api
1 parent 1c3da35 commit 6685849

File tree

18 files changed

+3678
-561
lines changed

18 files changed

+3678
-561
lines changed

generate-openapi.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/bin/bash
22
set -euo pipefail
33

4-
OUTPUT_DIR="../stream-node/src/gen"
4+
OUTPUT_DIR="../stream-node/src/gen-feeds"
55
CHAT_DIR="../chat"
66

77
rm -rf $OUTPUT_DIR
88

9-
( cd $CHAT_DIR ; make openapi ; go run ./cmd/chat-manager openapi generate-client --language ts --spec ./releases/v2/serverside-api.yaml --output $OUTPUT_DIR )
9+
( cd $CHAT_DIR ; make openapi ; go run ./cmd/chat-manager openapi generate-client --language ts --spec ./releases/v2/feeds-serverside-api.yaml --output $OUTPUT_DIR )
1010

1111
yarn lint:gen

index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
export * from './src/gen/models';
21
export * from './src/StreamClient';
32
export * from './src/StreamCall';
43
export * from './src/StreamChatClient';
54
export * from './src/StreamChannel';
65
export * from './src/StreamVideoClient';
6+
export * from './src/gen-feeds/models';
7+
export * from './src/gen/models';

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"lint": "eslint **/*.ts",
3030
"lint:fix": "eslint --fix **/*.ts",
3131
"prettier:fix": "prettier . --write",
32-
"lint:gen": "eslint --fix src/gen/**/*ts && prettier src/gen/**/*.ts --write"
32+
"lint:gen": "eslint --fix src/gen-feeds/**/*ts && prettier src/gen-feeds/**/*.ts --write"
3333
},
3434
"lint-staged": {
3535
"**/*": [

src/ApiClient.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { v4 as uuidv4 } from 'uuid';
22
import { ApiConfig, RequestMetadata, StreamError } from './types';
3-
import { APIError } from './gen/models';
3+
import { APIError } from './gen-feeds/models';
44
import { getRateLimitFromResponseHeader } from './utils/rate-limit';
55

66
export class ApiClient {

src/StreamClient.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import { StreamVideoClient } from './StreamVideoClient';
44
import crypto from 'crypto';
55
import { StreamChatClient } from './StreamChatClient';
66
import { CallTokenPayload, UserTokenPayload } from './types';
7-
import { QueryBannedUsersPayload, UserRequest } from './gen/models';
7+
import { QueryBannedUsersPayload } from './gen/models';
88
import { StreamModerationClient } from './StreamModerationClient';
99
import { ApiClient } from './ApiClient';
10+
import { UserRequest } from './gen-feeds/models';
11+
import { StreamFeedsClient } from './StreamFeedsClient';
1012

1113
export interface StreamClientOptions {
1214
timeout?: number;
@@ -20,6 +22,7 @@ export class StreamClient extends CommonApi {
2022
public readonly video: StreamVideoClient;
2123
public readonly chat: StreamChatClient;
2224
public readonly moderation: StreamModerationClient;
25+
public readonly feeds: StreamFeedsClient;
2326
public readonly options: StreamClientOptions = {};
2427

2528
private static readonly DEFAULT_TIMEOUT = 3000;
@@ -39,6 +42,7 @@ export class StreamClient extends CommonApi {
3942
const timeout = config?.timeout ?? StreamClient.DEFAULT_TIMEOUT;
4043
const chatBaseUrl = config?.basePath ?? 'https://chat.stream-io-api.com';
4144
const videoBaseUrl = config?.basePath ?? 'https://video.stream-io-api.com';
45+
const feedsBaseUrl = config?.basePath ?? 'https://feeds.stream-io-api.com';
4246
const chatApiClient = new ApiClient({
4347
apiKey,
4448
token,
@@ -55,6 +59,14 @@ export class StreamClient extends CommonApi {
5559
agent: config?.agent as RequestInit['dispatcher'],
5660
});
5761

62+
const feedsApiClient = new ApiClient({
63+
apiKey,
64+
token,
65+
baseUrl: feedsBaseUrl,
66+
timeout,
67+
agent: config?.agent as RequestInit['dispatcher'],
68+
});
69+
5870
super(chatApiClient);
5971

6072
this.video = new StreamVideoClient({
@@ -63,6 +75,7 @@ export class StreamClient extends CommonApi {
6375
});
6476
this.chat = new StreamChatClient(this.apiClient);
6577
this.moderation = new StreamModerationClient(chatApiClient);
78+
this.feeds = new StreamFeedsClient(feedsApiClient);
6679
}
6780

6881
upsertUsers = (users: UserRequest[]) => {

src/StreamFeed.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { FeedApi } from './gen-feeds/feeds/FeedApi';
2+
3+
export class StreamFeed extends FeedApi {}

src/StreamFeedsClient.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { FeedsApi } from './gen-feeds/feeds/FeedsApi';
2+
import { StreamFeed } from './StreamFeed';
3+
4+
export class StreamFeedsClient extends FeedsApi {
5+
feed = (group: string, id: string) => {
6+
return new StreamFeed(this, group, id);
7+
};
8+
}

src/gen-feeds/feeds/FeedApi.ts

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
import { StreamResponse, FeedsApi } from '../../gen-imports';
2+
import {
3+
AcceptFeedMemberRequest,
4+
AcceptFeedMemberResponse,
5+
DeleteFeedResponse,
6+
GetOrCreateFeedRequest,
7+
GetOrCreateFeedResponse,
8+
MarkActivityRequest,
9+
PinActivityRequest,
10+
PinActivityResponse,
11+
QueryFeedMembersRequest,
12+
QueryFeedMembersResponse,
13+
RejectFeedMemberRequest,
14+
RejectFeedMemberResponse,
15+
Response,
16+
UnpinActivityResponse,
17+
UpdateFeedMembersRequest,
18+
UpdateFeedRequest,
19+
UpdateFeedResponse,
20+
} from '../models';
21+
22+
export class FeedApi {
23+
constructor(
24+
protected feedsApi: FeedsApi,
25+
public readonly group: string,
26+
public readonly id: string,
27+
) {}
28+
29+
delete(request?: {
30+
hard_delete?: boolean;
31+
}): Promise<StreamResponse<DeleteFeedResponse>> {
32+
return this.feedsApi.deleteFeed({
33+
feed_id: this.id,
34+
feed_group_id: this.group,
35+
...request,
36+
});
37+
}
38+
39+
update(
40+
request?: UpdateFeedRequest,
41+
): Promise<StreamResponse<UpdateFeedResponse>> {
42+
return this.feedsApi.updateFeed({
43+
feed_id: this.id,
44+
feed_group_id: this.group,
45+
...request,
46+
});
47+
}
48+
49+
getOrCreate(
50+
request?: GetOrCreateFeedRequest,
51+
): Promise<StreamResponse<GetOrCreateFeedResponse>> {
52+
return this.feedsApi.getOrCreateFeed({
53+
feed_id: this.id,
54+
feed_group_id: this.group,
55+
...request,
56+
});
57+
}
58+
59+
markActivity(
60+
request?: MarkActivityRequest,
61+
): Promise<StreamResponse<Response>> {
62+
return this.feedsApi.markActivity({
63+
feed_id: this.id,
64+
feed_group_id: this.group,
65+
...request,
66+
});
67+
}
68+
69+
unpinActivity(request: {
70+
activity_id: string;
71+
}): Promise<StreamResponse<UnpinActivityResponse>> {
72+
return this.feedsApi.unpinActivity({
73+
feed_id: this.id,
74+
feed_group_id: this.group,
75+
...request,
76+
});
77+
}
78+
79+
pinActivity(
80+
request: PinActivityRequest & { activity_id: string },
81+
): Promise<StreamResponse<PinActivityResponse>> {
82+
return this.feedsApi.pinActivity({
83+
feed_id: this.id,
84+
feed_group_id: this.group,
85+
...request,
86+
});
87+
}
88+
89+
updateFeedMembers(
90+
request: UpdateFeedMembersRequest,
91+
): Promise<StreamResponse<Response>> {
92+
return this.feedsApi.updateFeedMembers({
93+
feed_id: this.id,
94+
feed_group_id: this.group,
95+
...request,
96+
});
97+
}
98+
99+
acceptFeedMember(
100+
request: AcceptFeedMemberRequest,
101+
): Promise<StreamResponse<AcceptFeedMemberResponse>> {
102+
return this.feedsApi.acceptFeedMember({
103+
feed_id: this.id,
104+
feed_group_id: this.group,
105+
...request,
106+
});
107+
}
108+
109+
queryFeedMembers(
110+
request?: QueryFeedMembersRequest,
111+
): Promise<StreamResponse<QueryFeedMembersResponse>> {
112+
return this.feedsApi.queryFeedMembers({
113+
feed_id: this.id,
114+
feed_group_id: this.group,
115+
...request,
116+
});
117+
}
118+
119+
rejectFeedMember(
120+
request: RejectFeedMemberRequest,
121+
): Promise<StreamResponse<RejectFeedMemberResponse>> {
122+
return this.feedsApi.rejectFeedMember({
123+
feed_id: this.id,
124+
feed_group_id: this.group,
125+
...request,
126+
});
127+
}
128+
}

0 commit comments

Comments
 (0)