draft
This commit is contained in:
83
internal/modules/playerconfigs/presenter.go
Normal file
83
internal/modules/playerconfigs/presenter.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package playerconfigs
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
appv1 "stream.api/internal/gen/proto/app/v1"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
"stream.api/internal/modules/common"
|
||||
)
|
||||
|
||||
func presentPlayerConfig(view PlayerConfigView) *appv1.PlayerConfig {
|
||||
return common.ToProtoPlayerConfig(view.Config)
|
||||
}
|
||||
|
||||
func presentListPlayerConfigsResponse(result *ListPlayerConfigsResult) *appv1.ListPlayerConfigsResponse {
|
||||
items := make([]*appv1.PlayerConfig, 0, len(result.Items))
|
||||
for _, item := range result.Items {
|
||||
items = append(items, presentPlayerConfig(item))
|
||||
}
|
||||
return &appv1.ListPlayerConfigsResponse{Configs: items}
|
||||
}
|
||||
|
||||
func presentCreatePlayerConfigResponse(view PlayerConfigView) *appv1.CreatePlayerConfigResponse {
|
||||
return &appv1.CreatePlayerConfigResponse{Config: presentPlayerConfig(view)}
|
||||
}
|
||||
|
||||
func presentUpdatePlayerConfigResponse(view PlayerConfigView) *appv1.UpdatePlayerConfigResponse {
|
||||
return &appv1.UpdatePlayerConfigResponse{Config: presentPlayerConfig(view)}
|
||||
}
|
||||
|
||||
func presentAdminPlayerConfig(view AdminPlayerConfigView) *appv1.AdminPlayerConfig {
|
||||
return &appv1.AdminPlayerConfig{
|
||||
Id: view.ID,
|
||||
UserId: view.UserID,
|
||||
Name: view.Name,
|
||||
Description: view.Description,
|
||||
Autoplay: view.Autoplay,
|
||||
Loop: view.Loop,
|
||||
Muted: view.Muted,
|
||||
ShowControls: view.ShowControls,
|
||||
Pip: view.Pip,
|
||||
Airplay: view.Airplay,
|
||||
Chromecast: view.Chromecast,
|
||||
IsActive: view.IsActive,
|
||||
IsDefault: view.IsDefault,
|
||||
OwnerEmail: view.OwnerEmail,
|
||||
CreatedAt: parseRFC3339ToProto(view.CreatedAt),
|
||||
UpdatedAt: parseRFC3339ToProto(view.UpdatedAt),
|
||||
EncrytionM3U8: view.EncrytionM3U8,
|
||||
LogoUrl: view.LogoURL,
|
||||
}
|
||||
}
|
||||
|
||||
func presentListAdminPlayerConfigsResponse(result *ListAdminPlayerConfigsResult) *appv1.ListAdminPlayerConfigsResponse {
|
||||
items := make([]*appv1.AdminPlayerConfig, 0, len(result.Items))
|
||||
for _, item := range result.Items {
|
||||
items = append(items, presentAdminPlayerConfig(item))
|
||||
}
|
||||
return &appv1.ListAdminPlayerConfigsResponse{Configs: items, Total: result.Total, Page: result.Page, Limit: result.Limit}
|
||||
}
|
||||
|
||||
func presentGetAdminPlayerConfigResponse(view AdminPlayerConfigView) *appv1.GetAdminPlayerConfigResponse {
|
||||
return &appv1.GetAdminPlayerConfigResponse{Config: presentAdminPlayerConfig(view)}
|
||||
}
|
||||
|
||||
func presentCreateAdminPlayerConfigResponse(view AdminPlayerConfigView) *appv1.CreateAdminPlayerConfigResponse {
|
||||
return &appv1.CreateAdminPlayerConfigResponse{Config: presentAdminPlayerConfig(view)}
|
||||
}
|
||||
|
||||
func presentUpdateAdminPlayerConfigResponse(view AdminPlayerConfigView) *appv1.UpdateAdminPlayerConfigResponse {
|
||||
return &appv1.UpdateAdminPlayerConfigResponse{Config: presentAdminPlayerConfig(view)}
|
||||
}
|
||||
|
||||
func parseRFC3339ToProto(value *string) *timestamppb.Timestamp {
|
||||
if value == nil || *value == "" {
|
||||
return nil
|
||||
}
|
||||
parsed, err := time.Parse(time.RFC3339, *value)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return timestamppb.New(parsed.UTC())
|
||||
}
|
||||
Reference in New Issue
Block a user