diff --git a/src/core/client.ts b/src/core/client.ts index 7f528b0ce..948611270 100644 --- a/src/core/client.ts +++ b/src/core/client.ts @@ -38,6 +38,7 @@ import { RestrictActionRepository } from '../repositories/restrict-action.reposi import { AddressBookRepository } from '../repositories/address-book.repository'; import { StatusRepository } from '../repositories/status.repository'; import { IgtvRepository } from '../repositories/igtv.repository'; +import { ArchiveRepository } from '../repositories/archive.repository'; export class IgApiClient { public state = new State(); @@ -76,6 +77,7 @@ export class IgApiClient { public addressBook = new AddressBookRepository(this); public status = new StatusRepository(this); public igtv = new IgtvRepository(this); + public archive = new ArchiveRepository(this); /* Services */ public publish = new PublishService(this); public search = new SearchService(this); diff --git a/src/repositories/archive.repository.ts b/src/repositories/archive.repository.ts new file mode 100644 index 000000000..41098966e --- /dev/null +++ b/src/repositories/archive.repository.ts @@ -0,0 +1,16 @@ +import { Repository } from '../core/repository'; +import {ArchiveRepositoryLivesResponseRootObject} from '../responses'; + +export class ArchiveRepository extends Repository { + public async lives(): Promise { + const { body } = await this.client.request.send({ + url: '/api/v1/archive/live/lives_archived/', + method: 'GET', + headers: { + 'User-Agent': `Instagram 172.0.0.21.123 Android (${this.client.state.deviceString}; ${this.client.state.language}; 269790810)` + } + }); + + return body; + } +} diff --git a/src/responses/archive.repository.lives.response.ts b/src/responses/archive.repository.lives.response.ts new file mode 100644 index 000000000..e3a3b34c3 --- /dev/null +++ b/src/responses/archive.repository.lives.response.ts @@ -0,0 +1,58 @@ +export interface ArchiveRepositoryLivesResponseRootObject { + items: ArchiveRepositoryLivesResponseResultsItem[]; + count: number; + status: string; +} +export interface ArchiveRepositoryLivesResponseResultsItem { + pk: string; + user: ArchiveRepositoryLivesResponseUsersItem; + broadcast: ArchiveRepositoryLivesResponseBroadcastsItem; + last_seen_broadcast_ts: number; + can_reply: boolean; + can_reshare: boolean; + can_share_to_igtv: boolean; +} + +export class ArchiveRepositoryLivesResponseUsersItem { + pk: number; + username: string; + full_name: string; + is_private: boolean; + profile_pic_url: string; + is_verified: boolean; +} + +export class ArchiveRepositoryLivesResponseBroadcastsItem { + id: number; + broadcast_status: string; + broadcast_owner: ArchiveRepositoryLivesResponseBroadcastOwnersItem; + published_time: number; + video_duration: number; + media_id: string; + broadcast_message: string; + internal_only: boolean; + cover_frame_url: string; + progressive_playback_url: string; +} + +export class ArchiveRepositoryLivesResponseBroadcastOwnersItem { + pk: number; + username: string; + full_name: string; + is_private: boolean; + profile_pic_url: string; + friendship_status: ArchiveRepositoryLivesResponseBroadcastOwnerFriendshipStatusesItem; + is_verified: boolean; +} + +export class ArchiveRepositoryLivesResponseBroadcastOwnerFriendshipStatusesItem { + following: boolean; + followed_by: boolean; + blocking: boolean; + muting: boolean; + is_private: boolean; + incoming_request: boolean; + outgoing_request: boolean; + is_bestie: boolean; + is_restricted: boolean; +} \ No newline at end of file diff --git a/src/responses/index.ts b/src/responses/index.ts index 1b43b076b..658dcf0b7 100644 --- a/src/responses/index.ts +++ b/src/responses/index.ts @@ -101,3 +101,4 @@ export * from './igtv.channel.feed.response'; export * from './igtv.search.response'; export * from './liked.feed.response'; export * from './topical-explore.feed.response'; +export * from './archive.repository.lives.response';