...

Source file src/go.formulabun.club/translator/server/go/api_default_service.go

Documentation: go.formulabun.club/translator/server/go

     1  /*
     2   * Translator service between a srb2kart server and json
     3   *
     4   * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
     5   *
     6   * API version: 0.0.1
     7   * Generated by: OpenAPI Generator (https://openapi-generator.tech)
     8   */
     9  
    10  package openapi
    11  
    12  import (
    13  	"context"
    14  	"fmt"
    15  	"net/http"
    16  
    17  	"go.formulabun.club/functional/array"
    18  	"go.formulabun.club/functional/strings"
    19  	"go.formulabun.club/srb2kart/network"
    20  )
    21  
    22  // DefaultApiService is a service that implements the logic for the DefaultApiServicer
    23  // This service should implement the business logic for every endpoint for the DefaultApi API.
    24  // Include any external packages or services that will be required by this service.
    25  type DefaultApiService struct {
    26  	Target string
    27  }
    28  
    29  // NewDefaultApiService creates a default api service
    30  func NewDefaultApiService(target string) DefaultApiServicer {
    31  	return &DefaultApiService{target}
    32  }
    33  
    34  // MapsGet - get the installed mods
    35  func (s *DefaultApiService) FilesGet(ctx context.Context) (ImplResponse, error) {
    36  	files, err := network.TellAllFilesNeeded(s.Target)
    37  	if err != nil {
    38  		return Response(500, err), err
    39  	}
    40  
    41  	for i, f := range files {
    42  		// oops I forgot null terminator in srb2kart/network
    43  		files[i] = f[:len(f)-1]
    44  	}
    45  	return Response(http.StatusOK, files), nil
    46  }
    47  
    48  // PlayerinfoGet - get the player infomation
    49  func (s *DefaultApiService) PlayerinfoGet(ctx context.Context) (ImplResponse, error) {
    50  	_, playerInfo, err := network.AskInfo(s.Target)
    51  
    52  	if err != nil {
    53  		return Response(500, err), err
    54  	}
    55    
    56    existingNodes := array.Filter(playerInfo, func(player network.PlayerInfo) bool {
    57      return player.Node != 255
    58    })
    59  	players := array.Map(existingNodes, func(player network.PlayerInfo) PlayerInfoEntry {
    60  		return PlayerInfoEntry{
    61  			player.Node,
    62  			strings.SafeNullTerminated(player.Name[:]),
    63  			strings.Join(array.Map(player.Address[:], func(v uint8) string { return fmt.Sprint(v) }), "."),
    64  			player.Team,
    65  			player.Skin,
    66  			player.Data,
    67  			player.Score,
    68  			player.TimeInServer,
    69  		}
    70  	})
    71  
    72  	return Response(http.StatusOK, PlayerInfo(players)), nil
    73  }
    74  
    75  // ServerinfoGet - get the server information
    76  func (s *DefaultApiService) ServerinfoGet(ctx context.Context) (ImplResponse, error) {
    77  	i, _, err := network.AskInfo(s.Target)
    78  
    79  	if err != nil {
    80  		return Response(500, err), err
    81  	}
    82  
    83    resp := ServerInfo{
    84      i.PacketVersion,
    85      strings.SafeNullTerminated(i.Application[:]),
    86      i.Version,
    87      i.Subversion,
    88      i.NumberOfPlayer,
    89      i.MaxPlayer,
    90      i.Gametype,
    91      i.ModifiedGame > 0,
    92      i.CheatsEnabled > 0,
    93      i.KartVars,
    94      i.FileNeededNum,
    95      i.Time,
    96      i.LevelTime,
    97      strings.SafeNullTerminated(i.ServerName[:]),
    98      strings.SafeNullTerminated(i.MapName[:]),
    99      strings.SafeNullTerminated(i.MapTitle[:]),
   100      i.MapMd5,
   101      i.ActNum,
   102      i.IsZone > 0,
   103      strings.SafeNullTerminated(i.HttpSource[:]),
   104      []FileNeededInner{},
   105    }
   106  
   107  	return Response(http.StatusOK, resp), nil
   108  }
   109  

View as plain text