File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package kr.itn.itnhub.mattermost;
import kr.itn.itnhub.feed.FileRef;
import kr.itn.itnhub.feed.FileView;
import kr.itn.itnhub.feed.PostView;
import java.util.List;
import java.util.Optional;
public interface MattermostClient {
Optional<String> findChannelIdByInternalName(String internalName);
Optional<String> findChannelIdByDisplayName(String displayName);
String createPrivateChannel(String internalName, String displayName);
/** 채널의 최근 게시글 한 페이지를 오래된순(화면 표시 순서)으로 돌려준다. */
List<PostView> getRecentPosts(String channelId, int perPage);
/** 채널 전체를 페이지네이션하며 첨부파일을 전부 모아 최신순으로 돌려준다. */
List<FileView> collectChannelFiles(String channelId);
byte[] downloadFile(String fileId);
FileRef fileInfo(String fileId);
/** 파일을 채널에 업로드하고 file id를 돌려준다. 아직 어떤 게시글에도 첨부되지 않은 상태다. */
String uploadFile(String channelId, String filename, byte[] data, String contentType);
/** 채널에 게시글을 올리고 post id를 돌려준다. {@code fileIds}는 비어 있어도 된다. */
String createPost(String channelId, String message, List<String> fileIds);
void pinPost(String postId);
void unpinPost(String postId);
/** 채널의 고정된 게시글을 최신순으로 돌려준다. */
List<PostView> getPinnedPosts(String channelId);
void updateChannelHeader(String channelId, String header);
/** 이메일로 사용자를 찾는다. 없으면 빈 값이다. */
Optional<String> findUserIdByEmail(String email);
/** 사용자를 새로 만들고 user id를 돌려준다. */
String createUser(String email, String username, String password);
/** 사용자를 (설정된) 팀에 추가한다. 채널 추가 전에 반드시 선행되어야 한다. */
void addUserToTeam(String userId);
/** 사용자를 채널에 추가한다. 이미 멤버여도 안전하다(idempotent). */
void addUserToChannel(String channelId, String userId);
/**
* 채널을 보관 처리한다. Mattermost의 {@code DELETE /channels/{id}}는 삭제가 아니라
* 아카이브라서 게시글·파일이 남고 시스템 콘솔에서 되돌릴 수 있다.
*
* <p>영구 삭제({@code ?permanent=true})는 일부러 쓰지 않는다. 운영 서버의
* {@code ServiceSettings.EnableAPIChannelDeletion}이 꺼져 있어 어차피 거부되고,
* 켜더라도 복구가 불가능하기 때문이다.</p>
*/
void archiveChannel(String channelId);
}