Skip to content

Commit

Permalink
adds support for the Remote Files API
Browse files Browse the repository at this point in the history
  • Loading branch information
seratch authored and aoberoi committed Jul 26, 2019
1 parent bf4f18d commit 135b0b9
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
8 changes: 7 additions & 1 deletion packages/types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export interface Datepicker extends Action {
* Block Types
*/

export type KnownBlock = ImageBlock | ContextBlock | ActionsBlock | DividerBlock | SectionBlock;
export type KnownBlock = ImageBlock | ContextBlock | ActionsBlock | DividerBlock | SectionBlock | FileBlock;

export interface Block {
type: string;
Expand Down Expand Up @@ -180,6 +180,12 @@ export interface SectionBlock extends Block {
accessory?: KnownAction | Action | ImageElement;
}

export interface FileBlock extends Block {
type: 'file';
source: string; // 'remote'
external_id: string;
}

export interface MessageAttachment {
blocks?: (KnownBlock | Block)[];
fallback?: string; // either this or text must be defined
Expand Down
8 changes: 8 additions & 0 deletions packages/web-api/src/WebClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,14 @@ export class WebClient extends EventEmitter<WebClientEvent> {
comments: {
delete: (this.apiCall.bind(this, 'files.comments.delete')) as Method<methods.FilesCommentsDeleteArguments>,
},
remote: {
info: (this.apiCall.bind(this, 'files.remote.info')) as Method<methods.FilesRemoteInfoArguments>,
list: (this.apiCall.bind(this, 'files.remote.list')) as Method<methods.FilesRemoteListArguments>,
add: (this.apiCall.bind(this, 'files.remote.add')) as Method<methods.FilesRemoteAddArguments>,
update: (this.apiCall.bind(this, 'files.remote.update')) as Method<methods.FilesRemoteUpdateArguments>,
remove: (this.apiCall.bind(this, 'files.remote.remove')) as Method<methods.FilesRemoteRemoveArguments>,
share: (this.apiCall.bind(this, 'files.remote.share')) as Method<methods.FilesRemoteShareArguments>,
},
};

/**
Expand Down
49 changes: 49 additions & 0 deletions packages/web-api/src/methods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,55 @@ export interface FilesCommentsDeleteArguments extends WebAPICallOptions, TokenOv
id: string; // comment id
}

// either file or external_id is required
interface FilesRemoteInfoCommonArguments extends WebAPICallOptions, TokenOverridable { channel?: string; }
type FilesRemoteInfoArgumentsFileRequired = FilesRemoteInfoCommonArguments & { file: string };
type FilesRemoteInfoArgumentsExternalIdRequired = FilesRemoteInfoCommonArguments & { external_id: string };
export type FilesRemoteInfoArguments = FilesRemoteInfoArgumentsFileRequired | FilesRemoteInfoArgumentsExternalIdRequired;

export interface FilesRemoteListArguments extends WebAPICallOptions, TokenOverridable {
ts_from?: string;
ts_to?: string;
count?: number;
page?: number;
channel?: string;
types?: string;
}

export interface FilesRemoteAddArguments extends WebAPICallOptions, TokenOverridable {
title: string;
external_url: string;
external_id: string; // a unique identifier for the file in your system
filetype: string; // possible values (except for 'auto'): https://api.slack.com/types/file#file_types
preview_image?: Buffer | Stream;
preview_file?: Buffer | Stream;
indexable_file_contents?: Buffer| Stream;
}

interface FilesRemoteUpdateCommonArguments extends WebAPICallOptions, TokenOverridable {
title: string;
external_url: string;
filetype: string; // possible values (except for 'auto'): https://api.slack.com/types/file#file_types
preview_image?: Buffer | Stream;
preview_file?: Buffer | Stream;
indexable_file_contents?: Buffer| Stream;
}
type FilesRemoteUpdateArgumentsFileRequired = FilesRemoteUpdateCommonArguments & { file: string };
type FilesRemoteUpdateArgumentsExternalIdRequired = FilesRemoteUpdateCommonArguments & { external_id: string };
export type FilesRemoteUpdateArguments = FilesRemoteUpdateArgumentsFileRequired | FilesRemoteUpdateArgumentsExternalIdRequired;

interface FilesRemoteRemoveCommonArguments extends WebAPICallOptions, TokenOverridable {}
type FilesRemoteRemoveArgumentsFileRequired = FilesRemoteRemoveCommonArguments & { file: string };
type FilesRemoteRemoveArgumentsExternalIdRequired = FilesRemoteRemoveCommonArguments & { external_id: string };
export type FilesRemoteRemoveArguments = FilesRemoteRemoveArgumentsFileRequired | FilesRemoteRemoveArgumentsExternalIdRequired;

interface FilesRemoteShareCommonArguments extends WebAPICallOptions, TokenOverridable {
channels: string; // comma-separated list of channel ids
}
type FilesRemoteShareArgumentsFileRequired = FilesRemoteShareCommonArguments & { file: string };
type FilesRemoteShareArgumentsExternalIdRequired = FilesRemoteShareCommonArguments & { external_id: string };
export type FilesRemoteShareArguments = FilesRemoteShareArgumentsFileRequired | FilesRemoteShareArgumentsExternalIdRequired;

/*
* `groups.*`
*/
Expand Down

0 comments on commit 135b0b9

Please sign in to comment.