package com.adealink.weparty.profile.datasource.remote

import com.adealink.frame.base.Rlt
import com.adealink.frame.network.data.Res
import com.adealink.weparty.module.profile.data.MyUserInfoData
import com.adealink.weparty.profile.data.GetUserInfosRes
import com.adealink.weparty.profile.data.GetUserLiveRoomReq
import com.adealink.weparty.profile.data.GetUserLiveRoomRes
import com.adealink.weparty.profile.data.GetUserNoteReq
import com.adealink.weparty.profile.data.GetUserNoteRes
import com.adealink.weparty.profile.data.GetUserinfoReq
import com.adealink.weparty.profile.data.PlaymateCharmStarReq
import com.adealink.weparty.profile.data.SetUserNoteReq
import com.adealink.weparty.profile.data.UpdateMyUserInfoReq
import com.adealink.weparty.profile.data.UserOnlineReq
import com.adealink.weparty.profile.data.UserOnlineRes
import com.adealink.weparty.profile.data.UserVoiceApplyReq
import retrofit2.http.Body
import retrofit2.http.Core
import retrofit2.http.POST

interface ProfileHttpService {

    @Core
    @POST("user/my/info")
    suspend fun getMyUserInfo(): Rlt<Res<MyUserInfoData>>

    @POST("user/my/info/edit")
    suspend fun updateUserInfo(
        @Body req: UpdateMyUserInfoReq
    ): Rlt<Res<Any>>

    @Core
    @POST("user/get/infos")
    suspend fun getUserInfosByUid(
        @Body req: GetUserinfoReq
    ): Rlt<Res<GetUserInfosRes>>


    @POST("user/playmate/charmStar")
    suspend fun playmateCharmStar(
        @Body req: PlaymateCharmStarReq
    ): Rlt<Res<Any>>


    @POST("user/getUsersOnlineState")
    suspend fun isUserOnline(
        @Body req: UserOnlineReq
    ): Rlt<Res<UserOnlineRes>>

    @POST("user/my/voiceBarApply")
    suspend fun userVoiceApply(
        @Body req: UserVoiceApplyReq
    ): Rlt<Res<Any>>

    @POST("user/clean/myVoiceBar")
    suspend fun clearUserVoice(): Rlt<Res<Any>>

    @POST("im/set/usernameNote")
    suspend fun setUserNote(@Body req: SetUserNoteReq): Rlt<Res<Any>>

    @POST("im/get/usernameNotes")
    suspend fun getUserNoteBy(@Body req: GetUserNoteReq): Rlt<Res<GetUserNoteRes>>

    @POST("live/view/watching")
    suspend fun getLiveRoomInfo(@Body req: GetUserLiveRoomReq): Rlt<Res<GetUserLiveRoomRes>>
}