11package com.project200.data.api
22
33import com.project200.data.dto.BaseResponse
4+ import com.project200.data.dto.CommentDTO
5+ import com.project200.data.dto.CreateCommentRequestDTO
6+ import com.project200.data.dto.CreateCommentResponseDTO
7+ import com.project200.data.dto.CreateFeedRequestDTO
48import com.project200.data.dto.CustomTimerIdDTO
59import com.project200.data.dto.DeletePreferredExerciseDTO
610import com.project200.data.dto.EditExercisePlaceDTO
711import com.project200.data.dto.ExerciseIdDto
812import com.project200.data.dto.ExpectedScoreInfoDTO
13+ import com.project200.data.dto.FeedCreateResultDTO
14+ import com.project200.data.dto.FeedDTO
15+ import com.project200.data.dto.FeedPictureUploadDTO
916import com.project200.data.dto.GetBlockedMemberDTO
1017import com.project200.data.dto.GetChattingMessagesDTO
1118import com.project200.data.dto.GetChattingRoomsDTO
@@ -15,6 +22,7 @@ import com.project200.data.dto.GetExerciseCountByRangeDTO
1522import com.project200.data.dto.GetExercisePlaceDTO
1623import com.project200.data.dto.GetExerciseRecordData
1724import com.project200.data.dto.GetExerciseRecordListDto
25+ import com.project200.data.dto.GetFeedsDTO
1826import com.project200.data.dto.GetIsNicknameDuplicated
1927import com.project200.data.dto.GetIsRegisteredData
2028import com.project200.data.dto.GetMatchingMembersDto
@@ -27,6 +35,7 @@ import com.project200.data.dto.GetProfileDTO
2735import com.project200.data.dto.GetProfileImageResponseDto
2836import com.project200.data.dto.GetScoreDTO
2937import com.project200.data.dto.GetSimpleTimersDTO
38+ import com.project200.data.dto.LikeRequestDTO
3039import com.project200.data.dto.NotificationStateDTO
3140import com.project200.data.dto.PatchCustomTimerTitleRequest
3241import com.project200.data.dto.PatchExerciseRequestDto
@@ -46,6 +55,7 @@ import com.project200.data.dto.PostSignUpRequest
4655import com.project200.data.dto.PutProfileRequest
4756import com.project200.data.dto.SimpleTimerIdDTO
4857import com.project200.data.dto.SimpleTimerRequest
58+ import com.project200.data.dto.UpdateFeedRequestDTO
4959import com.project200.data.utils.AccessTokenApi
5060import com.project200.data.utils.AccessTokenWithFcmApi
5161import com.project200.data.utils.IdTokenApi
@@ -474,4 +484,94 @@ interface ApiService {
474484 @Header(" X-Fcm-Token" ) fcmToken : String ,
475485 @Body notiRequest : List <NotificationStateDTO >,
476486 ): BaseResponse <Unit ?>
487+
488+ /* * 피드 */
489+ @GET(" api/v1/feeds" )
490+ @AccessTokenApi
491+ suspend fun getFeeds (
492+ @Query(" prevFeedId" ) prevFeedId : Long? ,
493+ @Query(" size" ) size : Int? ,
494+ ): BaseResponse <GetFeedsDTO ?>
495+
496+ @GET(" api/v1/feeds/{feedId}" )
497+ @AccessTokenApi
498+ suspend fun getFeedDetail (
499+ @Path(" feedId" ) feedId : Long ,
500+ ): BaseResponse <FeedDTO >
501+
502+ @POST(" api/v1/feeds" )
503+ @AccessTokenApi
504+ suspend fun postFeed (
505+ @Body createFeedRequest : CreateFeedRequestDTO ,
506+ ): BaseResponse <FeedCreateResultDTO >
507+
508+ @DELETE(" api/v1/feeds/{feedId}" )
509+ @AccessTokenApi
510+ suspend fun deleteFeed (
511+ @Path(" feedId" ) feedId : Long ,
512+ ): BaseResponse <Unit ?>
513+
514+ @PATCH(" api/v1/feeds/{feedId}" )
515+ @AccessTokenApi
516+ suspend fun updateFeed (
517+ @Path(" feedId" ) feedId : Long ,
518+ @Body updateFeedRequest : UpdateFeedRequestDTO ,
519+ ): BaseResponse <Unit ?>
520+
521+ // 피드 좋아요
522+ @POST(" api/v1/feeds/{feedId}/like" )
523+ @AccessTokenApi
524+ suspend fun likeFeed (
525+ @Path(" feedId" ) feedId : Long ,
526+ @Body request : LikeRequestDTO ,
527+ ): BaseResponse <Unit ?>
528+
529+ /* * 댓글 */
530+ // 댓글 목록 조회
531+ @GET(" api/v1/feeds/{feedId}/comments" )
532+ @AccessTokenApi
533+ suspend fun getComments (
534+ @Path(" feedId" ) feedId : Long ,
535+ ): BaseResponse <List <CommentDTO >>
536+
537+ // 댓글 작성
538+ @POST(" api/v1/feeds/{feedId}/comments" )
539+ @AccessTokenApi
540+ suspend fun createComment (
541+ @Path(" feedId" ) feedId : Long ,
542+ @Body request : CreateCommentRequestDTO ,
543+ ): BaseResponse <CreateCommentResponseDTO >
544+
545+ // 댓글 좋아요
546+ @POST(" api/v1/comments/{commentId}/like" )
547+ @AccessTokenApi
548+ suspend fun likeComment (
549+ @Path(" commentId" ) commentId : Long ,
550+ @Body request : LikeRequestDTO ,
551+ ): BaseResponse <Unit ?>
552+
553+ // 댓글 삭제
554+ @DELETE(" api/v1/comments/{commentId}" )
555+ @AccessTokenApi
556+ suspend fun deleteComment (
557+ @Path(" commentId" ) commentId : Long ,
558+ ): BaseResponse <Unit ?>
559+
560+ /* * 피드 이미지 */
561+ // 피드 이미지 업로드
562+ @Multipart
563+ @POST(" api/v1/feeds/{feedId}/pictures" )
564+ @AccessTokenApi
565+ suspend fun postFeedImages (
566+ @Path(" feedId" ) feedId : Long ,
567+ @Part pictures : List <MultipartBody .Part >,
568+ ): BaseResponse <List <FeedPictureUploadDTO >>
569+
570+ // 피드 이미지 삭제
571+ @DELETE(" api/v1/feeds/{feedId}/pictures/{pictureId}" )
572+ @AccessTokenApi
573+ suspend fun deleteFeedImage (
574+ @Path(" feedId" ) feedId : Long ,
575+ @Path(" pictureId" ) pictureId : Long ,
576+ ): BaseResponse <Unit ?>
477577}
0 commit comments