Browse Source

feat: add my privacy & my groups API

pull/3/head
Aldino Kemal 4 years ago
parent
commit
1a902de401
  1. 25
      controllers/user_controller.go
  2. 2
      services/user_service.go
  3. 27
      services/user_service_impl.go
  4. 13
      structs/send_struct.go

25
controllers/user_controller.go

@ -19,6 +19,8 @@ func NewUserController(service services.UserService) UserController {
func (controller *UserController) Route(app *fiber.App) { func (controller *UserController) Route(app *fiber.App) {
app.Get("/user/info", controller.UserInfo) app.Get("/user/info", controller.UserInfo)
app.Get("/user/avatar", controller.UserAvatar) app.Get("/user/avatar", controller.UserAvatar)
app.Get("/user/my/privacy", controller.UserMyPrivacySetting)
app.Get("/user/my/groups", controller.UserMyListGroups)
} }
func (controller *UserController) UserInfo(c *fiber.Ctx) error { func (controller *UserController) UserInfo(c *fiber.Ctx) error {
@ -39,6 +41,7 @@ func (controller *UserController) UserInfo(c *fiber.Ctx) error {
Results: response, Results: response,
}) })
} }
func (controller *UserController) UserAvatar(c *fiber.Ctx) error { func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
var request structs.UserAvatarRequest var request structs.UserAvatarRequest
err := c.QueryParser(&request) err := c.QueryParser(&request)
@ -57,3 +60,25 @@ func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
Results: response, Results: response,
}) })
} }
func (controller *UserController) UserMyPrivacySetting(c *fiber.Ctx) error {
response, err := controller.Service.UserMyPrivacySetting(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success",
Results: response,
})
}
func (controller *UserController) UserMyListGroups(c *fiber.Ctx) error {
response, err := controller.Service.UserMyListGroups(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success",
Results: response,
})
}

2
services/user_service.go

@ -8,4 +8,6 @@ import (
type UserService interface { type UserService interface {
UserInfo(c *fiber.Ctx, request structs.UserInfoRequest) (response structs.UserInfoResponse, err error) UserInfo(c *fiber.Ctx, request structs.UserInfoRequest) (response structs.UserInfoResponse, err error)
UserAvatar(c *fiber.Ctx, request structs.UserAvatarRequest) (response structs.UserAvatarResponse, err error) UserAvatar(c *fiber.Ctx, request structs.UserAvatarRequest) (response structs.UserAvatarResponse, err error)
UserMyListGroups(c *fiber.Ctx) (response structs.UserMyListGroupsResponse, err error)
UserMyPrivacySetting(c *fiber.Ctx) (response structs.UserMyPrivacySettingResponse, err error)
} }

27
services/user_service_impl.go

@ -83,3 +83,30 @@ func (service UserServiceImpl) UserAvatar(_ *fiber.Ctx, request structs.UserAvat
return response, nil return response, nil
} }
} }
func (service UserServiceImpl) UserMyListGroups(_ *fiber.Ctx) (response structs.UserMyListGroupsResponse, err error) {
groups, err := service.WaCli.GetJoinedGroups()
if err != nil {
return
}
fmt.Printf("%+v\n", groups)
if groups != nil {
for _, group := range groups {
response.Data = append(response.Data, *group)
}
}
return response, nil
}
func (service UserServiceImpl) UserMyPrivacySetting(_ *fiber.Ctx) (response structs.UserMyPrivacySettingResponse, err error) {
resp, err := service.WaCli.TryFetchPrivacySettings(false)
if err != nil {
return
}
response.GroupAdd = string(resp.GroupAdd)
response.Status = string(resp.Status)
response.ReadReceipts = string(resp.ReadReceipts)
response.Profile = string(resp.Profile)
return response, nil
}

13
structs/send_struct.go

@ -1,6 +1,7 @@
package structs package structs
import ( import (
"go.mau.fi/whatsmeow/types"
"mime/multipart" "mime/multipart"
) )
@ -39,6 +40,18 @@ type UserAvatarResponse struct {
Type string `json:"type"` Type string `json:"type"`
} }
type UserMyPrivacySettingResponse struct {
GroupAdd string `json:"group_add"`
LastSeen string `json:"last_seen"`
Status string `json:"status"`
Profile string `json:"profile"`
ReadReceipts string `json:"read_receipts"`
}
type UserMyListGroupsResponse struct {
Data []types.GroupInfo `json:"data"`
}
// ============================== END USER ============================== // ============================== END USER ==============================
// ============================== SEND ============================== // ============================== SEND ==============================

Loading…
Cancel
Save