84 lines
2.9 KiB
Go
84 lines
2.9 KiB
Go
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())
|
|
}
|