Compare commits
5 Commits
main
...
refactorin
Author | SHA1 | Date | |
---|---|---|---|
a60fec8491 | |||
94566bdc6f | |||
6c6020ef94 | |||
2fa9396049 | |||
19790ea5c5 |
37
auth/auth.go
37
auth/auth.go
@ -1,37 +0,0 @@
|
||||
package sharedauth
|
||||
|
||||
import "time"
|
||||
|
||||
type InstallIdRegisterReq struct {
|
||||
InstallId InstallId
|
||||
}
|
||||
|
||||
type InstallId string
|
||||
|
||||
func (id InstallId) Validate() bool {
|
||||
//TODO: More checks
|
||||
return id != ""
|
||||
}
|
||||
|
||||
type RedirResp struct {
|
||||
RedirectUrl string
|
||||
}
|
||||
|
||||
type LauncherSession struct {
|
||||
// Username string
|
||||
// DiscordId string
|
||||
SessionToken string
|
||||
InstallId string
|
||||
Expiry time.Time
|
||||
}
|
||||
|
||||
type ProfileResp struct {
|
||||
Username string
|
||||
}
|
||||
|
||||
type ValidateReq struct {
|
||||
LauncherToken string
|
||||
}
|
||||
|
||||
type ValidateResp struct {
|
||||
}
|
9
distribution/distribution.go
Normal file
9
distribution/distribution.go
Normal file
@ -0,0 +1,9 @@
|
||||
package distribution
|
||||
|
||||
import (
|
||||
domainModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/domain"
|
||||
)
|
||||
|
||||
type Distributiuon struct { //TODO: Fix mistake
|
||||
Domains []domainModels.Domain
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package domain
|
||||
|
||||
// type Domains []SkirdaDomain
|
||||
|
||||
// func (domains Domains) Set(newDomains []SkirdaDomain) {
|
||||
// domains = append([]SkirdaDomain{}, newDomains...)
|
||||
// }
|
||||
|
||||
//func (domains Domains) FindGameByID(gameId string) (SkirdaGame, error) {
|
||||
// for _, domain := range domains {
|
||||
// game, _ := domain.FindGameByID(gameId)
|
||||
// if game.GetSkirdaGameId() == gameId {
|
||||
// return game, nil
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return nil, errors.New("")
|
||||
//}
|
||||
|
||||
//func (domains Domains) GetGames() SkirdaGames {
|
||||
// allGames := SkirdaGames{}
|
||||
// for _, domain := range domains {
|
||||
// allGames = append(allGames, domain.SkirdaGames...)
|
||||
// }
|
||||
// return allGames
|
||||
//}
|
||||
|
||||
// func (domains Domains) GetSessions() SkirdaSessions {
|
||||
// plainSessions := SkirdaSessions{}
|
||||
// for _, domain := range domains {
|
||||
// plainSessions = append(plainSessions, SkirdaSessions...)
|
||||
// }
|
||||
// return plainSessions
|
||||
// }
|
||||
|
||||
// func (domains Domains) FindDomain(domainId string) (SkirdaDomain, error) {
|
||||
// for _, domain := range domains {
|
||||
// if domain.DomainId == domainId {
|
||||
// return domain, nil
|
||||
// }
|
||||
// }
|
||||
// return SkirdaDomain{}, errors.New("not any domain founded")
|
||||
// }
|
@ -1,33 +0,0 @@
|
||||
package domain
|
||||
|
||||
// const gameType = "minecraft"
|
||||
|
||||
type MinecraftGame struct {
|
||||
SkirdaGameId string
|
||||
Assets GameUIAssets
|
||||
Versions []string
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetSkirdaGameId() string {
|
||||
return game.SkirdaGameId
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetUIAssets() GameUIAssets {
|
||||
return game.Assets
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetLaunchArgs() []string {
|
||||
return []string{"", ""}
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetType() string {
|
||||
return "minecraft"
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetArguments() Arguments {
|
||||
return Arguments{}
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetVersions() []string {
|
||||
return game.Versions
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package domain
|
||||
|
||||
import "errors"
|
||||
|
||||
type SkirdaGame interface {
|
||||
GetSkirdaGameId() string
|
||||
GetUIAssets() GameUIAssets
|
||||
GetLaunchArgs() []string
|
||||
GetType() string
|
||||
GetArguments() Arguments
|
||||
}
|
||||
|
||||
type GameUIAssets struct {
|
||||
// GameID string `json:"gameId"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
type SkirdaGames []SkirdaGame
|
||||
|
||||
func (games SkirdaGames) AddGames(game []SkirdaGame) {
|
||||
games = append(games, game...)
|
||||
}
|
||||
|
||||
func (games SkirdaGames) FindGameByID(gameId string) (SkirdaGame, error) {
|
||||
for _, game := range games {
|
||||
if game.GetSkirdaGameId() == gameId {
|
||||
return game, nil
|
||||
}
|
||||
}
|
||||
return nil, errors.New("")
|
||||
}
|
||||
|
||||
type Argument struct {
|
||||
Body string
|
||||
Value string
|
||||
}
|
||||
|
||||
type Arguments struct {
|
||||
Required []Argument
|
||||
Optional []Argument
|
||||
}
|
@ -1,128 +0,0 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
type SkirdaSession interface {
|
||||
GetSessionId() string
|
||||
GetGameId() string
|
||||
GetUIAssets() SessionUIAssets
|
||||
GetGameType() string
|
||||
GetSessionData() string
|
||||
}
|
||||
|
||||
// type SkirdaSession struct {
|
||||
// SkirdaSessionId string
|
||||
// SkirdaGameId string
|
||||
// Assets SessionUIAssets
|
||||
// }
|
||||
|
||||
type SkirdaSessions []SkirdaSession
|
||||
|
||||
// GetGameId implements SkirdaSession
|
||||
func (SkirdaSessions) GetGameId() string {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// GetGameType implements SkirdaSession
|
||||
func (SkirdaSessions) GetGameType() string {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// GetSessionData implements SkirdaSession
|
||||
func (SkirdaSessions) GetSessionData() string {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// GetSessionId implements SkirdaSession
|
||||
func (SkirdaSessions) GetSessionId() string {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
// GetUIAssets implements SkirdaSession
|
||||
func (SkirdaSessions) GetUIAssets() SessionUIAssets {
|
||||
panic("unimplemented")
|
||||
}
|
||||
|
||||
type SessionUIAssets struct {
|
||||
// GameID string `json:"gameId"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
func (sessions SkirdaSessions) FindSessionById(sessionId string) (SkirdaSession, error) {
|
||||
for _, session := range sessions {
|
||||
if session.GetSessionId() == sessionId {
|
||||
return session, nil
|
||||
}
|
||||
}
|
||||
return nil, errors.New("no any sessions founded")
|
||||
}
|
||||
|
||||
func (sessions SkirdaSessions) AddSessions(newSessions []SkirdaSession) {
|
||||
sessions = append(sessions, newSessions...)
|
||||
}
|
||||
|
||||
type MinecraftSession struct {
|
||||
SkirdaSessionId string
|
||||
SkirdaGameId string
|
||||
Assets SessionUIAssets
|
||||
Version string
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetSessionId() string {
|
||||
return session.SkirdaSessionId
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetUIAssets() SessionUIAssets {
|
||||
return session.Assets
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetGameId() string {
|
||||
return session.SkirdaGameId
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetMinecraftVersion() string {
|
||||
return session.SkirdaGameId
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetGameType() string {
|
||||
return "minecraft"
|
||||
}
|
||||
|
||||
func (session MinecraftSession) GetSessionData() string {
|
||||
return session.Version
|
||||
}
|
||||
|
||||
type SteamSession struct {
|
||||
SkirdaSessionId string
|
||||
SkirdaGameId string
|
||||
Assets SessionUIAssets
|
||||
// Data SteamSessionData
|
||||
}
|
||||
|
||||
type SteamSessionData struct {
|
||||
kke string
|
||||
}
|
||||
|
||||
func (session SteamSession) GetSessionId() string {
|
||||
return session.SkirdaSessionId
|
||||
}
|
||||
|
||||
func (session SteamSession) GetUIAssets() SessionUIAssets {
|
||||
return session.Assets
|
||||
}
|
||||
|
||||
func (session SteamSession) GetGameId() string {
|
||||
return session.SkirdaGameId
|
||||
}
|
||||
|
||||
func (session SteamSession) GetGameType() string {
|
||||
return "steam"
|
||||
}
|
||||
|
||||
func (session SteamSession) GetSessionData() string {
|
||||
return ""
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package domain
|
||||
|
||||
type SteamGame struct {
|
||||
SkirdaGameId string
|
||||
SteamId string
|
||||
Assets GameUIAssets
|
||||
Arguments Arguments
|
||||
// CurrentVersion string
|
||||
}
|
||||
|
||||
func (game SteamGame) GetSkirdaGameId() string {
|
||||
return game.SkirdaGameId
|
||||
}
|
||||
|
||||
func (game SteamGame) GetUIAssets() GameUIAssets {
|
||||
return game.Assets
|
||||
}
|
||||
|
||||
func (game SteamGame) GetLaunchArgs() []string {
|
||||
return []string{"", ""}
|
||||
}
|
||||
|
||||
func (game SteamGame) GetType() string {
|
||||
return "steam"
|
||||
}
|
||||
|
||||
func (game SteamGame) GetArguments() Arguments {
|
||||
return game.Arguments
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
package domain
|
||||
|
||||
import "strconv"
|
||||
|
||||
type JavaVersion struct {
|
||||
VersionNums `json:"version"`
|
||||
Specifics []JavaVersionSpecifics `json:"specifics"`
|
||||
}
|
||||
|
||||
func (jVer *JavaVersion) GetVersionString() string {
|
||||
return strconv.Itoa(jVer.Major) + "." + strconv.Itoa(jVer.Minor) + "." + strconv.Itoa(jVer.Patch)
|
||||
}
|
||||
|
||||
type JavaVersionSpecifics struct {
|
||||
Os string `json:"os"`
|
||||
Arch string `json:"arch"`
|
||||
URL string `json:"URL"`
|
||||
Sha1 string `json:"SHA1"`
|
||||
}
|
||||
|
||||
func (jv *JavaVersion) FindOs(os string, arch string) *JavaVersionSpecifics {
|
||||
for _, s := range jv.Specifics {
|
||||
if s.Os == os && s.Arch == arch {
|
||||
return &s
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type VersionNums struct {
|
||||
Major int `json:"major"`
|
||||
Minor int `json:"minor"`
|
||||
Patch int `json:"patch"`
|
||||
}
|
||||
|
||||
func (v *VersionNums) FillFromString(maj string, min string, patch string) error {
|
||||
iMaj, err := strconv.Atoi(maj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
iMin := 0
|
||||
iMin, err = strconv.Atoi(min)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
iPatch := 0
|
||||
iPatch, err = strconv.Atoi(patch)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Major = iMaj
|
||||
v.Minor = iMin
|
||||
v.Patch = iPatch
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type Version struct {
|
||||
AssetIndex AssetIndex `json:"assetIndex"`
|
||||
Downloads struct {
|
||||
Client Artifact `json:"client"`
|
||||
Server Artifact `json:"server"`
|
||||
Mods struct {
|
||||
Required []ModArtifact `json:"required"`
|
||||
} `json:"mods"`
|
||||
} `json:"downloads"`
|
||||
ID string `json:"id"`
|
||||
Libraries []Lib `json:"libraries"`
|
||||
//ClientLog LogCfg
|
||||
MainClass string `json:"mainClass"`
|
||||
GameArgs []Argument
|
||||
JVMArgs []Argument
|
||||
Type string `json:"type"`
|
||||
JavaVersion JavaVersion `json:"javaVersion"`
|
||||
}
|
||||
|
||||
type AssetIndex struct {
|
||||
ID string `json:"id"`
|
||||
TotalSize uint64 `json:"totalSize"`
|
||||
Artifact
|
||||
}
|
||||
|
||||
// type Argument struct {
|
||||
// Value string `json:"value"`
|
||||
// Rules []Rule `json:"rules"`
|
||||
// }
|
||||
|
||||
type JavaVersionClientDistribution struct { //TODO Rename
|
||||
Component string `json:"component"`
|
||||
MajorVersion int `json:"majorVersion"`
|
||||
}
|
||||
|
||||
type Rule struct {
|
||||
Action RuleAct `json:"action" mapstructure:"action"`
|
||||
// OS information. All fields are regexes.
|
||||
OS struct {
|
||||
Name string `json:"name" mapstructure:"name"`
|
||||
Version string `json:"version" mapstructure:"version"`
|
||||
Arch string `json:"arch" mapstructure:"arch"`
|
||||
} `json:"os" mapstructure:"os"`
|
||||
Features struct {
|
||||
IsDemoUser *bool `json:"is_demo_user" mapstructure:"is_demo_user"`
|
||||
HasCustomResolution *bool `json:"has_custom_resolution" mapstructure:"has_custom_resolution"`
|
||||
} `json:"features" mapstructure:"features"`
|
||||
}
|
||||
|
||||
type RuleAct string
|
||||
|
||||
const (
|
||||
ActAllow RuleAct = "allow"
|
||||
ActDisallow RuleAct = "disallow"
|
||||
)
|
||||
|
||||
type LibClassifiers struct {
|
||||
JavaDoc *Artifact `json:"javadoc"`
|
||||
NativesLinux *Artifact `json:"natives-linux"`
|
||||
NativesMacOS *Artifact `json:"natives-osx"`
|
||||
NativesWin *Artifact `json:"natives-windows"`
|
||||
Sources *Artifact `json:"sources"`
|
||||
}
|
||||
|
||||
type Lib struct {
|
||||
Downloads struct {
|
||||
MainJar *Artifact `json:"artifact"`
|
||||
LibClassifiers `json:"classifiers"`
|
||||
} `json:"downloads"`
|
||||
NativeSuffixes struct {
|
||||
Linux string `json:"linux"`
|
||||
MacOS string `json:"osx"`
|
||||
Windows string `json:"windows"`
|
||||
} `json:"natives"`
|
||||
Name string `json:"name"`
|
||||
Rules []Rule `json:"rules"`
|
||||
ExtractRules struct {
|
||||
Exclude []string `json:"exclude"`
|
||||
} `json:"extract"`
|
||||
}
|
||||
|
||||
type Artifact struct {
|
||||
SHA1 string `json:"sha1"`
|
||||
Size uint64 `json:"size"`
|
||||
URL string `json:"url"`
|
||||
}
|
||||
|
||||
type ModArtifact struct {
|
||||
Artifact
|
||||
File string
|
||||
Name string
|
||||
Version string
|
||||
}
|
||||
|
||||
type VersionMeta struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
URL string `json:"url"`
|
||||
|
||||
Installed bool
|
||||
}
|
3
go.mod
Normal file
3
go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module git.gregbrzezinski.com/Skirda/skirdagoutils
|
||||
|
||||
go 1.18
|
16
models/domain/domainModels.go
Normal file
16
models/domain/domainModels.go
Normal file
@ -0,0 +1,16 @@
|
||||
package domainModels
|
||||
|
||||
import (
|
||||
gamesModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/games"
|
||||
sessionsModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/sessions"
|
||||
)
|
||||
|
||||
type Domain struct {
|
||||
DiscordGroupID string
|
||||
Games gamesModels.Games
|
||||
Sessions sessionsModels.Sessions
|
||||
}
|
||||
|
||||
type Domains struct {
|
||||
Domains []Domain
|
||||
}
|
42
models/games/gameModels.go
Normal file
42
models/games/gameModels.go
Normal file
@ -0,0 +1,42 @@
|
||||
package gamesModels
|
||||
|
||||
type SteamGame struct {
|
||||
GameId string //TODO: To UUID
|
||||
SteamId string
|
||||
Args []Argument
|
||||
OptionalArgs []Argument
|
||||
Assets GameInterfaceAssets
|
||||
Platforms map[string]bool
|
||||
}
|
||||
|
||||
type LocalGame struct {
|
||||
GameId string
|
||||
}
|
||||
|
||||
type GameInterfaceAssets struct {
|
||||
Title string
|
||||
Icon string
|
||||
Description string
|
||||
Backgrounds []GameInterfaceBackground
|
||||
}
|
||||
|
||||
type GameInterfaceBackground struct {
|
||||
File string
|
||||
}
|
||||
|
||||
type Games struct { //TODO: to domain
|
||||
SteamGames []SteamGame
|
||||
LocalGames []LocalGame
|
||||
}
|
||||
|
||||
type JSGameInterface struct {
|
||||
GameID string `json:"gameId"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
type Argument struct {
|
||||
Body string
|
||||
Value string
|
||||
}
|
29
models/sessions/sessionModels.go
Normal file
29
models/sessions/sessionModels.go
Normal file
@ -0,0 +1,29 @@
|
||||
package sessionsModels
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
gamesModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/games"
|
||||
)
|
||||
|
||||
type Session struct {
|
||||
SessionId string
|
||||
GameId string
|
||||
Assets gamesModels.GameInterfaceAssets
|
||||
Expires time.Time
|
||||
Arguments []gamesModels.Argument
|
||||
}
|
||||
|
||||
type Sessions struct { //TODO: to domain
|
||||
Sessions []Session
|
||||
}
|
||||
|
||||
type JSSessionInterface struct {
|
||||
GameID string `json:"gameId"`
|
||||
SessionId string `json:"sessionId"`
|
||||
Expires time.Time `json:"expires"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
Backgrounds []string `json:"backgrounds"`
|
||||
}
|
7
models/update/updateModels.go
Normal file
7
models/update/updateModels.go
Normal file
@ -0,0 +1,7 @@
|
||||
package updateutils
|
||||
|
||||
type LastVersion struct { //Rename to Version
|
||||
Epic int
|
||||
Sprint int
|
||||
Build int
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package osutils
|
||||
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
func UuidValidate(uuid string) error {
|
||||
if len(uuid) != 36 {
|
||||
return errors.New("uuid length not valid")
|
||||
}
|
||||
|
||||
for i, r := range uuid {
|
||||
switch i {
|
||||
case 8, 13, 18, 23:
|
||||
if r != '-' {
|
||||
return errors.New("uuid separator not valid")
|
||||
}
|
||||
break
|
||||
default:
|
||||
if !isLetter(r) && !unicode.IsDigit(r) {
|
||||
return errors.Errorf("uuid char on %i not valid", i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func isLetter(r rune) bool {
|
||||
l := unicode.ToLower(r)
|
||||
return (l >= 'a' && l <= 'f')
|
||||
}
|
122
osutils/files.go
122
osutils/files.go
@ -1,122 +0,0 @@
|
||||
package osutils
|
||||
|
||||
import (
|
||||
"crypto/sha1"
|
||||
"encoding/hex"
|
||||
"io"
|
||||
"io/fs"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func IsDirectory(path string) (bool, error) {
|
||||
fileInfo, err := os.Stat(path)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return fileInfo.IsDir(), err
|
||||
}
|
||||
|
||||
func RecursiceWalk(pathToWalk string) ([]string, error) {
|
||||
paths := []string{}
|
||||
err := filepath.Walk(pathToWalk,
|
||||
func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
println(err)
|
||||
return err
|
||||
}
|
||||
// fmt.Println(path[len(path)-4:])
|
||||
libBool, err := IsDirectory(path)
|
||||
if err != nil {
|
||||
println("error in checking lib or dir")
|
||||
}
|
||||
if !libBool {
|
||||
// println(path)
|
||||
paths = append(paths, path)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
return paths, nil
|
||||
}
|
||||
|
||||
func ListDir(path string) ([]fs.FileInfo, error) {
|
||||
files, err := ioutil.ReadDir(path)
|
||||
if err != nil {
|
||||
return []fs.FileInfo{}, err
|
||||
}
|
||||
return files, nil
|
||||
}
|
||||
|
||||
func GetParentDir(filePath string) (string, error) {
|
||||
cuttedPath := strings.Split(filePath, "/")
|
||||
cuttedPath = cuttedPath[:len(cuttedPath)-1]
|
||||
finalPath := path.Join("/", path.Join(cuttedPath...))
|
||||
return finalPath, nil
|
||||
}
|
||||
|
||||
type FileValidationInfo struct {
|
||||
Path string
|
||||
fs.FileInfo
|
||||
SHA1 string
|
||||
}
|
||||
|
||||
func ValidateFile(filePath string) (*FileValidationInfo, error) {
|
||||
info := FileValidationInfo{
|
||||
Path: filePath,
|
||||
FileInfo: nil,
|
||||
SHA1: "",
|
||||
}
|
||||
info.Path = filePath
|
||||
|
||||
stat, err := os.Stat(filePath)
|
||||
if err != nil {
|
||||
return &info, err
|
||||
}
|
||||
info.FileInfo = stat
|
||||
|
||||
hash, err := GetFileHash(filePath)
|
||||
if err != nil {
|
||||
return &info, err
|
||||
}
|
||||
info.SHA1 = hash
|
||||
|
||||
return &info, nil
|
||||
}
|
||||
|
||||
func GetFileHash(filePath string) (string, error) {
|
||||
//Initialize variable returnMD5String now in case an error has to be returned
|
||||
var returnSHA1String string
|
||||
|
||||
//Open the filepath passed by the argument and check for any error
|
||||
file, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
//Tell the program to call the following function when the current function returns
|
||||
defer file.Close()
|
||||
|
||||
//Open a new SHA1 hash interface to write to
|
||||
hash := sha1.New()
|
||||
|
||||
//Copy the file in the hash interface and check for any error
|
||||
if _, err := io.Copy(hash, file); err != nil {
|
||||
return returnSHA1String, err
|
||||
}
|
||||
|
||||
//Get the 20 bytes hash
|
||||
hashInBytes := hash.Sum(nil)[:20]
|
||||
|
||||
//Convert the bytes to a string
|
||||
returnSHA1String = hex.EncodeToString(hashInBytes)
|
||||
|
||||
return returnSHA1String, nil
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package osutils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
func WriteStructAsJSON(data interface{}, JsonPath string) error {
|
||||
file, _ := json.MarshalIndent(data, "", " ")
|
||||
|
||||
directory, err := GetParentDir(JsonPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.MkdirAll(directory+"/", os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = ioutil.WriteFile(JsonPath, file, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReadJsonFromDisk(target interface{}, filePath string) error {
|
||||
// Open our jsonFile
|
||||
jsonFile, err := os.Open(filePath)
|
||||
// if we os.Open returns an error then handle it
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// fmt.Println("Successfully Opened users.json")
|
||||
// defer the closing of our jsonFile so that we can parse it later on
|
||||
defer jsonFile.Close()
|
||||
|
||||
// read our opened xmlFile as a byte array.
|
||||
byteValue, _ := ioutil.ReadAll(jsonFile)
|
||||
|
||||
// we unmarshal our byteArray which contains our
|
||||
// jsonFile's content into 'users' which we defined above
|
||||
json.Unmarshal(byteValue, &target)
|
||||
return nil
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package javaentities
|
||||
|
||||
// type JavaVersion struct {
|
||||
// Component string
|
||||
// Type string
|
||||
// Name string
|
||||
// Major int
|
||||
// Minor int
|
||||
// Patch int
|
||||
// }
|
||||
|
||||
// type JavaMetas struct {
|
||||
// JavaVersions []JavaMeta `json:"javaVersions"`
|
||||
// }
|
||||
|
||||
// func (jm JavaMetas) FindSpecificJavaOsByMajor(version JavaVersion) (SpecificJavaVersion, error) {
|
||||
// for _, v := range jm.JavaVersions {
|
||||
// if version.Major == v.Version.Major {
|
||||
// jv, err := v.getOsJava()
|
||||
// if err != nil {
|
||||
// continue
|
||||
// }
|
||||
// return jv, nil
|
||||
// }
|
||||
// }
|
||||
// return SpecificJavaVersion{}, errors.New("cant find os url")
|
||||
// }
|
||||
|
||||
// func (jm JavaMetas) FindSpecificJava(MajorVersion string)
|
||||
|
||||
// type JavaMeta struct {
|
||||
// Version struct {
|
||||
// Major int `json:"major"`
|
||||
// Minor int `json:"minor"`
|
||||
// Patch int `json:"patch"`
|
||||
// } `json:"version"`
|
||||
// Name string
|
||||
// Specifics `json:"specifics"`
|
||||
// }
|
||||
|
||||
// type SpecificJavaVersion struct {
|
||||
// Os string `json:"os"`
|
||||
// Arch string `json:"arch"`
|
||||
// URL string `json:"URL"`
|
||||
// Sha1 string `json:"SHA1"`
|
||||
// }
|
||||
|
||||
// type Specifics []SpecificJavaVersion
|
||||
|
||||
// func (s Specifics) getOsJava() (SpecificJavaVersion, error) {
|
||||
// for _, v := range s {
|
||||
// if v.Os == runtime.GOOS {
|
||||
// return v, nil
|
||||
// }
|
||||
// }
|
||||
// return SpecificJavaVersion{}, errors.New("not java for current os")
|
||||
// }
|
||||
|
||||
// func (v *JavaVersion) CheckNotExists(launcherPath string) bool {
|
||||
// javaBinPath := path.Join(launcherPath, ".redist", "java", v.GetString())
|
||||
// _, err := os.Stat(javaBinPath)
|
||||
|
||||
// return err != nil
|
||||
// }
|
||||
|
||||
// func (v *JavaVersion) GetString() string {
|
||||
// var stringBuilder strings.Builder
|
||||
// stringBuilder.WriteString(strconv.Itoa(v.Major))
|
||||
// stringBuilder.WriteRune('.')
|
||||
// stringBuilder.WriteString(strconv.Itoa(v.Minor))
|
||||
// stringBuilder.WriteRune('.')
|
||||
// stringBuilder.WriteString(strconv.Itoa(v.Patch))
|
||||
|
||||
// return stringBuilder.String()
|
||||
// }
|
@ -1,158 +0,0 @@
|
||||
package sharedDistribution
|
||||
|
||||
type SkirdaGame interface {
|
||||
// SkirdaGameId string
|
||||
GetSkirdaGameId() string
|
||||
GetInterfaceAsset(gameId string) JSGameInterface
|
||||
GetLaunchArgs() []string
|
||||
// Launch(gameId string) error
|
||||
}
|
||||
|
||||
type SkirdaGames struct {
|
||||
Steam []SteamGame
|
||||
Minecraft MinecraftGame //TODO: To slice
|
||||
}
|
||||
|
||||
func (games SkirdaGames) GetGameTypeById(skirdaGameId string) (string, error) {
|
||||
if games.Minecraft.GetSkirdaGameId() == skirdaGameId {
|
||||
return "minecraft", nil
|
||||
}
|
||||
|
||||
for _, game := range games.Steam {
|
||||
if game.GetSkirdaGameId() == skirdaGameId {
|
||||
return "steam", nil
|
||||
}
|
||||
}
|
||||
return "", nil //TODO: Right error return
|
||||
}
|
||||
|
||||
func (games SkirdaGames) Test(skirdaGameId string) (interface{}, error) {
|
||||
return games.Minecraft, nil
|
||||
}
|
||||
|
||||
func (games SkirdaGames) GetInterfaceAssets() []JSGameInterface {
|
||||
assets := []JSGameInterface{}
|
||||
|
||||
assets = append(assets, games.Minecraft.GetInterfaceAsset())
|
||||
for _, game := range games.Steam {
|
||||
assets = append(assets, game.GetInterfaceAsset())
|
||||
}
|
||||
return assets
|
||||
}
|
||||
|
||||
func (games SteamGame) Test(skirdaGameId string) (interface{}, error) {
|
||||
return SteamGame{}, nil
|
||||
}
|
||||
|
||||
func (game SteamGame) GetSkirdaGameId() string {
|
||||
return game.SkirdaGameId
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetSkirdaGameId() string {
|
||||
return game.SkirdaGameId
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetMinecraftVersion() string {
|
||||
return game.CurrentVersion
|
||||
}
|
||||
|
||||
func (games SkirdaGames) GetLaunchCmd(skirdaGameId string, os string) (string, []string, error) {
|
||||
gameType, err := games.GetGameTypeById(skirdaGameId)
|
||||
if err != nil {
|
||||
return "", nil, nil
|
||||
}
|
||||
|
||||
switch gameType {
|
||||
case "minecraft":
|
||||
switch os {
|
||||
case "windows":
|
||||
|
||||
return "notepad", []string{""}, nil
|
||||
default:
|
||||
return "", []string{}, nil
|
||||
}
|
||||
default:
|
||||
return "", nil, nil
|
||||
}
|
||||
}
|
||||
|
||||
// func (games SkirdaGames) FindGameByID(gameId string) (SkirdaGame, error) {
|
||||
// for _, game := range games {
|
||||
// if game.GetSkirdaGameId() == gameId {
|
||||
// return game, nil
|
||||
// }
|
||||
// }
|
||||
// kek := SkirdaGame
|
||||
// return game, nil //TODO: Right error return
|
||||
// }
|
||||
|
||||
// func (game MinecraftGame) GetLaunchArgs() (string, []string, error) {
|
||||
// switch os := runtime.GOOS; os {
|
||||
// case "windows":
|
||||
// return "java", []string{"-version"}, nil
|
||||
// default:
|
||||
// return "", []string{}, nil
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
func (game SteamGame) GetInterfaceAsset() JSGameInterface {
|
||||
return JSGameInterface{
|
||||
GameID: game.SkirdaGameId,
|
||||
Title: game.Assets.Title,
|
||||
Icon: game.Assets.Icon,
|
||||
Description: game.Assets.Description,
|
||||
}
|
||||
}
|
||||
|
||||
func (game MinecraftGame) GetInterfaceAsset() JSGameInterface {
|
||||
return JSGameInterface{
|
||||
GameID: game.SkirdaGameId,
|
||||
Title: game.Assets.Title,
|
||||
Icon: game.Assets.Icon,
|
||||
Description: game.Assets.Description,
|
||||
}
|
||||
}
|
||||
|
||||
type MinecraftGame struct {
|
||||
SkirdaGameId string
|
||||
Assets GameInterfaceAssets
|
||||
CurrentVersion string
|
||||
}
|
||||
|
||||
type SteamGame struct {
|
||||
SkirdaGameId string
|
||||
SteamId string
|
||||
Args []Argument
|
||||
OptionalArgs []Argument
|
||||
//TODO: Settings??
|
||||
Assets GameInterfaceAssets
|
||||
Platforms map[string]bool
|
||||
}
|
||||
|
||||
type LocalGame struct {
|
||||
GameId string
|
||||
}
|
||||
|
||||
type GameInterfaceAssets struct {
|
||||
Title string
|
||||
Icon string
|
||||
Description string
|
||||
Backgrounds []GameInterfaceBackground
|
||||
}
|
||||
|
||||
type GameInterfaceBackground struct {
|
||||
File string
|
||||
}
|
||||
|
||||
type JSGameInterface struct {
|
||||
GameID string `json:"gameId"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
type Argument struct {
|
||||
Body string
|
||||
Value string
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package sharedDistribution
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type SkirdaSessions []SkirdaSession
|
||||
|
||||
func (sessions SkirdaSessions) FindSessionById(sessionId string) (SkirdaSession, error) {
|
||||
for _, session := range sessions {
|
||||
if session.GetSessionId() == sessionId {
|
||||
return session, nil
|
||||
}
|
||||
}
|
||||
return sessions[0], nil //TODO: Temp error return
|
||||
}
|
||||
|
||||
func (sessions SkirdaSessions) GetInterfaceAssets() []JSSessionInterface {
|
||||
assets := []JSSessionInterface{}
|
||||
|
||||
for _, session := range sessions {
|
||||
assets = append(assets, session.GetInterfaceAsset())
|
||||
}
|
||||
return assets
|
||||
}
|
||||
|
||||
type SkirdaSession struct {
|
||||
SkirdaSessionId string
|
||||
SkirdaGameId string
|
||||
Args []string
|
||||
NegativeArgs []string
|
||||
}
|
||||
|
||||
type JSSessionInterface struct {
|
||||
GameID string `json:"gameId"`
|
||||
SessionId string `json:"sessionId"`
|
||||
Expires time.Time `json:"expires"`
|
||||
Title string `json:"title"`
|
||||
Icon string `json:"icon"`
|
||||
Description string `json:"description"`
|
||||
Backgrounds []string `json:"backgrounds"`
|
||||
}
|
||||
|
||||
func (session SkirdaSession) GetSessionId() string {
|
||||
return session.SkirdaSessionId
|
||||
}
|
||||
|
||||
func (session SkirdaSession) GetGameId() string {
|
||||
return session.SkirdaGameId
|
||||
}
|
||||
|
||||
func (session SkirdaSession) GetInterfaceAsset() JSSessionInterface {
|
||||
// gameId := SkirdaGame.GetSkirdaGameId()
|
||||
return JSSessionInterface{
|
||||
GameID: "",
|
||||
SessionId: "",
|
||||
Expires: time.Time{},
|
||||
Title: "Test Session",
|
||||
Icon: "",
|
||||
Description: "",
|
||||
Backgrounds: []string{},
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package sharedauth
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type InstallIdRegisterReq struct {
|
||||
InstallId InstallId
|
||||
}
|
||||
|
||||
type InstallId string
|
||||
|
||||
func (id InstallId) Validate() bool {
|
||||
//TODO: More checks
|
||||
return id != ""
|
||||
}
|
||||
|
||||
type RedirResp struct {
|
||||
RedirectUrl string `json:"redirecturl"`
|
||||
RequestId string `json:"requestid"`
|
||||
}
|
||||
|
||||
type LauncherSession struct {
|
||||
// Username string
|
||||
// DiscordId string
|
||||
SessionToken string
|
||||
InstallId string
|
||||
Expiry time.Time
|
||||
}
|
||||
|
||||
type ProfileResp struct {
|
||||
Username string
|
||||
}
|
||||
|
||||
type ValidateReq struct {
|
||||
LauncherToken string
|
||||
}
|
||||
|
||||
type ValidateResp struct {
|
||||
}
|
||||
|
||||
type SkirdaUserResp struct {
|
||||
SkirdaUserId string `json:"skirdauser_id"`
|
||||
Username string `json:"username"`
|
||||
Token string `json:"token"`
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package skirdaobjects
|
||||
|
||||
import "skirdaGoLauncher/games/localgame"
|
||||
|
||||
type SkirdaDomainApi struct {
|
||||
SkirdaDomainId string `json:"skirdaDomainId"`
|
||||
Games []localgame.LocalSkirdaGame2 `json:"games"`
|
||||
Events []SkirdaEventApi `json:"events"`
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package skirdaobjects
|
||||
|
||||
type SkirdaEventApi struct {
|
||||
SkirdaEventId string `json:"skirdaevent_id"`
|
||||
SkirdaGameId string `json:"skirdagame_id"`
|
||||
Title string `json:"title"`
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package skirdaobjects
|
||||
|
||||
// type SkirdaGameApi struct {
|
||||
// SkirdaGameId string `json:"skirdagame_id"`
|
||||
// Title string `json:"title"`
|
||||
// Type string `json:"type"`
|
||||
// }
|
3
utils/domain/domainUtils.go
Normal file
3
utils/domain/domainUtils.go
Normal file
@ -0,0 +1,3 @@
|
||||
package domainUtils
|
||||
|
||||
// sessionsModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/sessions"
|
37
utils/game/gameUtils.go
Normal file
37
utils/game/gameUtils.go
Normal file
@ -0,0 +1,37 @@
|
||||
package gameUtils
|
||||
|
||||
import gamesModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/games"
|
||||
|
||||
func FindGameByID(id string, list gamesModels.Games) gamesModels.SteamGame {
|
||||
for _, game := range list.SteamGames {
|
||||
if game.GameId == id {
|
||||
return game
|
||||
}
|
||||
}
|
||||
var temp gamesModels.SteamGame = gamesModels.SteamGame{}
|
||||
return temp
|
||||
}
|
||||
|
||||
// func findSteamGameByID(id string) SteamGame {
|
||||
// for _, game := range localGames.St {
|
||||
// if game.GameId == id {
|
||||
// return game
|
||||
// }
|
||||
// }
|
||||
// var game SteamGame = SteamGame{}
|
||||
// return game
|
||||
// }
|
||||
|
||||
func GetJSGameInterface(game gamesModels.SteamGame) gamesModels.JSGameInterface {
|
||||
newInterface := gamesModels.JSGameInterface{
|
||||
GameID: game.GameId,
|
||||
Title: game.Assets.Title,
|
||||
Icon: game.Assets.Icon,
|
||||
Description: game.Assets.Description,
|
||||
}
|
||||
return newInterface
|
||||
}
|
||||
|
||||
func ArgToStr(a gamesModels.Argument) string {
|
||||
return a.Body + " " + a.Value
|
||||
}
|
18
utils/json/json.go
Normal file
18
utils/json/json.go
Normal file
@ -0,0 +1,18 @@
|
||||
package jsonutils
|
||||
|
||||
//TODO: Rename package
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
)
|
||||
|
||||
func ConvertToJSON(g interface{}) []byte {
|
||||
g_json, err := json.Marshal(g)
|
||||
_ = err //TODO: Check Errors
|
||||
return g_json
|
||||
}
|
||||
|
||||
func ConvertResponseFromJSON(body io.ReadCloser, inter interface{}) {
|
||||
json_err := json.NewDecoder(body).Decode(&inter)
|
||||
_ = json_err //TODO work with errors
|
||||
}
|
43
utils/session/session.go
Normal file
43
utils/session/session.go
Normal file
@ -0,0 +1,43 @@
|
||||
package sessionUtils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
gamesModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/games"
|
||||
sessionsModels "git.gregbrzezinski.com/Skirda/skirdagoutils/models/sessions"
|
||||
)
|
||||
|
||||
func ConvertServerSessionsToJSON(s sessionsModels.Session) []byte {
|
||||
s_json, err := json.Marshal(s)
|
||||
_ = err //TODO: Check Errors
|
||||
return s_json
|
||||
}
|
||||
|
||||
func FindSessionByID(sessionId string, sessions []sessionsModels.Session) sessionsModels.Session {
|
||||
for _, session := range sessions {
|
||||
if session.SessionId == sessionId {
|
||||
return session
|
||||
}
|
||||
}
|
||||
return sessionsModels.Session{ //TODO: Return Errors
|
||||
SessionId: sessionId,
|
||||
GameId: "",
|
||||
Assets: gamesModels.GameInterfaceAssets{},
|
||||
Expires: time.Time{},
|
||||
Arguments: []gamesModels.Argument{},
|
||||
}
|
||||
}
|
||||
|
||||
func GetJSSessionInterface(s sessionsModels.Session) sessionsModels.JSSessionInterface {
|
||||
newInterface := sessionsModels.JSSessionInterface{ //TODO: If session icon empty - use game icon
|
||||
GameID: s.GameId,
|
||||
SessionId: s.SessionId,
|
||||
Expires: time.Time{},
|
||||
Title: s.Assets.Title,
|
||||
Icon: s.Assets.Icon,
|
||||
Description: s.Assets.Description,
|
||||
Backgrounds: []string{}, //TODO: Complete
|
||||
}
|
||||
return newInterface
|
||||
}
|
Loading…
Reference in New Issue
Block a user