-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* SRCDSのquery gatewayの実装 * srcdsへのrcon gatewayの実装 * go mod * mockの追加
- Loading branch information
Shugo Kawamura
authored
Aug 12, 2023
1 parent
9c4bc7b
commit f8dd104
Showing
8 changed files
with
195 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package query | ||
|
||
import ( | ||
"fmt" | ||
"time" | ||
|
||
"github.com/rumblefrog/go-a2s" | ||
) | ||
|
||
type queryAdapter struct { | ||
timeout time.Duration | ||
} | ||
|
||
type QueryAdapter interface { | ||
QueryPlayer(ip string, port int, password string) (uint8, error) | ||
} | ||
|
||
func NewQueryAdapter(timeout time.Duration) QueryAdapter { | ||
return &queryAdapter{ | ||
timeout: timeout, | ||
} | ||
} | ||
|
||
func (q *queryAdapter) QueryPlayer(ip string, port int, password string) (uint8, error) { | ||
ipport := fmt.Sprintf("%s:%d", ip, port) | ||
client, err := a2s.NewClient( | ||
ipport, | ||
a2s.TimeoutOption(q.timeout), | ||
) | ||
if err != nil { | ||
return 0, err | ||
} | ||
defer client.Close() | ||
|
||
player, err := client.QueryPlayer() | ||
if err != nil { | ||
return 0, err | ||
} | ||
return player.Count, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
package query | ||
|
||
//go:generate mockgen -source=./query.go -destination=./query_mock/mock_query.go |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package rcon | ||
|
||
import ( | ||
"fmt" | ||
|
||
"github.com/FlowingSPDG/go-steam" | ||
) | ||
|
||
type RCONAdapter interface { | ||
Execute(ip string, port int, password string, cmd string) (string, error) | ||
} | ||
|
||
type rconAdapter struct { | ||
} | ||
|
||
func NewRCONAdapter() RCONAdapter { | ||
return &rconAdapter{} | ||
} | ||
|
||
func (r *rconAdapter) Execute(ip string, port int, password string, cmd string) (string, error) { | ||
ipport := fmt.Sprintf("%s:%d", ip, port) | ||
connectOptions := &steam.ConnectOptions{RCONPassword: password} | ||
rcon, err := steam.Connect(ipport, connectOptions) | ||
if err != nil { | ||
return "", err | ||
} | ||
defer rcon.Close() | ||
|
||
resp, err := rcon.Send(cmd) | ||
if err != nil { | ||
return "", err | ||
} | ||
return resp, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
package rcon | ||
|
||
//go:generate mockgen -source=./rcon.go -destination=./rcon_mock/mock_rcon.go |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters