Use mod vendor for vendored directory (backwards compatible)
parent
4fb4b7aa6c
commit
51062863a5
@ -0,0 +1,3 @@
|
||||
.idea
|
||||
/test
|
||||
app.yaml
|
@ -0,0 +1,154 @@
|
||||
# gitter
|
||||
Gitter API in Go
|
||||
https://developer.gitter.im
|
||||
|
||||
#### Install
|
||||
|
||||
`go get github.com/sromku/go-gitter`
|
||||
|
||||
- [Initialize](#initialize)
|
||||
- [Users](#users)
|
||||
- [Rooms](#rooms)
|
||||
- [Messages](#messages)
|
||||
- [Stream](#stream)
|
||||
- [Faye (Experimental)](#faye-experimental)
|
||||
- [Debug](#debug)
|
||||
- [App Engine](#app-engine)
|
||||
|
||||
##### Initialize
|
||||
``` Go
|
||||
api := gitter.New("YOUR_ACCESS_TOKEN")
|
||||
```
|
||||
|
||||
##### Users
|
||||
|
||||
- Get current user
|
||||
|
||||
``` Go
|
||||
user, err := api.GetUser()
|
||||
```
|
||||
|
||||
##### Rooms
|
||||
|
||||
- Get all rooms
|
||||
``` Go
|
||||
rooms, err := api.GetRooms()
|
||||
```
|
||||
|
||||
- Get room by id
|
||||
``` Go
|
||||
room, err := api.GetRoom("roomID")
|
||||
```
|
||||
|
||||
- Get rooms of some user
|
||||
``` Go
|
||||
rooms, err := api.GetRooms("userID")
|
||||
```
|
||||
|
||||
- Join room
|
||||
``` Go
|
||||
room, err := api.JoinRoom("roomID", "userID")
|
||||
```
|
||||
|
||||
- Leave room
|
||||
``` Go
|
||||
room, err := api.LeaveRoom("roomID", "userID")
|
||||
```
|
||||
|
||||
- Get room id
|
||||
``` Go
|
||||
id, err := api.GetRoomId("room/uri")
|
||||
```
|
||||
|
||||
- Search gitter rooms
|
||||
``` Go
|
||||
rooms, err := api.SearchRooms("search/string")
|
||||
```
|
||||
##### Messages
|
||||
|
||||
- Get messages of room
|
||||
``` Go
|
||||
messages, err := api.GetMessages("roomID", nil)
|
||||
```
|
||||
|
||||
- Get one message
|
||||
``` Go
|
||||
message, err := api.GetMessage("roomID", "messageID")
|
||||
```
|
||||
|
||||
- Send message
|
||||
``` Go
|
||||
err := api.SendMessage("roomID", "free chat text")
|
||||
```
|
||||
|
||||
##### Stream
|
||||
|
||||
Create stream to the room and start listening to incoming messages
|
||||
|
||||
``` Go
|
||||
stream := api.Stream(room.Id)
|
||||
go api.Listen(stream)
|
||||
|
||||
for {
|
||||
event := <-stream.Event
|
||||
switch ev := event.Data.(type) {
|
||||
case *gitter.MessageReceived:
|
||||
fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
|
||||
case *gitter.GitterConnectionClosed:
|
||||
// connection was closed
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Close stream connection
|
||||
|
||||
``` Go
|
||||
stream.Close()
|
||||
```
|
||||
|
||||
##### Faye (Experimental)
|
||||
|
||||
``` Go
|
||||
faye := api.Faye(room.ID)
|
||||
go faye.Listen()
|
||||
|
||||
for {
|
||||
event := <-faye.Event
|
||||
switch ev := event.Data.(type) {
|
||||
case *gitter.MessageReceived:
|
||||
fmt.Println(ev.Message.From.Username + ": " + ev.Message.Text)
|
||||
case *gitter.GitterConnectionClosed: //this one is never called in Faye
|
||||
// connection was closed
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
##### Debug
|
||||
|
||||
You can print the internal errors by enabling debug to true
|
||||
|
||||
``` Go
|
||||
api.SetDebug(true, nil)
|
||||
```
|
||||
|
||||
You can also define your own `io.Writer` in case you want to persist the logs somewhere.
|
||||
For example keeping the errors on file
|
||||
|
||||
``` Go
|
||||
logFile, err := os.Create("gitter.log")
|
||||
api.SetDebug(true, logFile)
|
||||
```
|
||||
|
||||
##### App Engine
|
||||
|
||||
Initialize app engine client and continue as usual
|
||||
|
||||
``` Go
|
||||
c := appengine.NewContext(r)
|
||||
client := urlfetch.Client(c)
|
||||
|
||||
api := gitter.New("YOUR_ACCESS_TOKEN")
|
||||
api.SetClient(client)
|
||||
```
|
||||
|
||||
[Documentation](https://godoc.org/github.com/sromku/go-gitter)
|
@ -1,27 +0,0 @@
|
||||
// Copyright (c) 2009 Thomas Jager. All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,578 +0,0 @@
|
||||
// Copyright 2009 Thomas Jager <mail@jager.no> All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
/*
|
||||
This package provides an event based IRC client library. It allows to
|
||||
register callbacks for the events you need to handle. Its features
|
||||
include handling standard CTCP, reconnecting on errors and detecting
|
||||
stones servers.
|
||||
Details of the IRC protocol can be found in the following RFCs:
|
||||
https://tools.ietf.org/html/rfc1459
|
||||
https://tools.ietf.org/html/rfc2810
|
||||
https://tools.ietf.org/html/rfc2811
|
||||
https://tools.ietf.org/html/rfc2812
|
||||
https://tools.ietf.org/html/rfc2813
|
||||
The details of the client-to-client protocol (CTCP) can be found here: http://www.irchelp.org/irchelp/rfc/ctcpspec.html
|
||||
*/
|
||||
|
||||
package irc
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
VERSION = "go-ircevent v2.1"
|
||||
)
|
||||
|
||||
var ErrDisconnected = errors.New("Disconnect Called")
|
||||
|
||||
// Read data from a connection. To be used as a goroutine.
|
||||
func (irc *Connection) readLoop() {
|
||||
defer irc.Done()
|
||||
br := bufio.NewReaderSize(irc.socket, 512)
|
||||
|
||||
errChan := irc.ErrorChan()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-irc.end:
|
||||
return
|
||||
default:
|
||||
// Set a read deadline based on the combined timeout and ping frequency
|
||||
// We should ALWAYS have received a response from the server within the timeout
|
||||
// after our own pings
|
||||
if irc.socket != nil {
|
||||
irc.socket.SetReadDeadline(time.Now().Add(irc.Timeout + irc.PingFreq))
|
||||
}
|
||||
|
||||
msg, err := br.ReadString('\n')
|
||||
|
||||
// We got past our blocking read, so bin timeout
|
||||
if irc.socket != nil {
|
||||
var zero time.Time
|
||||
irc.socket.SetReadDeadline(zero)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
errChan <- err
|
||||
return
|
||||
}
|
||||
|
||||
if irc.Debug {
|
||||
irc.Log.Printf("<-- %s\n", strings.TrimSpace(msg))
|
||||
}
|
||||
|
||||
irc.Lock()
|
||||
irc.lastMessage = time.Now()
|
||||
irc.Unlock()
|
||||
event, err := parseToEvent(msg)
|
||||
event.Connection = irc
|
||||
if err == nil {
|
||||
/* XXX: len(args) == 0: args should be empty */
|
||||
irc.RunCallbacks(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Unescape tag values as defined in the IRCv3.2 message tags spec
|
||||
// http://ircv3.net/specs/core/message-tags-3.2.html
|
||||
func unescapeTagValue(value string) string {
|
||||
value = strings.Replace(value, "\\:", ";", -1)
|
||||
value = strings.Replace(value, "\\s", " ", -1)
|
||||
value = strings.Replace(value, "\\\\", "\\", -1)
|
||||
value = strings.Replace(value, "\\r", "\r", -1)
|
||||
value = strings.Replace(value, "\\n", "\n", -1)
|
||||
return value
|
||||
}
|
||||
|
||||
//Parse raw irc messages
|
||||
func parseToEvent(msg string) (*Event, error) {
|
||||
msg = strings.TrimSuffix(msg, "\n") //Remove \r\n
|
||||
msg = strings.TrimSuffix(msg, "\r")
|
||||
event := &Event{Raw: msg}
|
||||
if len(msg) < 5 {
|
||||
return nil, errors.New("Malformed msg from server")
|
||||
}
|
||||
|
||||
if msg[0] == '@' {
|
||||
// IRCv3 Message Tags
|
||||
if i := strings.Index(msg, " "); i > -1 {
|
||||
event.Tags = make(map[string]string)
|
||||
tags := strings.Split(msg[1:i], ";")
|
||||
for _, data := range tags {
|
||||
parts := strings.SplitN(data, "=", 2)
|
||||
if len(parts) == 1 {
|
||||
event.Tags[parts[0]] = ""
|
||||
} else {
|
||||
event.Tags[parts[0]] = unescapeTagValue(parts[1])
|
||||
}
|
||||
}
|
||||
msg = msg[i+1 : len(msg)]
|
||||
} else {
|
||||
return nil, errors.New("Malformed msg from server")
|
||||
}
|
||||
}
|
||||
|
||||
if msg[0] == ':' {
|
||||
if i := strings.Index(msg, " "); i > -1 {
|
||||
event.Source = msg[1:i]
|
||||
msg = msg[i+1 : len(msg)]
|
||||
|
||||
} else {
|
||||
return nil, errors.New("Malformed msg from server")
|
||||
}
|
||||
|
||||
if i, j := strings.Index(event.Source, "!"), strings.Index(event.Source, "@"); i > -1 && j > -1 && i < j {
|
||||
event.Nick = event.Source[0:i]
|
||||
event.User = event.Source[i+1 : j]
|
||||
event.Host = event.Source[j+1 : len(event.Source)]
|
||||
}
|
||||
}
|
||||
|
||||
split := strings.SplitN(msg, " :", 2)
|
||||
args := strings.Split(split[0], " ")
|
||||
event.Code = strings.ToUpper(args[0])
|
||||
event.Arguments = args[1:]
|
||||
if len(split) > 1 {
|
||||
event.Arguments = append(event.Arguments, split[1])
|
||||
}
|
||||
return event, nil
|
||||
|
||||
}
|
||||
|
||||
// Loop to write to a connection. To be used as a goroutine.
|
||||
func (irc *Connection) writeLoop() {
|
||||
defer irc.Done()
|
||||
errChan := irc.ErrorChan()
|
||||
for {
|
||||
select {
|
||||
case <-irc.end:
|
||||
return
|
||||
case b, ok := <-irc.pwrite:
|
||||
if !ok || b == "" || irc.socket == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if irc.Debug {
|
||||
irc.Log.Printf("--> %s\n", strings.TrimSpace(b))
|
||||
}
|
||||
|
||||
// Set a write deadline based on the time out
|
||||
irc.socket.SetWriteDeadline(time.Now().Add(irc.Timeout))
|
||||
|
||||
_, err := irc.socket.Write([]byte(b))
|
||||
|
||||
// Past blocking write, bin timeout
|
||||
var zero time.Time
|
||||
irc.socket.SetWriteDeadline(zero)
|
||||
|
||||
if err != nil {
|
||||
errChan <- err
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Pings the server if we have not received any messages for 5 minutes
|
||||
// to keep the connection alive. To be used as a goroutine.
|
||||
func (irc *Connection) pingLoop() {
|
||||
defer irc.Done()
|
||||
ticker := time.NewTicker(1 * time.Minute) // Tick every minute for monitoring
|
||||
ticker2 := time.NewTicker(irc.PingFreq) // Tick at the ping frequency.
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
//Ping if we haven't received anything from the server within the keep alive period
|
||||
if time.Since(irc.lastMessage) >= irc.KeepAlive {
|
||||
irc.SendRawf("PING %d", time.Now().UnixNano())
|
||||
}
|
||||
case <-ticker2.C:
|
||||
//Ping at the ping frequency
|
||||
irc.SendRawf("PING %d", time.Now().UnixNano())
|
||||
//Try to recapture nickname if it's not as configured.
|
||||
irc.Lock()
|
||||
if irc.nick != irc.nickcurrent {
|
||||
irc.nickcurrent = irc.nick
|
||||
irc.SendRawf("NICK %s", irc.nick)
|
||||
}
|
||||
irc.Unlock()
|
||||
case <-irc.end:
|
||||
ticker.Stop()
|
||||
ticker2.Stop()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (irc *Connection) isQuitting() bool {
|
||||
irc.Lock()
|
||||
defer irc.Unlock()
|
||||
return irc.quit
|
||||
}
|
||||
|
||||
// Main loop to control the connection.
|
||||
func (irc *Connection) Loop() {
|
||||
errChan := irc.ErrorChan()
|
||||
connTime := time.Now()
|
||||
for !irc.isQuitting() {
|
||||
err := <-errChan
|
||||
close(irc.end)
|
||||
irc.Wait()
|
||||
for !irc.isQuitting() {
|
||||
irc.Log.Printf("Error, disconnected: %s\n", err)
|
||||
if time.Now().Sub(connTime) < time.Second*5 {
|
||||
irc.Log.Println("Rreconnecting too fast, sleeping 60 seconds")
|
||||
time.Sleep(60 * time.Second)
|
||||
}
|
||||
if err = irc.Reconnect(); err != nil {
|
||||
irc.Log.Printf("Error while reconnecting: %s\n", err)
|
||||
time.Sleep(60 * time.Second)
|
||||
} else {
|
||||
errChan = irc.ErrorChan()
|
||||
break
|
||||
}
|
||||
}
|
||||
connTime = time.Now()
|
||||
}
|
||||
}
|
||||
|
||||
// Quit the current connection and disconnect from the server
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.1.6
|
||||
func (irc *Connection) Quit() {
|
||||
quit := "QUIT"
|
||||
|
||||
if irc.QuitMessage != "" {
|
||||
quit = fmt.Sprintf("QUIT :%s", irc.QuitMessage)
|
||||
}
|
||||
|
||||
irc.SendRaw(quit)
|
||||
irc.Lock()
|
||||
irc.stopped = true
|
||||
irc.quit = true
|
||||
irc.Unlock()
|
||||
}
|
||||
|
||||
// Use the connection to join a given channel.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.2.1
|
||||
func (irc *Connection) Join(channel string) {
|
||||
irc.pwrite <- fmt.Sprintf("JOIN %s\r\n", channel)
|
||||
}
|
||||
|
||||
// Leave a given channel.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.2.2
|
||||
func (irc *Connection) Part(channel string) {
|
||||
irc.pwrite <- fmt.Sprintf("PART %s\r\n", channel)
|
||||
}
|
||||
|
||||
// Send a notification to a nickname. This is similar to Privmsg but must not receive replies.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.4.2
|
||||
func (irc *Connection) Notice(target, message string) {
|
||||
irc.pwrite <- fmt.Sprintf("NOTICE %s :%s\r\n", target, message)
|
||||
}
|
||||
|
||||
// Send a formated notification to a nickname.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.4.2
|
||||
func (irc *Connection) Noticef(target, format string, a ...interface{}) {
|
||||
irc.Notice(target, fmt.Sprintf(format, a...))
|
||||
}
|
||||
|
||||
// Send (action) message to a target (channel or nickname).
|
||||
// No clear RFC on this one...
|
||||
func (irc *Connection) Action(target, message string) {
|
||||
irc.pwrite <- fmt.Sprintf("PRIVMSG %s :\001ACTION %s\001\r\n", target, message)
|
||||
}
|
||||
|
||||
// Send formatted (action) message to a target (channel or nickname).
|
||||
func (irc *Connection) Actionf(target, format string, a ...interface{}) {
|
||||
irc.Action(target, fmt.Sprintf(format, a...))
|
||||
}
|
||||
|
||||
// Send (private) message to a target (channel or nickname).
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.4.1
|
||||
func (irc *Connection) Privmsg(target, message string) {
|
||||
irc.pwrite <- fmt.Sprintf("PRIVMSG %s :%s\r\n", target, message)
|
||||
}
|
||||
|
||||
// Send formated string to specified target (channel or nickname).
|
||||
func (irc *Connection) Privmsgf(target, format string, a ...interface{}) {
|
||||
irc.Privmsg(target, fmt.Sprintf(format, a...))
|
||||
}
|
||||
|
||||
// Kick <user> from <channel> with <msg>. For no message, pass empty string ("")
|
||||
func (irc *Connection) Kick(user, channel, msg string) {
|
||||
var cmd bytes.Buffer
|
||||
cmd.WriteString(fmt.Sprintf("KICK %s %s", channel, user))
|
||||
if msg != "" {
|
||||
cmd.WriteString(fmt.Sprintf(" :%s", msg))
|
||||
}
|
||||
cmd.WriteString("\r\n")
|
||||
irc.pwrite <- cmd.String()
|
||||
}
|
||||
|
||||
// Kick all <users> from <channel> with <msg>. For no message, pass
|
||||
// empty string ("")
|
||||
func (irc *Connection) MultiKick(users []string, channel string, msg string) {
|
||||
var cmd bytes.Buffer
|
||||
cmd.WriteString(fmt.Sprintf("KICK %s %s", channel, strings.Join(users, ",")))
|
||||
if msg != "" {
|
||||
cmd.WriteString(fmt.Sprintf(" :%s", msg))
|
||||
}
|
||||
cmd.WriteString("\r\n")
|
||||
irc.pwrite <- cmd.String()
|
||||
}
|
||||
|
||||
// Send raw string.
|
||||
func (irc *Connection) SendRaw(message string) {
|
||||
irc.pwrite <- message + "\r\n"
|
||||
}
|
||||
|
||||
// Send raw formated string.
|
||||
func (irc *Connection) SendRawf(format string, a ...interface{}) {
|
||||
irc.SendRaw(fmt.Sprintf(format, a...))
|
||||
}
|
||||
|
||||
// Set (new) nickname.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.1.2
|
||||
func (irc *Connection) Nick(n string) {
|
||||
irc.nick = n
|
||||
irc.SendRawf("NICK %s", n)
|
||||
}
|
||||
|
||||
// Determine nick currently used with the connection.
|
||||
func (irc *Connection) GetNick() string {
|
||||
return irc.nickcurrent
|
||||
}
|
||||
|
||||
// Query information about a particular nickname.
|
||||
// RFC 1459: https://tools.ietf.org/html/rfc1459#section-4.5.2
|
||||
func (irc *Connection) Whois(nick string) {
|
||||
irc.SendRawf("WHOIS %s", nick)
|
||||
}
|
||||
|
||||
// Query information about a given nickname in the server.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.5.1
|
||||
func (irc *Connection) Who(nick string) {
|
||||
irc.SendRawf("WHO %s", nick)
|
||||
}
|
||||
|
||||
// Set different modes for a target (channel or nickname).
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.2.3
|
||||
func (irc *Connection) Mode(target string, modestring ...string) {
|
||||
if len(modestring) > 0 {
|
||||
mode := strings.Join(modestring, " ")
|
||||
irc.SendRawf("MODE %s %s", target, mode)
|
||||
return
|
||||
}
|
||||
irc.SendRawf("MODE %s", target)
|
||||
}
|
||||
|
||||
func (irc *Connection) ErrorChan() chan error {
|
||||
return irc.Error
|
||||
}
|
||||
|
||||
// Returns true if the connection is connected to an IRC server.
|
||||
func (irc *Connection) Connected() bool {
|
||||
return !irc.stopped
|
||||
}
|
||||
|
||||
// A disconnect sends all buffered messages (if possible),
|
||||
// stops all goroutines and then closes the socket.
|
||||
func (irc *Connection) Disconnect() {
|
||||
if irc.socket != nil {
|
||||
irc.socket.Close()
|
||||
}
|
||||
irc.ErrorChan() <- ErrDisconnected
|
||||
}
|
||||
|
||||
// Reconnect to a server using the current connection.
|
||||
func (irc *Connection) Reconnect() error {
|
||||
irc.end = make(chan struct{})
|
||||
return irc.Connect(irc.Server)
|
||||
}
|
||||
|
||||
// Connect to a given server using the current connection configuration.
|
||||
// This function also takes care of identification if a password is provided.
|
||||
// RFC 1459 details: https://tools.ietf.org/html/rfc1459#section-4.1
|
||||
func (irc *Connection) Connect(server string) error {
|
||||
irc.Server = server
|
||||
// mark Server as stopped since there can be an error during connect
|
||||
irc.stopped = true
|
||||
|
||||
// make sure everything is ready for connection
|
||||
if len(irc.Server) == 0 {
|
||||
return errors.New("empty 'server'")
|
||||
}
|
||||
if strings.Count(irc.Server, ":") != 1 {
|
||||
return errors.New("wrong number of ':' in address")
|
||||
}
|
||||
if strings.Index(irc.Server, ":") == 0 {
|
||||
return errors.New("hostname is missing")
|
||||
}
|
||||
if strings.Index(irc.Server, ":") == len(irc.Server)-1 {
|
||||
return errors.New("port missing")
|
||||
}
|
||||
// check for valid range
|
||||
ports := strings.Split(irc.Server, ":")[1]
|
||||
port, err := strconv.Atoi(ports)
|
||||
if err != nil {
|
||||
return errors.New("extracting port failed")
|
||||
}
|
||||
if !((port >= 0) && (port <= 65535)) {
|
||||
return errors.New("port number outside valid range")
|
||||
}
|
||||
if irc.Log == nil {
|
||||
return errors.New("'Log' points to nil")
|
||||
}
|
||||
if len(irc.nick) == 0 {
|
||||
return errors.New("empty 'nick'")
|
||||
}
|
||||
if len(irc.user) == 0 {
|
||||
return errors.New("empty 'user'")
|
||||
}
|
||||
|
||||
if irc.UseTLS {
|
||||
dialer := &net.Dialer{Timeout: irc.Timeout}
|
||||
irc.socket, err = tls.DialWithDialer(dialer, "tcp", irc.Server, irc.TLSConfig)
|
||||
} else {
|
||||
irc.socket, err = net.DialTimeout("tcp", irc.Server, irc.Timeout)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
irc.stopped = false
|
||||
irc.Log.Printf("Connected to %s (%s)\n", irc.Server, irc.socket.RemoteAddr())
|
||||
|
||||
irc.pwrite = make(chan string, 10)
|
||||
irc.Error = make(chan error, 2)
|
||||
irc.Add(3)
|
||||
go irc.readLoop()
|
||||
go irc.writeLoop()
|
||||
go irc.pingLoop()
|
||||
if len(irc.Password) > 0 {
|
||||
irc.pwrite <- fmt.Sprintf("PASS %s\r\n", irc.Password)
|
||||
}
|
||||
|
||||
err = irc.negotiateCaps()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
irc.pwrite <- fmt.Sprintf("NICK %s\r\n", irc.nick)
|
||||
irc.pwrite <- fmt.Sprintf("USER %s 0.0.0.0 0.0.0.0 :%s\r\n", irc.user, irc.user)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Negotiate IRCv3 capabilities
|
||||
func (irc *Connection) negotiateCaps() error {
|
||||
saslResChan := make(chan *SASLResult)
|
||||
if irc.UseSASL {
|
||||
irc.RequestCaps = append(irc.RequestCaps, "sasl")
|
||||
irc.setupSASLCallbacks(saslResChan)
|
||||
}
|
||||
|
||||
if len(irc.RequestCaps) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
cap_chan := make(chan bool, len(irc.RequestCaps))
|
||||
irc.AddCallback("CAP", func(e *Event) {
|
||||
if len(e.Arguments) != 3 {
|
||||
return
|
||||
}
|
||||
command := e.Arguments[1]
|
||||
|
||||
if command == "LS" {
|
||||
missing_caps := len(irc.RequestCaps)
|
||||
for _, cap_name := range strings.Split(e.Arguments[2], " ") {
|
||||
for _, req_cap := range irc.RequestCaps {
|
||||
if cap_name == req_cap {
|
||||
irc.pwrite <- fmt.Sprintf("CAP REQ :%s\r\n", cap_name)
|
||||
missing_caps--
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < missing_caps; i++ {
|
||||
cap_chan <- true
|
||||
}
|
||||
} else if command == "ACK" || command == "NAK" {
|
||||
for _, cap_name := range strings.Split(strings.TrimSpace(e.Arguments[2]), " ") {
|
||||
if cap_name == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
if command == "ACK" {
|
||||
irc.AcknowledgedCaps = append(irc.AcknowledgedCaps, cap_name)
|
||||
}
|
||||
cap_chan <- true
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
irc.pwrite <- "CAP LS\r\n"
|
||||
|
||||
if irc.UseSASL {
|
||||
select {
|
||||
case res := <-saslResChan:
|
||||
if res.Failed {
|
||||
close(saslResChan)
|
||||
return res.Err
|
||||
}
|
||||
case <-time.After(time.Second * 15):
|
||||
close(saslResChan)
|
||||
return errors.New("SASL setup timed out. This shouldn't happen.")
|
||||
}
|
||||
}
|
||||
|
||||
// Wait for all capabilities to be ACKed or NAKed before ending negotiation
|
||||
for i := 0; i < len(irc.RequestCaps); i++ {
|
||||
<-cap_chan
|
||||
}
|
||||
irc.pwrite <- fmt.Sprintf("CAP END\r\n")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Create a connection with the (publicly visible) nickname and username.
|
||||
// The nickname is later used to address the user. Returns nil if nick
|
||||
// or user are empty.
|
||||
func IRC(nick, user string) *Connection {
|
||||
// catch invalid values
|
||||
if len(nick) == 0 {
|
||||
return nil
|
||||
}
|
||||
if len(user) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
irc := &Connection{
|
||||
nick: nick,
|
||||
nickcurrent: nick,
|
||||
user: user,
|
||||
Log: log.New(os.Stdout, "", log.LstdFlags),
|
||||
end: make(chan struct{}),
|
||||
Version: VERSION,
|
||||
KeepAlive: 4 * time.Minute,
|
||||
Timeout: 1 * time.Minute,
|
||||
PingFreq: 15 * time.Minute,
|
||||
SASLMech: "PLAIN",
|
||||
QuitMessage: "",
|
||||
}
|
||||
irc.setupCallbacks()
|
||||
return irc
|
||||
}
|
@ -1,222 +0,0 @@
|
||||
package irc
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Register a callback to a connection and event code. A callback is a function
|
||||
// which takes only an Event pointer as parameter. Valid event codes are all
|
||||
// IRC/CTCP commands and error/response codes. This function returns the ID of
|
||||
// the registered callback for later management.
|
||||
func (irc *Connection) AddCallback(eventcode string, callback func(*Event)) int {
|
||||
eventcode = strings.ToUpper(eventcode)
|
||||
id := 0
|
||||
if _, ok := irc.events[eventcode]; !ok {
|
||||
irc.events[eventcode] = make(map[int]func(*Event))
|
||||
id = 0
|
||||
} else {
|
||||
id = len(irc.events[eventcode])
|
||||
}
|
||||
irc.events[eventcode][id] = callback
|
||||
return id
|
||||
}
|
||||
|
||||
// Remove callback i (ID) from the given event code. This functions returns
|
||||
// true upon success, false if any error occurs.
|
||||
func (irc *Connection) RemoveCallback(eventcode string, i int) bool {
|
||||
eventcode = strings.ToUpper(eventcode)
|
||||
|
||||
if event, ok := irc.events[eventcode]; ok {
|
||||
if _, ok := event[i]; ok {
|
||||
delete(irc.events[eventcode], i)
|
||||
return true
|
||||
}
|
||||
irc.Log.Printf("Event found, but no callback found at id %d\n", i)
|
||||
return false
|
||||
}
|
||||
|
||||
irc.Log.Println("Event not found")
|
||||
return false
|
||||
}
|
||||
|
||||
// Remove all callbacks from a given event code. It returns true
|
||||
// if given event code is found and cleared.
|
||||
func (irc *Connection) ClearCallback(eventcode string) bool {
|
||||
eventcode = strings.ToUpper(eventcode)
|
||||
|
||||
if _, ok := irc.events[eventcode]; ok {
|
||||
irc.events[eventcode] = make(map[int]func(*Event))
|
||||
return true
|
||||
}
|
||||
|
||||
irc.Log.Println("Event not found")
|
||||
return false
|
||||
}
|
||||
|
||||
// Replace callback i (ID) associated with a given event code with a new callback function.
|
||||
func (irc *Connection) ReplaceCallback(eventcode string, i int, callback func(*Event)) {
|
||||
eventcode = strings.ToUpper(eventcode)
|
||||
|
||||
if event, ok := irc.events[eventcode]; ok {
|
||||
if _, ok := event[i]; ok {
|
||||
event[i] = callback
|
||||
return
|
||||
}
|
||||
irc.Log.Printf("Event found, but no callback found at id %d\n", i)
|
||||
}
|
||||
irc.Log.Printf("Event not found. Use AddCallBack\n")
|
||||
}
|
||||
|
||||
// Execute all callbacks associated with a given event.
|
||||
func (irc *Connection) RunCallbacks(event *Event) {
|
||||
msg := event.Message()
|
||||
if event.Code == "PRIVMSG" && len(msg) > 2 && msg[0] == '\x01' {
|
||||
event.Code = "CTCP" //Unknown CTCP
|
||||
|
||||
if i := strings.LastIndex(msg, "\x01"); i > 0 {
|
||||
msg = msg[1:i]
|
||||
} else {
|
||||
irc.Log.Printf("Invalid CTCP Message: %s\n", strconv.Quote(msg))
|
||||
return
|
||||
}
|
||||
|
||||
if msg == "VERSION" {
|
||||
event.Code = "CTCP_VERSION"
|
||||
|
||||
} else if msg == "TIME" {
|
||||
event.Code = "CTCP_TIME"
|
||||
|
||||
} else if strings.HasPrefix(msg, "PING") {
|
||||
event.Code = "CTCP_PING"
|
||||
|
||||
} else if msg == "USERINFO" {
|
||||
event.Code = "CTCP_USERINFO"
|
||||
|
||||
} else if msg == "CLIENTINFO" {
|
||||
event.Code = "CTCP_CLIENTINFO"
|
||||
|
||||
} else if strings.HasPrefix(msg, "ACTION") {
|
||||
event.Code = "CTCP_ACTION"
|
||||
if len(msg) > 6 {
|
||||
msg = msg[7:]
|
||||
} else {
|
||||
msg = ""
|
||||
}
|
||||
}
|
||||
|
||||
event.Arguments[len(event.Arguments)-1] = msg
|
||||
}
|
||||
|
||||
if callbacks, ok := irc.events[event.Code]; ok {
|
||||
if irc.VerboseCallbackHandler {
|
||||
irc.Log.Printf("%v (%v) >> %#v\n", event.Code, len(callbacks), event)
|
||||
}
|
||||
|
||||
for _, callback := range callbacks {
|
||||
callback(event)
|
||||
}
|
||||
} else if irc.VerboseCallbackHandler {
|
||||
irc.Log.Printf("%v (0) >> %#v\n", event.Code, event)
|
||||
}
|
||||
|
||||
if callbacks, ok := irc.events["*"]; ok {
|
||||
if irc.VerboseCallbackHandler {
|
||||
irc.Log.Printf("%v (0) >> %#v\n", event.Code, event)
|
||||
}
|
||||
|
||||
for _, callback := range callbacks {
|
||||
callback(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set up some initial callbacks to handle the IRC/CTCP protocol.
|
||||
func (irc *Connection) setupCallbacks() {
|
||||
irc.events = make(map[string]map[int]func(*Event))
|
||||
|
||||
//Handle error events.
|
||||
irc.AddCallback("ERROR", func(e *Event) { irc.Disconnect() })
|
||||
|
||||
//Handle ping events
|
||||
irc.AddCallback("PING", func(e *Event) { irc.SendRaw("PONG :" + e.Message()) })
|
||||
|
||||
//Version handler
|
||||
irc.AddCallback("CTCP_VERSION", func(e *Event) {
|
||||
irc.SendRawf("NOTICE %s :\x01VERSION %s\x01", e.Nick, irc.Version)
|
||||
})
|
||||
|
||||
irc.AddCallback("CTCP_USERINFO", func(e *Event) {
|
||||
irc.SendRawf("NOTICE %s :\x01USERINFO %s\x01", e.Nick, irc.user)
|
||||
})
|
||||
|
||||
irc.AddCallback("CTCP_CLIENTINFO", func(e *Event) {
|
||||
irc.SendRawf("NOTICE %s :\x01CLIENTINFO PING VERSION TIME USERINFO CLIENTINFO\x01", e.Nick)
|
||||
})
|
||||
|
||||
irc.AddCallback("CTCP_TIME", func(e *Event) {
|
||||
ltime := time.Now()
|
||||
irc.SendRawf("NOTICE %s :\x01TIME %s\x01", e.Nick, ltime.String())
|
||||
})
|
||||
|
||||
irc.AddCallback("CTCP_PING", func(e *Event) { irc.SendRawf("NOTICE %s :\x01%s\x01", e.Nick, e.Message()) })
|
||||
|
||||
// 437: ERR_UNAVAILRESOURCE "<nick/channel> :Nick/channel is temporarily unavailable"
|
||||
// Add a _ to current nick. If irc.nickcurrent is empty this cannot
|
||||
// work. It has to be set somewhere first in case the nick is already
|
||||
// taken or unavailable from the beginning.
|
||||
irc.AddCallback("437", func(e *Event) {
|
||||
// If irc.nickcurrent hasn't been set yet, set to irc.nick
|
||||
if irc.nickcurrent == "" {
|
||||
irc.nickcurrent = irc.nick
|
||||
}
|
||||
|
||||
if len(irc.nickcurrent) > 8 {
|
||||
irc.nickcurrent = "_" + irc.nickcurrent
|
||||
} else {
|
||||
irc.nickcurrent = irc.nickcurrent + "_"
|
||||
}
|
||||
irc.SendRawf("NICK %s", irc.nickcurrent)
|
||||
})
|
||||
|
||||
// 433: ERR_NICKNAMEINUSE "<nick> :Nickname is already in use"
|
||||
// Add a _ to current nick.
|
||||
irc.AddCallback("433", func(e *Event) {
|
||||
// If irc.nickcurrent hasn't been set yet, set to irc.nick
|
||||
if irc.nickcurrent == "" {
|
||||
irc.nickcurrent = irc.nick
|
||||
}
|
||||
|
||||
if len(irc.nickcurrent) > 8 {
|
||||
irc.nickcurrent = "_" + irc.nickcurrent
|
||||
} else {
|
||||
irc.nickcurrent = irc.nickcurrent + "_"
|
||||
}
|
||||
irc.SendRawf("NICK %s", irc.nickcurrent)
|
||||
})
|
||||
|
||||
irc.AddCallback("PONG", func(e *Event) {
|
||||
ns, _ := strconv.ParseInt(e.Message(), 10, 64)
|
||||
delta := time.Duration(time.Now().UnixNano() - ns)
|
||||
if irc.Debug {
|
||||
irc.Log.Printf("Lag: %.3f s\n", delta.Seconds())
|
||||
}
|
||||
})
|
||||
|
||||
// NICK Define a nickname.
|
||||
// Set irc.nickcurrent to the new nick actually used in this connection.
|
||||
irc.AddCallback("NICK", func(e *Event) {
|
||||
if e.Nick == irc.nick {
|
||||
irc.nickcurrent = e.Message()
|
||||
}
|
||||
})
|
||||
|
||||
// 1: RPL_WELCOME "Welcome to the Internet Relay Network <nick>!<user>@<host>"
|
||||
// Set irc.nickcurrent to the actually used nick in this connection.
|
||||
irc.AddCallback("001", func(e *Event) {
|
||||
irc.Lock()
|
||||
irc.nickcurrent = e.Arguments[0]
|
||||
irc.Unlock()
|
||||
})
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package irc
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type SASLResult struct {
|
||||
Failed bool
|
||||
Err error
|
||||
}
|
||||
|
||||
func (irc *Connection) setupSASLCallbacks(result chan<- *SASLResult) {
|
||||
irc.AddCallback("CAP", func(e *Event) {
|
||||
if len(e.Arguments) == 3 {
|
||||
if e.Arguments[1] == "LS" {
|
||||
if !strings.Contains(e.Arguments[2], "sasl") {
|
||||
result <- &SASLResult{true, errors.New("no SASL capability " + e.Arguments[2])}
|
||||
}
|
||||
}
|
||||
if e.Arguments[1] == "ACK" {
|
||||
if irc.SASLMech != "PLAIN" {
|
||||
result <- &SASLResult{true, errors.New("only PLAIN is supported")}
|
||||
}
|
||||
irc.SendRaw("AUTHENTICATE " + irc.SASLMech)
|
||||
}
|
||||
}
|
||||
})
|
||||
irc.AddCallback("AUTHENTICATE", func(e *Event) {
|
||||
str := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s\x00%s\x00%s", irc.SASLLogin, irc.SASLLogin, irc.SASLPassword)))
|
||||
irc.SendRaw("AUTHENTICATE " + str)
|
||||
})
|
||||
irc.AddCallback("901", func(e *Event) {
|
||||
irc.SendRaw("CAP END")
|
||||
irc.SendRaw("QUIT")
|
||||
result <- &SASLResult{true, errors.New(e.Arguments[1])}
|
||||
})
|
||||
irc.AddCallback("902", func(e *Event) {
|
||||
irc.SendRaw("CAP END")
|
||||
irc.SendRaw("QUIT")
|
||||
result <- &SASLResult{true, errors.New(e.Arguments[1])}
|
||||
})
|
||||
irc.AddCallback("903", func(e *Event) {
|
||||
result <- &SASLResult{false, nil}
|
||||
})
|
||||
irc.AddCallback("904", func(e *Event) {
|
||||
irc.SendRaw("CAP END")
|
||||
irc.SendRaw("QUIT")
|
||||
result <- &SASLResult{true, errors.New(e.Arguments[1])}
|
||||
})
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
// Copyright 2009 Thomas Jager <mail@jager.no> All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package irc
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"log"
|
||||
"net"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Connection struct {
|
||||
sync.Mutex
|
||||
sync.WaitGroup
|
||||
Debug bool
|
||||
Error chan error
|
||||
Password string
|
||||
UseTLS bool
|
||||
UseSASL bool
|
||||
RequestCaps []string
|
||||
AcknowledgedCaps []string
|
||||
SASLLogin string
|
||||
SASLPassword string
|
||||
SASLMech string
|
||||
TLSConfig *tls.Config
|
||||
Version string
|
||||
Timeout time.Duration
|
||||
PingFreq time.Duration
|
||||
KeepAlive time.Duration
|
||||
Server string
|
||||
|
||||
socket net.Conn
|
||||
pwrite chan string
|
||||
end chan struct{}
|
||||
|
||||
nick string //The nickname we want.
|
||||
nickcurrent string //The nickname we currently have.
|
||||
user string
|
||||
registered bool
|
||||
events map[string]map[int]func(*Event)
|
||||
|
||||
QuitMessage string
|
||||
lastMessage time.Time
|
||||
|
||||
VerboseCallbackHandler bool
|
||||
Log *log.Logger
|
||||
|
||||
stopped bool
|
||||
quit bool //User called Quit, do not reconnect.
|
||||
}
|
||||
|
||||
// A struct to represent an event.
|
||||
type Event struct {
|
||||
Code string
|
||||
Raw string
|
||||
Nick string //<nick>
|
||||
Host string //<nick>!<usr>@<host>
|
||||
Source string //<host>
|
||||
User string //<usr>
|
||||
Arguments []string
|
||||
Tags map[string]string
|
||||
Connection *Connection
|
||||
}
|
||||
|
||||
// Retrieve the last message from Event arguments.
|
||||
// This function leaves the arguments untouched and
|
||||
// returns an empty string if there are none.
|
||||
func (e *Event) Message() string {
|
||||
if len(e.Arguments) == 0 {
|
||||
return ""
|
||||
}
|
||||
return e.Arguments[len(e.Arguments)-1]
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
// +build gofuzz
|
||||
|
||||
package irc
|
||||
|
||||
func Fuzz(data []byte) int {
|
||||
b := bytes.NewBuffer(data)
|
||||
event, err := parseToEvent(b.String())
|
||||
if err == nil {
|
||||
irc := IRC("go-eventirc", "go-eventirc")
|
||||
irc.RunCallbacks(event)
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
TAGS
|
||||
tags
|
||||
.*.swp
|
||||
tomlcheck/tomlcheck
|
||||
toml.test
|
@ -0,0 +1,15 @@
|
||||
language: go
|
||||
go:
|
||||
- 1.1
|
||||
- 1.2
|
||||
- 1.3
|
||||
- 1.4
|
||||
- 1.5
|
||||
- 1.6
|
||||
- tip
|
||||
install:
|
||||
- go install ./...
|
||||
- go get github.com/BurntSushi/toml-test
|
||||
script:
|
||||
- export PATH="$PATH:$HOME/gopath/bin"
|
||||
- make test
|
@ -0,0 +1,3 @@
|
||||
Compatible with TOML version
|
||||
[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md)
|
||||
|
@ -0,0 +1,19 @@
|
||||
install:
|
||||
go install ./...
|
||||
|
||||
test: install
|
||||
go test -v
|
||||
toml-test toml-test-decoder
|
||||
toml-test -encoder toml-test-encoder
|
||||
|
||||
fmt:
|
||||
gofmt -w *.go */*.go
|
||||
colcheck *.go */*.go
|
||||
|
||||
tags:
|
||||
find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS
|
||||
|
||||
push:
|
||||
git push origin master
|
||||
git push github master
|
||||
|
@ -0,0 +1,218 @@
|
||||
## TOML parser and encoder for Go with reflection
|
||||
|
||||
TOML stands for Tom's Obvious, Minimal Language. This Go package provides a
|
||||
reflection interface similar to Go's standard library `json` and `xml`
|
||||
packages. This package also supports the `encoding.TextUnmarshaler` and
|
||||
`encoding.TextMarshaler` interfaces so that you can define custom data
|
||||
representations. (There is an example of this below.)
|
||||
|
||||
Spec: https://github.com/toml-lang/toml
|
||||
|
||||
Compatible with TOML version
|
||||
[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)
|
||||
|
||||
Documentation: https://godoc.org/github.com/BurntSushi/toml
|
||||
|
||||
Installation:
|
||||
|
||||
```bash
|
||||
go get github.com/BurntSushi/toml
|
||||
```
|
||||
|
||||
Try the toml validator:
|
||||
|
||||
```bash
|
||||
go get github.com/BurntSushi/toml/cmd/tomlv
|
||||
tomlv some-toml-file.toml
|
||||
```
|
||||
|
||||
[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml)
|
||||
|
||||
### Testing
|
||||
|
||||
This package passes all tests in
|
||||
[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder
|
||||
and the encoder.
|
||||
|
||||
### Examples
|
||||
|
||||
This package works similarly to how the Go standard library handles `XML`
|
||||
and `JSON`. Namely, data is loaded into Go values via reflection.
|
||||
|
||||
For the simplest example, consider some TOML file as just a list of keys
|
||||
and values:
|
||||
|
||||
```toml
|
||||
Age = 25
|
||||
Cats = [ "Cauchy", "Plato" ]
|
||||
Pi = 3.14
|
||||
Perfection = [ 6, 28, 496, 8128 ]
|
||||
DOB = 1987-07-05T05:45:00Z
|
||||
```
|
||||
|
||||
Which could be defined in Go as:
|
||||
|
||||
```go
|
||||
type Config struct {
|
||||
Age int
|
||||
Cats []string
|
||||
Pi float64
|
||||
Perfection []int
|
||||
DOB time.Time // requires `import time`
|
||||
}
|
||||
```
|
||||
|
||||
And then decoded with:
|
||||
|
||||
```go
|
||||
var conf Config
|
||||
if _, err := toml.Decode(tomlData, &conf); err != nil {
|
||||
// handle error
|
||||
}
|
||||
```
|
||||
|
||||
You can also use struct tags if your struct field name doesn't map to a TOML
|
||||
key value directly:
|
||||
|
||||
```toml
|
||||
some_key_NAME = "wat"
|
||||
```
|
||||
|
||||
```go
|
||||
type TOML struct {
|
||||
ObscureKey string `toml:"some_key_NAME"`
|
||||
}
|
||||
```
|
||||
|
||||
### Using the `encoding.TextUnmarshaler` interface
|
||||
|
||||
Here's an example that automatically parses duration strings into
|
||||
`time.Duration` values:
|
||||
|
||||
```toml
|
||||
[[song]]
|
||||
name = "Thunder Road"
|
||||
duration = "4m49s"
|
||||
|
||||
[[song]]
|
||||
name = "Stairway to Heaven"
|
||||
duration = "8m03s"
|
||||
```
|
||||
|
||||
Which can be decoded with:
|
||||
|
||||
```go
|
||||
type song struct {
|
||||
Name string
|
||||
Duration duration
|
||||
}
|
||||
type songs struct {
|
||||
Song []song
|
||||
}
|
||||
var favorites songs
|
||||
if _, err := toml.Decode(blob, &favorites); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, s := range favorites.Song {
|
||||
fmt.Printf("%s (%s)\n", s.Name, s.Duration)
|
||||
}
|
||||
```
|
||||
|
||||
And you'll also need a `duration` type that satisfies the
|
||||
`encoding.TextUnmarshaler` interface:
|
||||
|
||||
```go
|
||||
type duration struct {
|
||||
time.Duration
|
||||
}
|
||||
|
||||
func (d *duration) UnmarshalText(text []byte) error {
|
||||
var err error
|
||||
d.Duration, err = time.ParseDuration(string(text))
|
||||
return err
|
||||
}
|
||||
```
|
||||
|
||||
### More complex usage
|
||||
|
||||
Here's an example of how to load the example from the official spec page:
|
||||
|
||||
```toml
|
||||
# This is a TOML document. Boom.
|
||||
|
||||
title = "TOML Example"
|
||||
|
||||
[owner]
|
||||
name = "Tom Preston-Werner"
|
||||
organization = "GitHub"
|
||||
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
|
||||
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
|
||||
|
||||
[database]
|
||||
server = "192.168.1.1"
|
||||
ports = [ 8001, 8001, 8002 ]
|
||||
connection_max = 5000
|
||||
enabled = true
|
||||
|
||||
[servers]
|
||||
|
||||
# You can indent as you please. Tabs or spaces. TOML don't care.
|
||||
[servers.alpha]
|
||||
ip = "10.0.0.1"
|
||||
dc = "eqdc10"
|
||||
|
||||
[servers.beta]
|
||||
ip = "10.0.0.2"
|
||||
dc = "eqdc10"
|
||||
|
||||
[clients]
|
||||
data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
|
||||
|
||||
# Line breaks are OK when inside arrays
|
||||
hosts = [
|
||||
"alpha",
|
||||
"omega"
|
||||
]
|
||||
```
|
||||
|
||||
And the corresponding Go types are:
|
||||
|
||||
```go
|
||||
type tomlConfig struct {
|
||||
Title string
|
||||
Owner ownerInfo
|
||||
DB database `toml:"database"`
|
||||
Servers map[string]server
|
||||
Clients clients
|
||||
}
|
||||
|
||||
type ownerInfo struct {
|
||||
Name string
|
||||
Org string `toml:"organization"`
|
||||
Bio string
|
||||
DOB time.Time
|
||||
}
|
||||
|
||||
type database struct {
|
||||
Server string
|
||||
Ports []int
|
||||
ConnMax int `toml:"connection_max"`
|
||||
Enabled bool
|
||||
}
|
||||
|
||||
type server struct {
|
||||
IP string
|
||||
DC string
|
||||
}
|
||||
|
||||
type clients struct {
|
||||
Data [][]interface{}
|
||||
Hosts []string
|
||||
}
|
||||
```
|
||||
|
||||
Note that a case insensitive match will be tried if an exact match can't be
|
||||
found.
|
||||
|
||||
A working example of the above can be found in `_examples/example.{go,toml}`.
|
@ -1,90 +0,0 @@
|
||||
// Command toml-test-decoder satisfies the toml-test interface for testing
|
||||
// TOML decoders. Namely, it accepts TOML on stdin and outputs JSON on stdout.
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.SetFlags(0)
|
||||
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func usage() {
|
||||
log.Printf("Usage: %s < toml-file\n", path.Base(os.Args[0]))
|
||||
flag.PrintDefaults()
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if flag.NArg() != 0 {
|
||||
flag.Usage()
|
||||
}
|
||||
|
||||
var tmp interface{}
|
||||
if _, err := toml.DecodeReader(os.Stdin, &tmp); err != nil {
|
||||
log.Fatalf("Error decoding TOML: %s", err)
|
||||
}
|
||||
|
||||
typedTmp := translate(tmp)
|
||||
if err := json.NewEncoder(os.Stdout).Encode(typedTmp); err != nil {
|
||||
log.Fatalf("Error encoding JSON: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func translate(tomlData interface{}) interface{} {
|
||||
switch orig := tomlData.(type) {
|
||||
case map[string]interface{}:
|
||||
typed := make(map[string]interface{}, len(orig))
|
||||
for k, v := range orig {
|
||||
typed[k] = translate(v)
|
||||
}
|
||||
return typed
|
||||
case []map[string]interface{}:
|
||||
typed := make([]map[string]interface{}, len(orig))
|
||||
for i, v := range orig {
|
||||
typed[i] = translate(v).(map[string]interface{})
|
||||
}
|
||||
return typed
|
||||
case []interface{}:
|
||||
typed := make([]interface{}, len(orig))
|
||||
for i, v := range orig {
|
||||
typed[i] = translate(v)
|
||||
}
|
||||
|
||||
// We don't really need to tag arrays, but let's be future proof.
|
||||
// (If TOML ever supports tuples, we'll need this.)
|
||||
return tag("array", typed)
|
||||
case time.Time:
|
||||
return tag("datetime", orig.Format("2006-01-02T15:04:05Z"))
|
||||
case bool:
|
||||
return tag("bool", fmt.Sprintf("%v", orig))
|
||||
case int64:
|
||||
return tag("integer", fmt.Sprintf("%d", orig))
|
||||
case float64:
|
||||
return tag("float", fmt.Sprintf("%v", orig))
|
||||
case string:
|
||||
return tag("string", orig)
|
||||
}
|
||||
|
||||
panic(fmt.Sprintf("Unknown type: %T", tomlData))
|
||||
}
|
||||
|
||||
func tag(typeName string, data interface{}) map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"type": typeName,
|
||||
"value": data,
|
||||
}
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
// Command toml-test-encoder satisfies the toml-test interface for testing
|
||||
// TOML encoders. Namely, it accepts JSON on stdin and outputs TOML on stdout.
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.SetFlags(0)
|
||||
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func usage() {
|
||||
log.Printf("Usage: %s < json-file\n", path.Base(os.Args[0]))
|
||||
flag.PrintDefaults()
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if flag.NArg() != 0 {
|
||||
flag.Usage()
|
||||
}
|
||||
|
||||
var tmp interface{}
|
||||
if err := json.NewDecoder(os.Stdin).Decode(&tmp); err != nil {
|
||||
log.Fatalf("Error decoding JSON: %s", err)
|
||||
}
|
||||
|
||||
tomlData := translate(tmp)
|
||||
if err := toml.NewEncoder(os.Stdout).Encode(tomlData); err != nil {
|
||||
log.Fatalf("Error encoding TOML: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func translate(typedJson interface{}) interface{} {
|
||||
switch v := typedJson.(type) {
|
||||
case map[string]interface{}:
|
||||
if len(v) == 2 && in("type", v) && in("value", v) {
|
||||
return untag(v)
|
||||
}
|
||||
m := make(map[string]interface{}, len(v))
|
||||
for k, v2 := range v {
|
||||
m[k] = translate(v2)
|
||||
}
|
||||
return m
|
||||
case []interface{}:
|
||||
tabArray := make([]map[string]interface{}, len(v))
|
||||
for i := range v {
|
||||
if m, ok := translate(v[i]).(map[string]interface{}); ok {
|
||||
tabArray[i] = m
|
||||
} else {
|
||||
log.Fatalf("JSON arrays may only contain objects. This " +
|
||||
"corresponds to only tables being allowed in " +
|
||||
"TOML table arrays.")
|
||||
}
|
||||
}
|
||||
return tabArray
|
||||
}
|
||||
log.Fatalf("Unrecognized JSON format '%T'.", typedJson)
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
func untag(typed map[string]interface{}) interface{} {
|
||||
t := typed["type"].(string)
|
||||
v := typed["value"]
|
||||
switch t {
|
||||
case "string":
|
||||
return v.(string)
|
||||
case "integer":
|
||||
v := v.(string)
|
||||
n, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not parse '%s' as integer: %s", v, err)
|
||||
}
|
||||
return n
|
||||
case "float":
|
||||
v := v.(string)
|
||||
f, err := strconv.ParseFloat(v, 64)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not parse '%s' as float64: %s", v, err)
|
||||
}
|
||||
return f
|
||||
case "datetime":
|
||||
v := v.(string)
|
||||
t, err := time.Parse("2006-01-02T15:04:05Z", v)
|
||||
if err != nil {
|
||||
log.Fatalf("Could not parse '%s' as a datetime: %s", v, err)
|
||||
}
|
||||
return t
|
||||
case "bool":
|
||||
v := v.(string)
|
||||
switch v {
|
||||
case "true":
|
||||
return true
|
||||
case "false":
|
||||
return false
|
||||
}
|
||||
log.Fatalf("Could not parse '%s' as a boolean.", v)
|
||||
case "array":
|
||||
v := v.([]interface{})
|
||||
array := make([]interface{}, len(v))
|
||||
for i := range v {
|
||||
if m, ok := v[i].(map[string]interface{}); ok {
|
||||
array[i] = untag(m)
|
||||
} else {
|
||||
log.Fatalf("Arrays may only contain other arrays or "+
|
||||
"primitive values, but found a '%T'.", m)
|
||||
}
|
||||
}
|
||||
return array
|
||||
}
|
||||
log.Fatalf("Unrecognized tag type '%s'.", t)
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
func in(key string, m map[string]interface{}) bool {
|
||||
_, ok := m[key]
|
||||
return ok
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
// Command tomlv validates TOML documents and prints each key's type.
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"text/tabwriter"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
var (
|
||||
flagTypes = false
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.SetFlags(0)
|
||||
|
||||
flag.BoolVar(&flagTypes, "types", flagTypes,
|
||||
"When set, the types of every defined key will be shown.")
|
||||
|
||||
flag.Usage = usage
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func usage() {
|
||||
log.Printf("Usage: %s toml-file [ toml-file ... ]\n",
|
||||
path.Base(os.Args[0]))
|
||||
flag.PrintDefaults()
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if flag.NArg() < 1 {
|
||||
flag.Usage()
|
||||
}
|
||||
for _, f := range flag.Args() {
|
||||
var tmp interface{}
|
||||
md, err := toml.DecodeFile(f, &tmp)
|
||||
if err != nil {
|
||||
log.Fatalf("Error in '%s': %s", f, err)
|
||||
}
|
||||
if flagTypes {
|
||||
printTypes(md)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func printTypes(md toml.MetaData) {
|
||||
tabw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
|
||||
for _, key := range md.Keys() {
|
||||
fmt.Fprintf(tabw, "%s%s\t%s\n",
|
||||
strings.Repeat(" ", len(key)-1), key, md.Type(key...))
|
||||
}
|
||||
tabw.Flush()
|
||||
}
|
@ -0,0 +1 @@
|
||||
au BufWritePost *.go silent!make tags > /dev/null 2>&1
|
@ -1,22 +0,0 @@
|
||||
Copyright (c) 2013, Geert-Johan Riemer
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,138 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/daaku/go.zipexe"
|
||||
"github.com/kardianos/osext"
|
||||
)
|
||||
|
||||
// appendedBox defines an appended box
|
||||
type appendedBox struct {
|
||||
Name string // box name
|
||||
Files map[string]*appendedFile // appended files (*zip.File) by full path
|
||||
}
|
||||
|
||||
type appendedFile struct {
|
||||
zipFile *zip.File
|
||||
dir bool
|
||||
dirInfo *appendedDirInfo
|
||||
children []*appendedFile
|
||||
content []byte
|
||||
}
|
||||
|
||||
// appendedBoxes is a public register of appendes boxes
|
||||
var appendedBoxes = make(map[string]*appendedBox)
|
||||
|
||||
func init() {
|
||||
// find if exec is appended
|
||||
thisFile, err := osext.Executable()
|
||||
if err != nil {
|
||||
return // not appended or cant find self executable
|
||||
}
|
||||
closer, rd, err := zipexe.OpenCloser(thisFile)
|
||||
if err != nil {
|
||||
return // not appended
|
||||
}
|
||||
defer closer.Close()
|
||||
|
||||
for _, f := range rd.File {
|
||||
// get box and file name from f.Name
|
||||
fileParts := strings.SplitN(strings.TrimLeft(filepath.ToSlash(f.Name), "/"), "/", 2)
|
||||
boxName := fileParts[0]
|
||||
var fileName string
|
||||
if len(fileParts) > 1 {
|
||||
fileName = fileParts[1]
|
||||
}
|
||||
|
||||
// find box or create new one if doesn't exist
|
||||
box := appendedBoxes[boxName]
|
||||
if box == nil {
|
||||
box = &appendedBox{
|
||||
Name: boxName,
|
||||
Files: make(map[string]*appendedFile),
|
||||
}
|
||||
appendedBoxes[boxName] = box
|
||||
}
|
||||
|
||||
// create and add file to box
|
||||
af := &appendedFile{
|
||||
zipFile: f,
|
||||
}
|
||||
if f.Comment == "dir" {
|
||||
af.dir = true
|
||||
af.dirInfo = &appendedDirInfo{
|
||||
name: filepath.Base(af.zipFile.Name),
|
||||
//++ TODO: use zip modtime when that is set correctly: af.zipFile.ModTime()
|
||||
time: time.Now(),
|
||||
}
|
||||
} else {
|
||||
// this is a file, we need it's contents so we can create a bytes.Reader when the file is opened
|
||||
// make a new byteslice
|
||||
af.content = make([]byte, af.zipFile.FileInfo().Size())
|
||||
// ignore reading empty files from zip (empty file still is a valid file to be read though!)
|
||||
if len(af.content) > 0 {
|
||||
// open io.ReadCloser
|
||||
rc, err := af.zipFile.Open()
|
||||
if err != nil {
|
||||
af.content = nil // this will cause an error when the file is being opened or seeked (which is good)
|
||||
// TODO: it's quite blunt to just log this stuff. but this is in init, so rice.Debug can't be changed yet..
|
||||
log.Printf("error opening appended file %s: %v", af.zipFile.Name, err)
|
||||
} else {
|
||||
_, err = rc.Read(af.content)
|
||||
rc.Close()
|
||||
if err != nil {
|
||||
af.content = nil // this will cause an error when the file is being opened or seeked (which is good)
|
||||
// TODO: it's quite blunt to just log this stuff. but this is in init, so rice.Debug can't be changed yet..
|
||||
log.Printf("error reading data for appended file %s: %v", af.zipFile.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add appendedFile to box file list
|
||||
box.Files[fileName] = af
|
||||
|
||||
// add to parent dir (if any)
|
||||
dirName := filepath.Dir(fileName)
|
||||
if dirName == "." {
|
||||
dirName = ""
|
||||
}
|
||||
if fileName != "" { // don't make box root dir a child of itself
|
||||
if dir := box.Files[dirName]; dir != nil {
|
||||
dir.children = append(dir.children, af)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// implements os.FileInfo.
|
||||
// used for Readdir()
|
||||
type appendedDirInfo struct {
|
||||
name string
|
||||
time time.Time
|
||||
}
|
||||
|
||||
func (adi *appendedDirInfo) Name() string {
|
||||
return adi.name
|
||||
}
|
||||
func (adi *appendedDirInfo) Size() int64 {
|
||||
return 0
|
||||
}
|
||||
func (adi *appendedDirInfo) Mode() os.FileMode {
|
||||
return os.ModeDir
|
||||
}
|
||||
func (adi *appendedDirInfo) ModTime() time.Time {
|
||||
return adi.time
|
||||
}
|
||||
func (adi *appendedDirInfo) IsDir() bool {
|
||||
return true
|
||||
}
|
||||
func (adi *appendedDirInfo) Sys() interface{} {
|
||||
return nil
|
||||
}
|
@ -1,337 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
)
|
||||
|
||||
// Box abstracts a directory for resources/files.
|
||||
// It can either load files from disk, or from embedded code (when `rice --embed` was ran).
|
||||
type Box struct {
|
||||
name string
|
||||
absolutePath string
|
||||
embed *embedded.EmbeddedBox
|
||||
appendd *appendedBox
|
||||
}
|
||||
|
||||
var defaultLocateOrder = []LocateMethod{LocateEmbedded, LocateAppended, LocateFS}
|
||||
|
||||
func findBox(name string, order []LocateMethod) (*Box, error) {
|
||||
b := &Box{name: name}
|
||||
|
||||
// no support for absolute paths since gopath can be different on different machines.
|
||||
// therefore, required box must be located relative to package requiring it.
|
||||
if filepath.IsAbs(name) {
|
||||
return nil, errors.New("given name/path is absolute")
|
||||
}
|
||||
|
||||
var err error
|
||||
for _, method := range order {
|
||||
switch method {
|
||||
case LocateEmbedded:
|
||||
if embed := embedded.EmbeddedBoxes[name]; embed != nil {
|
||||
b.embed = embed
|
||||
return b, nil
|
||||
}
|
||||
|
||||
case LocateAppended:
|
||||
appendedBoxName := strings.Replace(name, `/`, `-`, -1)
|
||||
if appendd := appendedBoxes[appendedBoxName]; appendd != nil {
|
||||
b.appendd = appendd
|
||||
return b, nil
|
||||
}
|
||||
|
||||
case LocateFS:
|
||||
// resolve absolute directory path
|
||||
err := b.resolveAbsolutePathFromCaller()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// check if absolutePath exists on filesystem
|
||||
info, err := os.Stat(b.absolutePath)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// check if absolutePath is actually a directory
|
||||
if !info.IsDir() {
|
||||
err = errors.New("given name/path is not a directory")
|
||||
continue
|
||||
}
|
||||
return b, nil
|
||||
case LocateWorkingDirectory:
|
||||
// resolve absolute directory path
|
||||
err := b.resolveAbsolutePathFromWorkingDirectory()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// check if absolutePath exists on filesystem
|
||||
info, err := os.Stat(b.absolutePath)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
// check if absolutePath is actually a directory
|
||||
if !info.IsDir() {
|
||||
err = errors.New("given name/path is not a directory")
|
||||
continue
|
||||
}
|
||||
return b, nil
|
||||
}
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
err = fmt.Errorf("could not locate box %q", name)
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// FindBox returns a Box instance for given name.
|
||||
// When the given name is a relative path, it's base path will be the calling pkg/cmd's source root.
|
||||
// When the given name is absolute, it's absolute. derp.
|
||||
// Make sure the path doesn't contain any sensitive information as it might be placed into generated go source (embedded).
|
||||
func FindBox(name string) (*Box, error) {
|
||||
return findBox(name, defaultLocateOrder)
|
||||
}
|
||||
|
||||
// MustFindBox returns a Box instance for given name, like FindBox does.
|
||||
// It does not return an error, instead it panics when an error occurs.
|
||||
func MustFindBox(name string) *Box {
|
||||
box, err := findBox(name, defaultLocateOrder)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return box
|
||||
}
|
||||
|
||||
// This is injected as a mutable function literal so that we can mock it out in
|
||||
// tests and return a fixed test file.
|
||||
var resolveAbsolutePathFromCaller = func(name string, nStackFrames int) (string, error) {
|
||||
_, callingGoFile, _, ok := runtime.Caller(nStackFrames)
|
||||
if !ok {
|
||||
return "", errors.New("couldn't find caller on stack")
|
||||
}
|
||||
|
||||
// resolve to proper path
|
||||
pkgDir := filepath.Dir(callingGoFile)
|
||||
// fix for go cover
|
||||
const coverPath = "_test/_obj_test"
|
||||
if !filepath.IsAbs(pkgDir) {
|
||||
if i := strings.Index(pkgDir, coverPath); i >= 0 {
|
||||
pkgDir = pkgDir[:i] + pkgDir[i+len(coverPath):] // remove coverPath
|
||||
pkgDir = filepath.Join(os.Getenv("GOPATH"), "src", pkgDir) // make absolute
|
||||
}
|
||||
}
|
||||
return filepath.Join(pkgDir, name), nil
|
||||
}
|
||||
|
||||
func (b *Box) resolveAbsolutePathFromCaller() error {
|
||||
path, err := resolveAbsolutePathFromCaller(b.name, 4)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
b.absolutePath = path
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func (b *Box) resolveAbsolutePathFromWorkingDirectory() error {
|
||||
path, err := os.Getwd()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
b.absolutePath = filepath.Join(path, b.name)
|
||||
return nil
|
||||
}
|
||||
|
||||
// IsEmbedded indicates wether this box was embedded into the application
|
||||
func (b *Box) IsEmbedded() bool {
|
||||
return b.embed != nil
|
||||
}
|
||||
|
||||
// IsAppended indicates wether this box was appended to the application
|
||||
func (b *Box) IsAppended() bool {
|
||||
return b.appendd != nil
|
||||
}
|
||||
|
||||
// Time returns how actual the box is.
|
||||
// When the box is embedded, it's value is saved in the embedding code.
|
||||
// When the box is live, this methods returns time.Now()
|
||||
func (b *Box) Time() time.Time {
|
||||
if b.IsEmbedded() {
|
||||
return b.embed.Time
|
||||
}
|
||||
|
||||
//++ TODO: return time for appended box
|
||||
|
||||
return time.Now()
|
||||
}
|
||||
|
||||
// Open opens a File from the box
|
||||
// If there is an error, it will be of type *os.PathError.
|
||||
func (b *Box) Open(name string) (*File, error) {
|
||||
if Debug {
|
||||
fmt.Printf("Open(%s)\n", name)
|
||||
}
|
||||
|
||||
if b.IsEmbedded() {
|
||||
if Debug {
|
||||
fmt.Println("Box is embedded")
|
||||
}
|
||||
|
||||
// trim prefix (paths are relative to box)
|
||||
name = strings.TrimLeft(name, "/")
|
||||
if Debug {
|
||||
fmt.Printf("Trying %s\n", name)
|
||||
}
|
||||
|
||||
// search for file
|
||||
ef := b.embed.Files[name]
|
||||
if ef == nil {
|
||||
if Debug {
|
||||
fmt.Println("Didn't find file in embed")
|
||||
}
|
||||
// file not found, try dir
|
||||
ed := b.embed.Dirs[name]
|
||||
if ed == nil {
|
||||
if Debug {
|
||||
fmt.Println("Didn't find dir in embed")
|
||||
}
|
||||
// dir not found, error out
|
||||
return nil, &os.PathError{
|
||||
Op: "open",
|
||||
Path: name,
|
||||
Err: os.ErrNotExist,
|
||||
}
|
||||
}
|
||||
if Debug {
|
||||
fmt.Println("Found dir. Returning virtual dir")
|
||||
}
|
||||
vd := newVirtualDir(ed)
|
||||
return &File{virtualD: vd}, nil
|
||||
}
|
||||
|
||||
// box is embedded
|
||||
if Debug {
|
||||
fmt.Println("Found file. Returning virtual file")
|
||||
}
|
||||
vf := newVirtualFile(ef)
|
||||
return &File{virtualF: vf}, nil
|
||||
}
|
||||
|
||||
if b.IsAppended() {
|
||||
// trim prefix (paths are relative to box)
|
||||
name = strings.TrimLeft(name, "/")
|
||||
|
||||
// search for file
|
||||
appendedFile := b.appendd.Files[name]
|
||||
if appendedFile == nil {
|
||||
return nil, &os.PathError{
|
||||
Op: "open",
|
||||
Path: name,
|
||||
Err: os.ErrNotExist,
|
||||
}
|
||||
}
|
||||
|
||||
// create new file
|
||||
f := &File{
|
||||
appendedF: appendedFile,
|
||||
}
|
||||
|
||||
// if this file is a directory, we want to be able to read and seek
|
||||
if !appendedFile.dir {
|
||||
// looks like malformed data in zip, error now
|
||||
if appendedFile.content == nil {
|
||||
return nil, &os.PathError{
|
||||
Op: "open",
|
||||
Path: "name",
|
||||
Err: errors.New("error reading data from zip file"),
|
||||
}
|
||||
}
|
||||
// create new bytes.Reader
|
||||
f.appendedFileReader = bytes.NewReader(appendedFile.content)
|
||||
}
|
||||
|
||||
// all done
|
||||
return f, nil
|
||||
}
|
||||
|
||||
// perform os open
|
||||
if Debug {
|
||||
fmt.Printf("Using os.Open(%s)", filepath.Join(b.absolutePath, name))
|
||||
}
|
||||
file, err := os.Open(filepath.Join(b.absolutePath, name))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &File{realF: file}, nil
|
||||
}
|
||||
|
||||
// Bytes returns the content of the file with given name as []byte.
|
||||
func (b *Box) Bytes(name string) ([]byte, error) {
|
||||
file, err := b.Open(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
content, err := ioutil.ReadAll(file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return content, nil
|
||||
}
|
||||
|
||||
// MustBytes returns the content of the file with given name as []byte.
|
||||
// panic's on error.
|
||||
func (b *Box) MustBytes(name string) []byte {
|
||||
bts, err := b.Bytes(name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return bts
|
||||
}
|
||||
|
||||
// String returns the content of the file with given name as string.
|
||||
func (b *Box) String(name string) (string, error) {
|
||||
// check if box is embedded, optimized fast path
|
||||
if b.IsEmbedded() {
|
||||
// find file in embed
|
||||
ef := b.embed.Files[name]
|
||||
if ef == nil {
|
||||
return "", os.ErrNotExist
|
||||
}
|
||||
// return as string
|
||||
return ef.Content, nil
|
||||
}
|
||||
|
||||
bts, err := b.Bytes(name)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(bts), nil
|
||||
}
|
||||
|
||||
// MustString returns the content of the file with given name as string.
|
||||
// panic's on error.
|
||||
func (b *Box) MustString(name string) string {
|
||||
str, err := b.String(name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
// Name returns the name of the box
|
||||
func (b *Box) Name() string {
|
||||
return b.name
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package rice
|
||||
|
||||
// LocateMethod defines how a box is located.
|
||||
type LocateMethod int
|
||||
|
||||
const (
|
||||
LocateFS = LocateMethod(iota) // Locate on the filesystem according to package path.
|
||||
LocateAppended // Locate boxes appended to the executable.
|
||||
LocateEmbedded // Locate embedded boxes.
|
||||
LocateWorkingDirectory // Locate on the binary working directory
|
||||
)
|
||||
|
||||
// Config allows customizing the box lookup behavior.
|
||||
type Config struct {
|
||||
// LocateOrder defines the priority order that boxes are searched for. By
|
||||
// default, the package global FindBox searches for embedded boxes first,
|
||||
// then appended boxes, and then finally boxes on the filesystem. That
|
||||
// search order may be customized by provided the ordered list here. Leaving
|
||||
// out a particular method will omit that from the search space. For
|
||||
// example, []LocateMethod{LocateEmbedded, LocateAppended} will never search
|
||||
// the filesystem for boxes.
|
||||
LocateOrder []LocateMethod
|
||||
}
|
||||
|
||||
// FindBox searches for boxes using the LocateOrder of the config.
|
||||
func (c *Config) FindBox(boxName string) (*Box, error) {
|
||||
return findBox(boxName, c.LocateOrder)
|
||||
}
|
||||
|
||||
// MustFindBox searches for boxes using the LocateOrder of the config, like
|
||||
// FindBox does. It does not return an error, instead it panics when an error
|
||||
// occurs.
|
||||
func (c *Config) MustFindBox(boxName string) *Box {
|
||||
box, err := findBox(boxName, c.LocateOrder)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return box
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package rice
|
||||
|
||||
// Debug can be set to true to enable debugging.
|
||||
var Debug = false
|
@ -1,90 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
)
|
||||
|
||||
// re-type to make exported methods invisible to user (godoc)
|
||||
// they're not required for the user
|
||||
// embeddedDirInfo implements os.FileInfo
|
||||
type embeddedDirInfo embedded.EmbeddedDir
|
||||
|
||||
// Name returns the base name of the directory
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) Name() string {
|
||||
return ed.Filename
|
||||
}
|
||||
|
||||
// Size always returns 0
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) Size() int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// Mode returns the file mode bits
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) Mode() os.FileMode {
|
||||
return os.FileMode(0555 | os.ModeDir) // dr-xr-xr-x
|
||||
}
|
||||
|
||||
// ModTime returns the modification time
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) ModTime() time.Time {
|
||||
return ed.DirModTime
|
||||
}
|
||||
|
||||
// IsDir returns the abbreviation for Mode().IsDir() (always true)
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) IsDir() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// Sys returns the underlying data source (always nil)
|
||||
// (implementing os.FileInfo)
|
||||
func (ed *embeddedDirInfo) Sys() interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
// re-type to make exported methods invisible to user (godoc)
|
||||
// they're not required for the user
|
||||
// embeddedFileInfo implements os.FileInfo
|
||||
type embeddedFileInfo embedded.EmbeddedFile
|
||||
|
||||
// Name returns the base name of the file
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) Name() string {
|
||||
return ef.Filename
|
||||
}
|
||||
|
||||
// Size returns the length in bytes for regular files; system-dependent for others
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) Size() int64 {
|
||||
return int64(len(ef.Content))
|
||||
}
|
||||
|
||||
// Mode returns the file mode bits
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) Mode() os.FileMode {
|
||||
return os.FileMode(0555) // r-xr-xr-x
|
||||
}
|
||||
|
||||
// ModTime returns the modification time
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) ModTime() time.Time {
|
||||
return ef.FileModTime
|
||||
}
|
||||
|
||||
// IsDir returns the abbreviation for Mode().IsDir() (always false)
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) IsDir() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// Sys returns the underlying data source (always nil)
|
||||
// (implementing os.FileInfo)
|
||||
func (ef *embeddedFileInfo) Sys() interface{} {
|
||||
return nil
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
// Package embedded defines embedded data types that are shared between the go.rice package and generated code.
|
||||
package embedded
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
EmbedTypeGo = 0
|
||||
EmbedTypeSyso = 1
|
||||
)
|
||||
|
||||
// EmbeddedBox defines an embedded box
|
||||
type EmbeddedBox struct {
|
||||
Name string // box name
|
||||
Time time.Time // embed time
|
||||
EmbedType int // kind of embedding
|
||||
Files map[string]*EmbeddedFile // ALL embedded files by full path
|
||||
Dirs map[string]*EmbeddedDir // ALL embedded dirs by full path
|
||||
}
|
||||
|
||||
// Link creates the ChildDirs and ChildFiles links in all EmbeddedDir's
|
||||
func (e *EmbeddedBox) Link() {
|
||||
for path, ed := range e.Dirs {
|
||||
fmt.Println(path)
|
||||
ed.ChildDirs = make([]*EmbeddedDir, 0)
|
||||
ed.ChildFiles = make([]*EmbeddedFile, 0)
|
||||
}
|
||||
for path, ed := range e.Dirs {
|
||||
parentDirpath, _ := filepath.Split(path)
|
||||
if strings.HasSuffix(parentDirpath, "/") {
|
||||
parentDirpath = parentDirpath[:len(parentDirpath)-1]
|
||||
}
|
||||
parentDir := e.Dirs[parentDirpath]
|
||||
if parentDir == nil {
|
||||
panic("parentDir `" + parentDirpath + "` is missing in embedded box")
|
||||
}
|
||||
parentDir.ChildDirs = append(parentDir.ChildDirs, ed)
|
||||
}
|
||||
for path, ef := range e.Files {
|
||||
dirpath, _ := filepath.Split(path)
|
||||
if strings.HasSuffix(dirpath, "/") {
|
||||
dirpath = dirpath[:len(dirpath)-1]
|
||||
}
|
||||
dir := e.Dirs[dirpath]
|
||||
if dir == nil {
|
||||
panic("dir `" + dirpath + "` is missing in embedded box")
|
||||
}
|
||||
dir.ChildFiles = append(dir.ChildFiles, ef)
|
||||
}
|
||||
}
|
||||
|
||||
// EmbeddedDir is instanced in the code generated by the rice tool and contains all necicary information about an embedded file
|
||||
type EmbeddedDir struct {
|
||||
Filename string
|
||||
DirModTime time.Time
|
||||
ChildDirs []*EmbeddedDir // direct childs, as returned by virtualDir.Readdir()
|
||||
ChildFiles []*EmbeddedFile // direct childs, as returned by virtualDir.Readdir()
|
||||
}
|
||||
|
||||
// EmbeddedFile is instanced in the code generated by the rice tool and contains all necicary information about an embedded file
|
||||
type EmbeddedFile struct {
|
||||
Filename string // filename
|
||||
FileModTime time.Time
|
||||
Content string
|
||||
}
|
||||
|
||||
// EmbeddedBoxes is a public register of embedded boxes
|
||||
var EmbeddedBoxes = make(map[string]*EmbeddedBox)
|
||||
|
||||
// RegisterEmbeddedBox registers an EmbeddedBox
|
||||
func RegisterEmbeddedBox(name string, box *EmbeddedBox) {
|
||||
if _, exists := EmbeddedBoxes[name]; exists {
|
||||
panic(fmt.Sprintf("EmbeddedBox with name `%s` exists already", name))
|
||||
}
|
||||
EmbeddedBoxes[name] = box
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"text/template"
|
||||
|
||||
"github.com/GeertJohan/go.rice"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
)
|
||||
|
||||
func main() {
|
||||
conf := rice.Config{
|
||||
LocateOrder: []rice.LocateMethod{rice.LocateEmbedded, rice.LocateAppended, rice.LocateFS},
|
||||
}
|
||||
box, err := conf.FindBox("example-files")
|
||||
if err != nil {
|
||||
log.Fatalf("error opening rice.Box: %s\n", err)
|
||||
}
|
||||
// spew.Dump(box)
|
||||
|
||||
contentString, err := box.String("file.txt")
|
||||
if err != nil {
|
||||
log.Fatalf("could not read file contents as string: %s\n", err)
|
||||
}
|
||||
log.Printf("Read some file contents as string:\n%s\n", contentString)
|
||||
|
||||
contentBytes, err := box.Bytes("file.txt")
|
||||
if err != nil {
|
||||
log.Fatalf("could not read file contents as byteSlice: %s\n", err)
|
||||
}
|
||||
log.Printf("Read some file contents as byteSlice:\n%s\n", hex.Dump(contentBytes))
|
||||
|
||||
file, err := box.Open("file.txt")
|
||||
if err != nil {
|
||||
log.Fatalf("could not open file: %s\n", err)
|
||||
}
|
||||
spew.Dump(file)
|
||||
|
||||
// find/create a rice.Box
|
||||
templateBox, err := rice.FindBox("example-templates")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
// get file contents as string
|
||||
templateString, err := templateBox.String("message.tmpl")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
// parse and execute the template
|
||||
tmplMessage, err := template.New("message").Parse(templateString)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
tmplMessage.Execute(os.Stdout, map[string]string{"Message": "Hello, world!"})
|
||||
|
||||
http.Handle("/", http.FileServer(box.HTTPBox()))
|
||||
go func() {
|
||||
fmt.Println("Serving files on :8080, press ctrl-C to exit")
|
||||
err := http.ListenAndServe(":8080", nil)
|
||||
if err != nil {
|
||||
log.Fatalf("error serving files: %v", err)
|
||||
}
|
||||
}()
|
||||
select {}
|
||||
}
|
@ -1,144 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// File implements the io.Reader, io.Seeker, io.Closer and http.File interfaces
|
||||
type File struct {
|
||||
// File abstracts file methods so the user doesn't see the difference between rice.virtualFile, rice.virtualDir and os.File
|
||||
// TODO: maybe use internal File interface and four implementations: *os.File, appendedFile, virtualFile, virtualDir
|
||||
|
||||
// real file on disk
|
||||
realF *os.File
|
||||
|
||||
// when embedded (go)
|
||||
virtualF *virtualFile
|
||||
virtualD *virtualDir
|
||||
|
||||
// when appended (zip)
|
||||
appendedF *appendedFile
|
||||
appendedFileReader *bytes.Reader
|
||||
// TODO: is appendedFileReader subject of races? Might need a lock here..
|
||||
}
|
||||
|
||||
// Close is like (*os.File).Close()
|
||||
// Visit http://golang.org/pkg/os/#File.Close for more information
|
||||
func (f *File) Close() error {
|
||||
if f.appendedF != nil {
|
||||
if f.appendedFileReader == nil {
|
||||
return errors.New("already closed")
|
||||
}
|
||||
f.appendedFileReader = nil
|
||||
return nil
|
||||
}
|
||||
if f.virtualF != nil {
|
||||
return f.virtualF.close()
|
||||
}
|
||||
if f.virtualD != nil {
|
||||
return f.virtualD.close()
|
||||
}
|
||||
return f.realF.Close()
|
||||
}
|
||||
|
||||
// Stat is like (*os.File).Stat()
|
||||
// Visit http://golang.org/pkg/os/#File.Stat for more information
|
||||
func (f *File) Stat() (os.FileInfo, error) {
|
||||
if f.appendedF != nil {
|
||||
if f.appendedF.dir {
|
||||
return f.appendedF.dirInfo, nil
|
||||
}
|
||||
if f.appendedFileReader == nil {
|
||||
return nil, errors.New("file is closed")
|
||||
}
|
||||
return f.appendedF.zipFile.FileInfo(), nil
|
||||
}
|
||||
if f.virtualF != nil {
|
||||
return f.virtualF.stat()
|
||||
}
|
||||
if f.virtualD != nil {
|
||||
return f.virtualD.stat()
|
||||
}
|
||||
return f.realF.Stat()
|
||||
}
|
||||
|
||||
// Readdir is like (*os.File).Readdir()
|
||||
// Visit http://golang.org/pkg/os/#File.Readdir for more information
|
||||
func (f *File) Readdir(count int) ([]os.FileInfo, error) {
|
||||
if f.appendedF != nil {
|
||||
if f.appendedF.dir {
|
||||
fi := make([]os.FileInfo, 0, len(f.appendedF.children))
|
||||
for _, childAppendedFile := range f.appendedF.children {
|
||||
if childAppendedFile.dir {
|
||||
fi = append(fi, childAppendedFile.dirInfo)
|
||||
} else {
|
||||
fi = append(fi, childAppendedFile.zipFile.FileInfo())
|
||||
}
|
||||
}
|
||||
return fi, nil
|
||||
}
|
||||
//++ TODO: is os.ErrInvalid the correct error for Readdir on file?
|
||||
return nil, os.ErrInvalid
|
||||
}
|
||||
if f.virtualF != nil {
|
||||
return f.virtualF.readdir(count)
|
||||
}
|
||||
if f.virtualD != nil {
|
||||
return f.virtualD.readdir(count)
|
||||
}
|
||||
return f.realF.Readdir(count)
|
||||
}
|
||||
|
||||
// Read is like (*os.File).Read()
|
||||
// Visit http://golang.org/pkg/os/#File.Read for more information
|
||||
func (f *File) Read(bts []byte) (int, error) {
|
||||
if f.appendedF != nil {
|
||||
if f.appendedFileReader == nil {
|
||||
return 0, &os.PathError{
|
||||
Op: "read",
|
||||
Path: filepath.Base(f.appendedF.zipFile.Name),
|
||||
Err: errors.New("file is closed"),
|
||||
}
|
||||
}
|
||||
if f.appendedF.dir {
|
||||
return 0, &os.PathError{
|
||||
Op: "read",
|
||||
Path: filepath.Base(f.appendedF.zipFile.Name),
|
||||
Err: errors.New("is a directory"),
|
||||
}
|
||||
}
|
||||
return f.appendedFileReader.Read(bts)
|
||||
}
|
||||
if f.virtualF != nil {
|
||||
return f.virtualF.read(bts)
|
||||
}
|
||||
if f.virtualD != nil {
|
||||
return f.virtualD.read(bts)
|
||||
}
|
||||
return f.realF.Read(bts)
|
||||
}
|
||||
|
||||
// Seek is like (*os.File).Seek()
|
||||
// Visit http://golang.org/pkg/os/#File.Seek for more information
|
||||
func (f *File) Seek(offset int64, whence int) (int64, error) {
|
||||
if f.appendedF != nil {
|
||||
if f.appendedFileReader == nil {
|
||||
return 0, &os.PathError{
|
||||
Op: "seek",
|
||||
Path: filepath.Base(f.appendedF.zipFile.Name),
|
||||
Err: errors.New("file is closed"),
|
||||
}
|
||||
}
|
||||
return f.appendedFileReader.Seek(offset, whence)
|
||||
}
|
||||
if f.virtualF != nil {
|
||||
return f.virtualF.seek(offset, whence)
|
||||
}
|
||||
if f.virtualD != nil {
|
||||
return f.virtualD.seek(offset, whence)
|
||||
}
|
||||
return f.realF.Seek(offset, whence)
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// HTTPBox implements http.FileSystem which allows the use of Box with a http.FileServer.
|
||||
// e.g.: http.Handle("/", http.FileServer(rice.MustFindBox("http-files").HTTPBox()))
|
||||
type HTTPBox struct {
|
||||
*Box
|
||||
}
|
||||
|
||||
// HTTPBox creates a new HTTPBox from an existing Box
|
||||
func (b *Box) HTTPBox() *HTTPBox {
|
||||
return &HTTPBox{b}
|
||||
}
|
||||
|
||||
// Open returns a File using the http.File interface
|
||||
func (hb *HTTPBox) Open(name string) (http.File, error) {
|
||||
return hb.Box.Open(name)
|
||||
}
|
@ -1,172 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"fmt"
|
||||
"go/build"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/daaku/go.zipexe"
|
||||
)
|
||||
|
||||
func operationAppend(pkgs []*build.Package) {
|
||||
if runtime.GOOS == "windows" {
|
||||
_, err := exec.LookPath("zip")
|
||||
if err != nil {
|
||||
fmt.Println("#### WARNING ! ####")
|
||||
fmt.Println("`rice append` is known not to work under windows because the `zip` command is not available. Please let me know if you got this to work (and how).")
|
||||
}
|
||||
}
|
||||
|
||||
// MARKED FOR DELETION
|
||||
// This is actually not required, the append command now has the option --exec required.
|
||||
// // check if package is a command
|
||||
// if !pkg.IsCommand() {
|
||||
// fmt.Println("Error: can not append to non-main package. Please follow instructions at github.com/GeertJohan/go.rice")
|
||||
// os.Exit(1)
|
||||
// }
|
||||
|
||||
// create tmp zipfile
|
||||
tmpZipfileName := filepath.Join(os.TempDir(), fmt.Sprintf("ricebox-%d-%s.zip", time.Now().Unix(), randomString(10)))
|
||||
verbosef("Will create tmp zipfile: %s\n", tmpZipfileName)
|
||||
tmpZipfile, err := os.Create(tmpZipfileName)
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating tmp zipfile: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer func() {
|
||||
tmpZipfile.Close()
|
||||
os.Remove(tmpZipfileName)
|
||||
}()
|
||||
|
||||
// find abs path for binary file
|
||||
binfileName, err := filepath.Abs(flags.Append.Executable)
|
||||
if err != nil {
|
||||
fmt.Printf("Error finding absolute path for executable to append: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
verbosef("Will append to file: %s\n", binfileName)
|
||||
|
||||
// check that command doesn't already have zip appended
|
||||
if rd, _ := zipexe.Open(binfileName); rd != nil {
|
||||
fmt.Printf("Cannot append to already appended executable. Please remove %s and build a fresh one.\n", binfileName)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// open binfile
|
||||
binfile, err := os.OpenFile(binfileName, os.O_WRONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: unable to open executable file: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// create zip.Writer
|
||||
zipWriter := zip.NewWriter(tmpZipfile)
|
||||
|
||||
for _, pkg := range pkgs {
|
||||
// find boxes for this command
|
||||
boxMap := findBoxes(pkg)
|
||||
|
||||
// notify user when no calls to rice.FindBox are made (is this an error and therefore os.Exit(1) ?
|
||||
if len(boxMap) == 0 {
|
||||
fmt.Printf("no calls to rice.FindBox() or rice.MustFindBox() found in import path `%s`\n", pkg.ImportPath)
|
||||
continue
|
||||
}
|
||||
|
||||
verbosef("\n")
|
||||
|
||||
for boxname := range boxMap {
|
||||
appendedBoxName := strings.Replace(boxname, `/`, `-`, -1)
|
||||
|
||||
// walk box path's and insert files
|
||||
boxPath := filepath.Clean(filepath.Join(pkg.Dir, boxname))
|
||||
filepath.Walk(boxPath, func(path string, info os.FileInfo, err error) error {
|
||||
if info == nil {
|
||||
fmt.Printf("Error: box \"%s\" not found on disk\n", path)
|
||||
os.Exit(1)
|
||||
}
|
||||
// create zipFilename
|
||||
zipFileName := filepath.Join(appendedBoxName, strings.TrimPrefix(path, boxPath))
|
||||
// write directories as empty file with comment "dir"
|
||||
if info.IsDir() {
|
||||
_, err := zipWriter.CreateHeader(&zip.FileHeader{
|
||||
Name: zipFileName,
|
||||
Comment: "dir",
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating dir in tmp zip: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// create zipFileWriter
|
||||
zipFileHeader, err := zip.FileInfoHeader(info)
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating zip FileHeader: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
zipFileHeader.Name = zipFileName
|
||||
zipFileWriter, err := zipWriter.CreateHeader(zipFileHeader)
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating file in tmp zip: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
srcFile, err := os.Open(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error opening file to append: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
_, err = io.Copy(zipFileWriter, srcFile)
|
||||
if err != nil {
|
||||
fmt.Printf("Error copying file contents to zip: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
srcFile.Close()
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
err = zipWriter.Close()
|
||||
if err != nil {
|
||||
fmt.Printf("Error closing tmp zipfile: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
err = tmpZipfile.Sync()
|
||||
if err != nil {
|
||||
fmt.Printf("Error syncing tmp zipfile: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
_, err = tmpZipfile.Seek(0, 0)
|
||||
if err != nil {
|
||||
fmt.Printf("Error seeking tmp zipfile: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
_, err = binfile.Seek(0, 2)
|
||||
if err != nil {
|
||||
fmt.Printf("Error seeking bin file: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
_, err = io.Copy(binfile, tmpZipfile)
|
||||
if err != nil {
|
||||
fmt.Printf("Error appending zipfile to executable: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
zipA := exec.Command("zip", "-A", binfileName)
|
||||
err = zipA.Run()
|
||||
if err != nil {
|
||||
fmt.Printf("Error setting zip offset: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/build"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func operationClean(pkg *build.Package) {
|
||||
filepath.Walk(pkg.Dir, func(filename string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
fmt.Printf("error walking pkg dir to clean files: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if info.IsDir() {
|
||||
return nil
|
||||
}
|
||||
verbosef("checking file '%s'\n", filename)
|
||||
if filepath.Base(filename) == "rice-box.go" ||
|
||||
strings.HasSuffix(filename, ".rice-box.go") ||
|
||||
strings.HasSuffix(filename, ".rice-box.syso") {
|
||||
err := os.Remove(filename)
|
||||
if err != nil {
|
||||
fmt.Printf("error removing file (%s): %s\n", filename, err)
|
||||
os.Exit(-1)
|
||||
}
|
||||
verbosef("removed file '%s'\n", filename)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
@ -1,158 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"go/build"
|
||||
"go/format"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const boxFilename = "rice-box.go"
|
||||
|
||||
func operationEmbedGo(pkg *build.Package) {
|
||||
|
||||
boxMap := findBoxes(pkg)
|
||||
|
||||
// notify user when no calls to rice.FindBox are made (is this an error and therefore os.Exit(1) ?
|
||||
if len(boxMap) == 0 {
|
||||
fmt.Println("no calls to rice.FindBox() found")
|
||||
return
|
||||
}
|
||||
|
||||
verbosef("\n")
|
||||
var boxes []*boxDataType
|
||||
|
||||
for boxname := range boxMap {
|
||||
// find path and filename for this box
|
||||
boxPath := filepath.Join(pkg.Dir, boxname)
|
||||
|
||||
// Check to see if the path for the box is a symbolic link. If so, simply
|
||||
// box what the symbolic link points to. Note: the filepath.Walk function
|
||||
// will NOT follow any nested symbolic links. This only handles the case
|
||||
// where the root of the box is a symbolic link.
|
||||
symPath, serr := os.Readlink(boxPath)
|
||||
if serr == nil {
|
||||
boxPath = symPath
|
||||
}
|
||||
|
||||
// verbose info
|
||||
verbosef("embedding box '%s' to '%s'\n", boxname, boxFilename)
|
||||
|
||||
// read box metadata
|
||||
boxInfo, ierr := os.Stat(boxPath)
|
||||
if ierr != nil {
|
||||
fmt.Printf("Error: unable to access box at %s\n", boxPath)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// create box datastructure (used by template)
|
||||
box := &boxDataType{
|
||||
BoxName: boxname,
|
||||
UnixNow: boxInfo.ModTime().Unix(),
|
||||
Files: make([]*fileDataType, 0),
|
||||
Dirs: make(map[string]*dirDataType),
|
||||
}
|
||||
|
||||
if !boxInfo.IsDir() {
|
||||
fmt.Printf("Error: Box %s must point to a directory but points to %s instead\n",
|
||||
boxname, boxPath)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// fill box datastructure with file data
|
||||
filepath.Walk(boxPath, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
fmt.Printf("error walking box: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
filename := strings.TrimPrefix(path, boxPath)
|
||||
filename = strings.Replace(filename, "\\", "/", -1)
|
||||
filename = strings.TrimPrefix(filename, "/")
|
||||
if info.IsDir() {
|
||||
dirData := &dirDataType{
|
||||
Identifier: "dir" + nextIdentifier(),
|
||||
FileName: filename,
|
||||
ModTime: info.ModTime().Unix(),
|
||||
ChildFiles: make([]*fileDataType, 0),
|
||||
ChildDirs: make([]*dirDataType, 0),
|
||||
}
|
||||
verbosef("\tincludes dir: '%s'\n", dirData.FileName)
|
||||
box.Dirs[dirData.FileName] = dirData
|
||||
|
||||
// add tree entry (skip for root, it'll create a recursion)
|
||||
if dirData.FileName != "" {
|
||||
pathParts := strings.Split(dirData.FileName, "/")
|
||||
parentDir := box.Dirs[strings.Join(pathParts[:len(pathParts)-1], "/")]
|
||||
parentDir.ChildDirs = append(parentDir.ChildDirs, dirData)
|
||||
}
|
||||
} else {
|
||||
fileData := &fileDataType{
|
||||
Identifier: "file" + nextIdentifier(),
|
||||
FileName: filename,
|
||||
ModTime: info.ModTime().Unix(),
|
||||
}
|
||||
verbosef("\tincludes file: '%s'\n", fileData.FileName)
|
||||
fileData.Content, err = ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
fmt.Printf("error reading file content while walking box: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
box.Files = append(box.Files, fileData)
|
||||
|
||||
// add tree entry
|
||||
pathParts := strings.Split(fileData.FileName, "/")
|
||||
parentDir := box.Dirs[strings.Join(pathParts[:len(pathParts)-1], "/")]
|
||||
if parentDir == nil {
|
||||
fmt.Printf("Error: parent of %s is not within the box\n", path)
|
||||
os.Exit(1)
|
||||
}
|
||||
parentDir.ChildFiles = append(parentDir.ChildFiles, fileData)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
boxes = append(boxes, box)
|
||||
|
||||
}
|
||||
|
||||
embedSourceUnformated := bytes.NewBuffer(make([]byte, 0))
|
||||
|
||||
// execute template to buffer
|
||||
err := tmplEmbeddedBox.Execute(
|
||||
embedSourceUnformated,
|
||||
embedFileDataType{pkg.Name, boxes},
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("error writing embedded box to file (template execute): %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// format the source code
|
||||
embedSource, err := format.Source(embedSourceUnformated.Bytes())
|
||||
if err != nil {
|
||||
log.Printf("error formatting embedSource: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// create go file for box
|
||||
boxFile, err := os.Create(filepath.Join(pkg.Dir, boxFilename))
|
||||
if err != nil {
|
||||
log.Printf("error creating embedded box file: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer boxFile.Close()
|
||||
|
||||
// write source to file
|
||||
_, err = io.Copy(boxFile, bytes.NewBuffer(embedSource))
|
||||
if err != nil {
|
||||
log.Printf("error writing embedSource to file: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
}
|
@ -1,204 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"go/build"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
"github.com/akavel/rsrc/coff"
|
||||
)
|
||||
|
||||
type sizedReader struct {
|
||||
*bytes.Reader
|
||||
}
|
||||
|
||||
func (s sizedReader) Size() int64 {
|
||||
return int64(s.Len())
|
||||
}
|
||||
|
||||
var tmplEmbeddedSysoHelper *template.Template
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
tmplEmbeddedSysoHelper, err = template.New("embeddedSysoHelper").Parse(`package {{.Package}}
|
||||
// ############# GENERATED CODE #####################
|
||||
// ## This file was generated by the rice tool.
|
||||
// ## Do not edit unless you know what you're doing.
|
||||
// ##################################################
|
||||
|
||||
// extern char _bricebox_{{.Symname}}[], _ericebox_{{.Symname}};
|
||||
// int get_{{.Symname}}_length() {
|
||||
// return &_ericebox_{{.Symname}} - _bricebox_{{.Symname}};
|
||||
// }
|
||||
import "C"
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func init() {
|
||||
ptr := unsafe.Pointer(&C._bricebox_{{.Symname}})
|
||||
bts := C.GoBytes(ptr, C.get_{{.Symname}}_length())
|
||||
embeddedBox := &embedded.EmbeddedBox{}
|
||||
err := gob.NewDecoder(bytes.NewReader(bts)).Decode(embeddedBox)
|
||||
if err != nil {
|
||||
panic("error decoding embedded box: "+err.Error())
|
||||
}
|
||||
embeddedBox.Link()
|
||||
embedded.RegisterEmbeddedBox(embeddedBox.Name, embeddedBox)
|
||||
}`)
|
||||
if err != nil {
|
||||
panic("could not parse template embeddedSysoHelper: " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
type embeddedSysoHelperData struct {
|
||||
Package string
|
||||
Symname string
|
||||
}
|
||||
|
||||
func operationEmbedSyso(pkg *build.Package) {
|
||||
|
||||
regexpSynameReplacer := regexp.MustCompile(`[^a-z0-9_]`)
|
||||
|
||||
boxMap := findBoxes(pkg)
|
||||
|
||||
// notify user when no calls to rice.FindBox are made (is this an error and therefore os.Exit(1) ?
|
||||
if len(boxMap) == 0 {
|
||||
fmt.Println("no calls to rice.FindBox() found")
|
||||
return
|
||||
}
|
||||
|
||||
verbosef("\n")
|
||||
|
||||
for boxname := range boxMap {
|
||||
// find path and filename for this box
|
||||
boxPath := filepath.Join(pkg.Dir, boxname)
|
||||
boxFilename := strings.Replace(boxname, "/", "-", -1)
|
||||
boxFilename = strings.Replace(boxFilename, "..", "back", -1)
|
||||
boxFilename = strings.Replace(boxFilename, ".", "-", -1)
|
||||
|
||||
// verbose info
|
||||
verbosef("embedding box '%s'\n", boxname)
|
||||
verbosef("\tto file %s\n", boxFilename)
|
||||
|
||||
// read box metadata
|
||||
boxInfo, ierr := os.Stat(boxPath)
|
||||
if ierr != nil {
|
||||
fmt.Printf("Error: unable to access box at %s\n", boxPath)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// create box datastructure (used by template)
|
||||
box := &embedded.EmbeddedBox{
|
||||
Name: boxname,
|
||||
Time: boxInfo.ModTime(),
|
||||
EmbedType: embedded.EmbedTypeSyso,
|
||||
Files: make(map[string]*embedded.EmbeddedFile),
|
||||
Dirs: make(map[string]*embedded.EmbeddedDir),
|
||||
}
|
||||
|
||||
// fill box datastructure with file data
|
||||
filepath.Walk(boxPath, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
fmt.Printf("error walking box: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
filename := strings.TrimPrefix(path, boxPath)
|
||||
filename = strings.Replace(filename, "\\", "/", -1)
|
||||
filename = strings.TrimPrefix(filename, "/")
|
||||
if info.IsDir() {
|
||||
embeddedDir := &embedded.EmbeddedDir{
|
||||
Filename: filename,
|
||||
DirModTime: info.ModTime(),
|
||||
}
|
||||
verbosef("\tincludes dir: '%s'\n", embeddedDir.Filename)
|
||||
box.Dirs[embeddedDir.Filename] = embeddedDir
|
||||
|
||||
// add tree entry (skip for root, it'll create a recursion)
|
||||
if embeddedDir.Filename != "" {
|
||||
pathParts := strings.Split(embeddedDir.Filename, "/")
|
||||
parentDir := box.Dirs[strings.Join(pathParts[:len(pathParts)-1], "/")]
|
||||
parentDir.ChildDirs = append(parentDir.ChildDirs, embeddedDir)
|
||||
}
|
||||
} else {
|
||||
embeddedFile := &embedded.EmbeddedFile{
|
||||
Filename: filename,
|
||||
FileModTime: info.ModTime(),
|
||||
Content: "",
|
||||
}
|
||||
verbosef("\tincludes file: '%s'\n", embeddedFile.Filename)
|
||||
contentBytes, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
fmt.Printf("error reading file content while walking box: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
embeddedFile.Content = string(contentBytes)
|
||||
box.Files[embeddedFile.Filename] = embeddedFile
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
// encode embedded box to gob file
|
||||
boxGobBuf := &bytes.Buffer{}
|
||||
err := gob.NewEncoder(boxGobBuf).Encode(box)
|
||||
if err != nil {
|
||||
fmt.Printf("error encoding box to gob: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
verbosef("gob-encoded embeddedBox is %d bytes large\n", boxGobBuf.Len())
|
||||
|
||||
// write coff
|
||||
symname := regexpSynameReplacer.ReplaceAllString(boxname, "_")
|
||||
createCoffSyso(boxname, symname, "386", boxGobBuf.Bytes())
|
||||
createCoffSyso(boxname, symname, "amd64", boxGobBuf.Bytes())
|
||||
|
||||
// write go
|
||||
sysoHelperData := embeddedSysoHelperData{
|
||||
Package: pkg.Name,
|
||||
Symname: symname,
|
||||
}
|
||||
fileSysoHelper, err := os.Create(boxFilename + ".rice-box.go")
|
||||
if err != nil {
|
||||
fmt.Printf("error creating syso helper: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
err = tmplEmbeddedSysoHelper.Execute(fileSysoHelper, sysoHelperData)
|
||||
if err != nil {
|
||||
fmt.Printf("error executing tmplEmbeddedSysoHelper: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func createCoffSyso(boxFilename string, symname string, arch string, data []byte) {
|
||||
boxCoff := coff.NewRDATA()
|
||||
switch arch {
|
||||
case "386":
|
||||
case "amd64":
|
||||
boxCoff.FileHeader.Machine = 0x8664
|
||||
default:
|
||||
panic("invalid arch")
|
||||
}
|
||||
boxCoff.AddData("_bricebox_"+symname, sizedReader{bytes.NewReader(data)})
|
||||
boxCoff.AddData("_ericebox_"+symname, io.NewSectionReader(strings.NewReader("\000\000"), 0, 2)) // TODO: why? copied from rsrc, which copied it from as-generated
|
||||
boxCoff.Freeze()
|
||||
err := writeCoff(boxCoff, boxFilename+"_"+arch+".rice-box.syso")
|
||||
if err != nil {
|
||||
fmt.Printf("error writing %s coff/.syso: %v\n", arch, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
@ -1,150 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/build"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func badArgument(fileset *token.FileSet, p token.Pos) {
|
||||
pos := fileset.Position(p)
|
||||
filename := pos.Filename
|
||||
base, err := os.Getwd()
|
||||
if err == nil {
|
||||
rpath, perr := filepath.Rel(base, pos.Filename)
|
||||
if perr == nil {
|
||||
filename = rpath
|
||||
}
|
||||
}
|
||||
msg := fmt.Sprintf("%s:%d: Error: found call to rice.FindBox, "+
|
||||
"but argument must be a string literal.\n", filename, pos.Line)
|
||||
fmt.Println(msg)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func findBoxes(pkg *build.Package) map[string]bool {
|
||||
// create map of boxes to embed
|
||||
var boxMap = make(map[string]bool)
|
||||
|
||||
// create one list of files for this package
|
||||
filenames := make([]string, 0, len(pkg.GoFiles)+len(pkg.CgoFiles))
|
||||
filenames = append(filenames, pkg.GoFiles...)
|
||||
filenames = append(filenames, pkg.CgoFiles...)
|
||||
|
||||
// loop over files, search for rice.FindBox(..) calls
|
||||
for _, filename := range filenames {
|
||||
// find full filepath
|
||||
fullpath := filepath.Join(pkg.Dir, filename)
|
||||
if strings.HasSuffix(filename, "rice-box.go") {
|
||||
// Ignore *.rice-box.go files
|
||||
verbosef("skipping file %q\n", fullpath)
|
||||
continue
|
||||
}
|
||||
verbosef("scanning file %q\n", fullpath)
|
||||
|
||||
fset := token.NewFileSet()
|
||||
f, err := parser.ParseFile(fset, fullpath, nil, 0)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var riceIsImported bool
|
||||
ricePkgName := "rice"
|
||||
for _, imp := range f.Imports {
|
||||
if strings.HasSuffix(imp.Path.Value, "go.rice\"") {
|
||||
if imp.Name != nil {
|
||||
ricePkgName = imp.Name.Name
|
||||
}
|
||||
riceIsImported = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !riceIsImported {
|
||||
// Rice wasn't imported, so we won't find a box.
|
||||
continue
|
||||
}
|
||||
if ricePkgName == "_" {
|
||||
// Rice pkg is unnamed, so we won't find a box.
|
||||
continue
|
||||
}
|
||||
|
||||
// Inspect AST, looking for calls to (Must)?FindBox.
|
||||
// First parameter of the func must be a basic literal.
|
||||
// Identifiers won't be resolved.
|
||||
var nextIdentIsBoxFunc bool
|
||||
var nextBasicLitParamIsBoxName bool
|
||||
var boxCall token.Pos
|
||||
var variableToRemember string
|
||||
var validVariablesForBoxes map[string]bool = make(map[string]bool)
|
||||
|
||||
ast.Inspect(f, func(node ast.Node) bool {
|
||||
if node == nil {
|
||||
return false
|
||||
}
|
||||
switch x := node.(type) {
|
||||
// this case fixes the var := func() style assignments, not assignments to vars declared separately from the assignment.
|
||||
case *ast.AssignStmt:
|
||||
var assign = node.(*ast.AssignStmt)
|
||||
name, found := assign.Lhs[0].(*ast.Ident)
|
||||
if found {
|
||||
variableToRemember = name.Name
|
||||
composite, first := assign.Rhs[0].(*ast.CompositeLit)
|
||||
if first {
|
||||
riceSelector, second := composite.Type.(*ast.SelectorExpr)
|
||||
|
||||
if second {
|
||||
callCorrect := riceSelector.Sel.Name == "Config"
|
||||
packageName, third := riceSelector.X.(*ast.Ident)
|
||||
|
||||
if third && callCorrect && packageName.Name == ricePkgName {
|
||||
validVariablesForBoxes[name.Name] = true
|
||||
verbosef("\tfound variable, saving to scan for boxes: %q\n", name.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case *ast.Ident:
|
||||
if nextIdentIsBoxFunc || ricePkgName == "." {
|
||||
nextIdentIsBoxFunc = false
|
||||
if x.Name == "FindBox" || x.Name == "MustFindBox" {
|
||||
nextBasicLitParamIsBoxName = true
|
||||
boxCall = x.Pos()
|
||||
}
|
||||
} else {
|
||||
if x.Name == ricePkgName || validVariablesForBoxes[x.Name] {
|
||||
nextIdentIsBoxFunc = true
|
||||
}
|
||||
}
|
||||
case *ast.BasicLit:
|
||||
if nextBasicLitParamIsBoxName {
|
||||
if x.Kind == token.STRING {
|
||||
nextBasicLitParamIsBoxName = false
|
||||
// trim "" or ``
|
||||
name := x.Value[1 : len(x.Value)-1]
|
||||
boxMap[name] = true
|
||||
verbosef("\tfound box %q\n", name)
|
||||
} else {
|
||||
badArgument(fset, boxCall)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
if nextIdentIsBoxFunc {
|
||||
nextIdentIsBoxFunc = false
|
||||
}
|
||||
if nextBasicLitParamIsBoxName {
|
||||
badArgument(fset, boxCall)
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
return boxMap
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/build"
|
||||
"os"
|
||||
|
||||
goflags "github.com/jessevdk/go-flags" // rename import to `goflags` (file scope) so we can use `var flags` (package scope)
|
||||
)
|
||||
|
||||
// flags
|
||||
var flags struct {
|
||||
Verbose bool `long:"verbose" short:"v" description:"Show verbose debug information"`
|
||||
ImportPaths []string `long:"import-path" short:"i" description:"Import path(s) to use. Using PWD when left empty. Specify multiple times for more import paths to append"`
|
||||
|
||||
Append struct {
|
||||
Executable string `long:"exec" description:"Executable to append" required:"true"`
|
||||
} `command:"append"`
|
||||
|
||||
EmbedGo struct{} `command:"embed-go" alias:"embed"`
|
||||
EmbedSyso struct{} `command:"embed-syso"`
|
||||
Clean struct{} `command:"clean"`
|
||||
}
|
||||
|
||||
// flags parser
|
||||
var flagsParser *goflags.Parser
|
||||
|
||||
// initFlags parses the given flags.
|
||||
// when the user asks for help (-h or --help): the application exists with status 0
|
||||
// when unexpected flags is given: the application exits with status 1
|
||||
func parseArguments() {
|
||||
// create flags parser in global var, for flagsParser.Active.Name (operation)
|
||||
flagsParser = goflags.NewParser(&flags, goflags.Default)
|
||||
|
||||
// parse flags
|
||||
args, err := flagsParser.Parse()
|
||||
if err != nil {
|
||||
// assert the err to be a flags.Error
|
||||
flagError := err.(*goflags.Error)
|
||||
if flagError.Type == goflags.ErrHelp {
|
||||
// user asked for help on flags.
|
||||
// program can exit successfully
|
||||
os.Exit(0)
|
||||
}
|
||||
if flagError.Type == goflags.ErrUnknownFlag {
|
||||
fmt.Println("Use --help to view available options.")
|
||||
os.Exit(1)
|
||||
}
|
||||
if flagError.Type == goflags.ErrRequired {
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("Error parsing flags: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// error on left-over arguments
|
||||
if len(args) > 0 {
|
||||
fmt.Printf("Unexpected arguments: %s\nUse --help to view available options.", args)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// default ImportPath to pwd when not set
|
||||
if len(flags.ImportPaths) == 0 {
|
||||
pwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
fmt.Printf("error getting pwd: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
verbosef("using pwd as import path\n")
|
||||
// find non-absolute path for this pwd
|
||||
pkg, err := build.ImportDir(pwd, build.FindOnly)
|
||||
if err != nil {
|
||||
fmt.Printf("error using current directory as import path: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
flags.ImportPaths = append(flags.ImportPaths, pkg.ImportPath)
|
||||
verbosef("using import paths: %s\n", flags.ImportPaths)
|
||||
return
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/GeertJohan/go.incremental"
|
||||
)
|
||||
|
||||
var identifierCount incremental.Uint64
|
||||
|
||||
func nextIdentifier() string {
|
||||
num := identifierCount.Next()
|
||||
return strconv.FormatUint(num, 36) // 0123456789abcdefghijklmnopqrstuvwxyz
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/build"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// parser arguments
|
||||
parseArguments()
|
||||
|
||||
// find package for path
|
||||
var pkgs []*build.Package
|
||||
for _, importPath := range flags.ImportPaths {
|
||||
pkg := pkgForPath(importPath)
|
||||
pkgs = append(pkgs, pkg)
|
||||
}
|
||||
|
||||
// switch on the operation to perform
|
||||
switch flagsParser.Active.Name {
|
||||
case "embed", "embed-go":
|
||||
for _, pkg := range pkgs {
|
||||
operationEmbedGo(pkg)
|
||||
}
|
||||
case "embed-syso":
|
||||
log.Println("WARNING: embedding .syso is experimental..")
|
||||
for _, pkg := range pkgs {
|
||||
operationEmbedSyso(pkg)
|
||||
}
|
||||
case "append":
|
||||
operationAppend(pkgs)
|
||||
case "clean":
|
||||
for _, pkg := range pkgs {
|
||||
operationClean(pkg)
|
||||
}
|
||||
}
|
||||
|
||||
// all done
|
||||
verbosef("\n")
|
||||
verbosef("rice finished successfully\n")
|
||||
}
|
||||
|
||||
// helper function to get *build.Package for given path
|
||||
func pkgForPath(path string) *build.Package {
|
||||
// get pwd for relative imports
|
||||
pwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
fmt.Printf("error getting pwd (required for relative imports): %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// read full package information
|
||||
pkg, err := build.Import(path, pwd, 0)
|
||||
if err != nil {
|
||||
fmt.Printf("error reading package: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
return pkg
|
||||
}
|
||||
|
||||
func verbosef(format string, stuff ...interface{}) {
|
||||
if flags.Verbose {
|
||||
log.Printf(format, stuff...)
|
||||
}
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
var tmplEmbeddedBox *template.Template
|
||||
|
||||
func init() {
|
||||
var err error
|
||||
|
||||
// parse embedded box template
|
||||
tmplEmbeddedBox, err = template.New("embeddedBox").Parse(`package {{.Package}}
|
||||
|
||||
import (
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
"time"
|
||||
)
|
||||
|
||||
{{range .Boxes}}
|
||||
func init() {
|
||||
|
||||
// define files
|
||||
{{range .Files}}{{.Identifier}} := &embedded.EmbeddedFile{
|
||||
Filename: ` + "`" + `{{.FileName}}` + "`" + `,
|
||||
FileModTime: time.Unix({{.ModTime}}, 0),
|
||||
Content: string({{.Content | printf "%q"}}),
|
||||
}
|
||||
{{end}}
|
||||
|
||||
// define dirs
|
||||
{{range .Dirs}}{{.Identifier}} := &embedded.EmbeddedDir{
|
||||
Filename: ` + "`" + `{{.FileName}}` + "`" + `,
|
||||
DirModTime: time.Unix({{.ModTime}}, 0),
|
||||
ChildFiles: []*embedded.EmbeddedFile{
|
||||
{{range .ChildFiles}}{{.Identifier}}, // {{.FileName}}
|
||||
{{end}}
|
||||
},
|
||||
}
|
||||
{{end}}
|
||||
|
||||
// link ChildDirs
|
||||
{{range .Dirs}}{{.Identifier}}.ChildDirs = []*embedded.EmbeddedDir{
|
||||
{{range .ChildDirs}}{{.Identifier}}, // {{.FileName}}
|
||||
{{end}}
|
||||
}
|
||||
{{end}}
|
||||
|
||||
// register embeddedBox
|
||||
embedded.RegisterEmbeddedBox(` + "`" + `{{.BoxName}}` + "`" + `, &embedded.EmbeddedBox{
|
||||
Name: ` + "`" + `{{.BoxName}}` + "`" + `,
|
||||
Time: time.Unix({{.UnixNow}}, 0),
|
||||
Dirs: map[string]*embedded.EmbeddedDir{
|
||||
{{range .Dirs}}"{{.FileName}}": {{.Identifier}},
|
||||
{{end}}
|
||||
},
|
||||
Files: map[string]*embedded.EmbeddedFile{
|
||||
{{range .Files}}"{{.FileName}}": {{.Identifier}},
|
||||
{{end}}
|
||||
},
|
||||
})
|
||||
}
|
||||
{{end}}`)
|
||||
if err != nil {
|
||||
fmt.Printf("error parsing embedded box template: %s\n", err)
|
||||
os.Exit(-1)
|
||||
}
|
||||
}
|
||||
|
||||
type embedFileDataType struct {
|
||||
Package string
|
||||
Boxes []*boxDataType
|
||||
}
|
||||
|
||||
type boxDataType struct {
|
||||
BoxName string
|
||||
UnixNow int64
|
||||
Files []*fileDataType
|
||||
Dirs map[string]*dirDataType
|
||||
}
|
||||
|
||||
type fileDataType struct {
|
||||
Identifier string
|
||||
FileName string
|
||||
Content []byte
|
||||
ModTime int64
|
||||
}
|
||||
|
||||
type dirDataType struct {
|
||||
Identifier string
|
||||
FileName string
|
||||
Content []byte
|
||||
ModTime int64
|
||||
ChildDirs []*dirDataType
|
||||
ChildFiles []*fileDataType
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
// randomString generates a pseudo-random alpha-numeric string with given length.
|
||||
func randomString(length int) string {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
k := make([]rune, length)
|
||||
for i := 0; i < length; i++ {
|
||||
c := rand.Intn(35)
|
||||
if c < 10 {
|
||||
c += 48 // numbers (0-9) (0+48 == 48 == '0', 9+48 == 57 == '9')
|
||||
} else {
|
||||
c += 87 // lower case alphabets (a-z) (10+87 == 97 == 'a', 35+87 == 122 = 'z')
|
||||
}
|
||||
k[i] = rune(c)
|
||||
}
|
||||
return string(k)
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"reflect"
|
||||
|
||||
"github.com/akavel/rsrc/binutil"
|
||||
"github.com/akavel/rsrc/coff"
|
||||
)
|
||||
|
||||
// copied from github.com/akavel/rsrc
|
||||
// LICENSE: MIT
|
||||
// Copyright 2013-2014 The rsrc Authors. (https://github.com/akavel/rsrc/blob/master/AUTHORS)
|
||||
func writeCoff(coff *coff.Coff, fnameout string) error {
|
||||
out, err := os.Create(fnameout)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer out.Close()
|
||||
w := binutil.Writer{W: out}
|
||||
|
||||
// write the resulting file to disk
|
||||
binutil.Walk(coff, func(v reflect.Value, path string) error {
|
||||
if binutil.Plain(v.Kind()) {
|
||||
w.WriteLE(v.Interface())
|
||||
return nil
|
||||
}
|
||||
vv, ok := v.Interface().(binutil.SizedReader)
|
||||
if ok {
|
||||
w.WriteFromSized(vv)
|
||||
return binutil.WALK_SKIP
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
if w.Err != nil {
|
||||
return fmt.Errorf("Error writing output file: %s", w.Err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package rice
|
||||
|
||||
import "os"
|
||||
|
||||
// SortByName allows an array of os.FileInfo objects
|
||||
// to be easily sorted by filename using sort.Sort(SortByName(array))
|
||||
type SortByName []os.FileInfo
|
||||
|
||||
func (f SortByName) Len() int { return len(f) }
|
||||
func (f SortByName) Less(i, j int) bool { return f[i].Name() < f[j].Name() }
|
||||
func (f SortByName) Swap(i, j int) { f[i], f[j] = f[j], f[i] }
|
||||
|
||||
// SortByModified allows an array of os.FileInfo objects
|
||||
// to be easily sorted by modified date using sort.Sort(SortByModified(array))
|
||||
type SortByModified []os.FileInfo
|
||||
|
||||
func (f SortByModified) Len() int { return len(f) }
|
||||
func (f SortByModified) Less(i, j int) bool { return f[i].ModTime().Unix() > f[j].ModTime().Unix() }
|
||||
func (f SortByModified) Swap(i, j int) { f[i], f[j] = f[j], f[i] }
|
@ -1,252 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
)
|
||||
|
||||
//++ TODO: IDEA: merge virtualFile and virtualDir, this decreases work done by rice.File
|
||||
|
||||
// Error indicating some function is not implemented yet (but available to satisfy an interface)
|
||||
var ErrNotImplemented = errors.New("not implemented yet")
|
||||
|
||||
// virtualFile is a 'stateful' virtual file.
|
||||
// virtualFile wraps an *EmbeddedFile for a call to Box.Open() and virtualizes 'read cursor' (offset) and 'closing'.
|
||||
// virtualFile is only internally visible and should be exposed through rice.File
|
||||
type virtualFile struct {
|
||||
*embedded.EmbeddedFile // the actual embedded file, embedded to obtain methods
|
||||
offset int64 // read position on the virtual file
|
||||
closed bool // closed when true
|
||||
}
|
||||
|
||||
// create a new virtualFile for given EmbeddedFile
|
||||
func newVirtualFile(ef *embedded.EmbeddedFile) *virtualFile {
|
||||
vf := &virtualFile{
|
||||
EmbeddedFile: ef,
|
||||
offset: 0,
|
||||
closed: false,
|
||||
}
|
||||
return vf
|
||||
}
|
||||
|
||||
//++ TODO check for nil pointers in all these methods. When so: return os.PathError with Err: os.ErrInvalid
|
||||
|
||||
func (vf *virtualFile) close() error {
|
||||
if vf.closed {
|
||||
return &os.PathError{
|
||||
Op: "close",
|
||||
Path: vf.EmbeddedFile.Filename,
|
||||
Err: errors.New("already closed"),
|
||||
}
|
||||
}
|
||||
vf.EmbeddedFile = nil
|
||||
vf.closed = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (vf *virtualFile) stat() (os.FileInfo, error) {
|
||||
if vf.closed {
|
||||
return nil, &os.PathError{
|
||||
Op: "stat",
|
||||
Path: vf.EmbeddedFile.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
return (*embeddedFileInfo)(vf.EmbeddedFile), nil
|
||||
}
|
||||
|
||||
func (vf *virtualFile) readdir(count int) ([]os.FileInfo, error) {
|
||||
if vf.closed {
|
||||
return nil, &os.PathError{
|
||||
Op: "readdir",
|
||||
Path: vf.EmbeddedFile.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
//TODO: return proper error for a readdir() call on a file
|
||||
return nil, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (vf *virtualFile) read(bts []byte) (int, error) {
|
||||
if vf.closed {
|
||||
return 0, &os.PathError{
|
||||
Op: "read",
|
||||
Path: vf.EmbeddedFile.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
|
||||
end := vf.offset + int64(len(bts))
|
||||
|
||||
if end >= int64(len(vf.Content)) {
|
||||
// end of file, so return what we have + EOF
|
||||
n := copy(bts, vf.Content[vf.offset:])
|
||||
vf.offset = 0
|
||||
return n, io.EOF
|
||||
}
|
||||
|
||||
n := copy(bts, vf.Content[vf.offset:end])
|
||||
vf.offset += int64(n)
|
||||
return n, nil
|
||||
|
||||
}
|
||||
|
||||
func (vf *virtualFile) seek(offset int64, whence int) (int64, error) {
|
||||
if vf.closed {
|
||||
return 0, &os.PathError{
|
||||
Op: "seek",
|
||||
Path: vf.EmbeddedFile.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
var e error
|
||||
|
||||
//++ TODO: check if this is correct implementation for seek
|
||||
switch whence {
|
||||
case os.SEEK_SET:
|
||||
//++ check if new offset isn't out of bounds, set e when it is, then break out of switch
|
||||
vf.offset = offset
|
||||
case os.SEEK_CUR:
|
||||
//++ check if new offset isn't out of bounds, set e when it is, then break out of switch
|
||||
vf.offset += offset
|
||||
case os.SEEK_END:
|
||||
//++ check if new offset isn't out of bounds, set e when it is, then break out of switch
|
||||
vf.offset = int64(len(vf.EmbeddedFile.Content)) - offset
|
||||
}
|
||||
|
||||
if e != nil {
|
||||
return 0, &os.PathError{
|
||||
Op: "seek",
|
||||
Path: vf.Filename,
|
||||
Err: e,
|
||||
}
|
||||
}
|
||||
|
||||
return vf.offset, nil
|
||||
}
|
||||
|
||||
// virtualDir is a 'stateful' virtual directory.
|
||||
// virtualDir wraps an *EmbeddedDir for a call to Box.Open() and virtualizes 'closing'.
|
||||
// virtualDir is only internally visible and should be exposed through rice.File
|
||||
type virtualDir struct {
|
||||
*embedded.EmbeddedDir
|
||||
offset int // readdir position on the directory
|
||||
closed bool
|
||||
}
|
||||
|
||||
// create a new virtualDir for given EmbeddedDir
|
||||
func newVirtualDir(ed *embedded.EmbeddedDir) *virtualDir {
|
||||
vd := &virtualDir{
|
||||
EmbeddedDir: ed,
|
||||
offset: 0,
|
||||
closed: false,
|
||||
}
|
||||
return vd
|
||||
}
|
||||
|
||||
func (vd *virtualDir) close() error {
|
||||
//++ TODO: needs sync mutex?
|
||||
if vd.closed {
|
||||
return &os.PathError{
|
||||
Op: "close",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("already closed"),
|
||||
}
|
||||
}
|
||||
vd.closed = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (vd *virtualDir) stat() (os.FileInfo, error) {
|
||||
if vd.closed {
|
||||
return nil, &os.PathError{
|
||||
Op: "stat",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
return (*embeddedDirInfo)(vd.EmbeddedDir), nil
|
||||
}
|
||||
|
||||
func (vd *virtualDir) readdir(n int) (fi []os.FileInfo, err error) {
|
||||
|
||||
if vd.closed {
|
||||
return nil, &os.PathError{
|
||||
Op: "readdir",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
|
||||
// Build up the array of our contents
|
||||
var files []os.FileInfo
|
||||
|
||||
// Add the child directories
|
||||
for _, child := range vd.ChildDirs {
|
||||
child.Filename = filepath.Base(child.Filename)
|
||||
files = append(files, (*embeddedDirInfo)(child))
|
||||
}
|
||||
|
||||
// Add the child files
|
||||
for _, child := range vd.ChildFiles {
|
||||
child.Filename = filepath.Base(child.Filename)
|
||||
files = append(files, (*embeddedFileInfo)(child))
|
||||
}
|
||||
|
||||
// Sort it by filename (lexical order)
|
||||
sort.Sort(SortByName(files))
|
||||
|
||||
// Return all contents if that's what is requested
|
||||
if n <= 0 {
|
||||
vd.offset = 0
|
||||
return files, nil
|
||||
}
|
||||
|
||||
// If user has requested past the end of our list
|
||||
// return what we can and send an EOF
|
||||
if vd.offset+n >= len(files) {
|
||||
offset := vd.offset
|
||||
vd.offset = 0
|
||||
return files[offset:], io.EOF
|
||||
}
|
||||
|
||||
offset := vd.offset
|
||||
vd.offset += n
|
||||
return files[offset : offset+n], nil
|
||||
|
||||
}
|
||||
|
||||
func (vd *virtualDir) read(bts []byte) (int, error) {
|
||||
if vd.closed {
|
||||
return 0, &os.PathError{
|
||||
Op: "read",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
return 0, &os.PathError{
|
||||
Op: "read",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("is a directory"),
|
||||
}
|
||||
}
|
||||
|
||||
func (vd *virtualDir) seek(offset int64, whence int) (int64, error) {
|
||||
if vd.closed {
|
||||
return 0, &os.PathError{
|
||||
Op: "seek",
|
||||
Path: vd.EmbeddedDir.Filename,
|
||||
Err: errors.New("bad file descriptor"),
|
||||
}
|
||||
}
|
||||
return 0, &os.PathError{
|
||||
Op: "seek",
|
||||
Path: vd.Filename,
|
||||
Err: errors.New("is a directory"),
|
||||
}
|
||||
}
|
@ -1,122 +0,0 @@
|
||||
package rice
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Walk is like filepath.Walk()
|
||||
// Visit http://golang.org/pkg/path/filepath/#Walk for more information
|
||||
func (b *Box) Walk(path string, walkFn filepath.WalkFunc) error {
|
||||
|
||||
pathFile, err := b.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer pathFile.Close()
|
||||
|
||||
pathInfo, err := pathFile.Stat()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if b.IsAppended() || b.IsEmbedded() {
|
||||
return b.walk(path, pathInfo, walkFn)
|
||||
}
|
||||
|
||||
// We don't have any embedded or appended box so use live filesystem mode
|
||||
return filepath.Walk(b.absolutePath+string(os.PathSeparator)+path, func(path string, info os.FileInfo, err error) error {
|
||||
|
||||
// Strip out the box name from the returned paths
|
||||
path = strings.TrimPrefix(path, b.absolutePath+string(os.PathSeparator))
|
||||
return walkFn(path, info, err)
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// walk recursively descends path.
|
||||
// See walk() in $GOROOT/src/pkg/path/filepath/path.go
|
||||
func (b *Box) walk(path string, info os.FileInfo, walkFn filepath.WalkFunc) error {
|
||||
|
||||
err := walkFn(path, info, nil)
|
||||
if err != nil {
|
||||
if info.IsDir() && err == filepath.SkipDir {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
if !info.IsDir() {
|
||||
return nil
|
||||
}
|
||||
|
||||
names, err := b.readDirNames(path)
|
||||
if err != nil {
|
||||
return walkFn(path, info, err)
|
||||
}
|
||||
|
||||
for _, name := range names {
|
||||
|
||||
filename := filepath.Join(path, name)
|
||||
fileObject, err := b.Open(filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fileObject.Close()
|
||||
|
||||
fileInfo, err := fileObject.Stat()
|
||||
if err != nil {
|
||||
if err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err = b.walk(filename, fileInfo, walkFn)
|
||||
if err != nil {
|
||||
if !fileInfo.IsDir() || err != filepath.SkipDir {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
// readDirNames reads the directory named by path and returns a sorted list of directory entries.
|
||||
// See readDirNames() in $GOROOT/pkg/path/filepath/path.go
|
||||
func (b *Box) readDirNames(path string) ([]string, error) {
|
||||
|
||||
f, err := b.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
stat, err := f.Stat()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !stat.IsDir() {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
infos, err := f.Readdir(0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var names []string
|
||||
|
||||
for _, info := range infos {
|
||||
names = append(names, info.Name())
|
||||
}
|
||||
|
||||
sort.Strings(names)
|
||||
return names, nil
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
|
||||
# Folders
|
||||
_obj
|
||||
_test
|
||||
|
||||
# Architecture specific extensions/prefixes
|
||||
*.[568vq]
|
||||
[568vq].out
|
||||
|
||||
*.cgo1.go
|
||||
*.cgo2.c
|
||||
_cgo_defun.c
|
||||
_cgo_gotypes.go
|
||||
_cgo_export.*
|
||||
|
||||
_testmain.go
|
||||
|
||||
*.exe
|
@ -0,0 +1,3 @@
|
||||
[submodule "generator/SteamKit"]
|
||||
path = generator/SteamKit
|
||||
url = https://github.com/Philipp15b/SteamKit.git
|
@ -0,0 +1,64 @@
|
||||
# Steam for Go
|
||||
|
||||
This library implements Steam's protocol to allow automation of different actions on Steam without running an actual Steam client. It is based on [SteamKit2](https://github.com/SteamRE/SteamKit), a .NET library.
|
||||
|
||||
In addition, it contains APIs to Steam Community features, like trade offers and inventories.
|
||||
|
||||
Some of the currently implemented features:
|
||||
|
||||
* Trading and trade offers, including inventories and notifications
|
||||
* Friend and group management
|
||||
* Chatting with friends
|
||||
* Persona states (online, offline, looking to trade, etc.)
|
||||
* SteamGuard with two-factor authentication
|
||||
* Team Fortress 2: Crafting, moving, naming and deleting items
|
||||
|
||||
If this is useful to you, there's also the [go-steamapi](https://github.com/Philipp15b/go-steamapi) package that wraps some of the official Steam Web API's types.
|
||||
|
||||
## Installation
|
||||
|
||||
go get github.com/Philipp15b/go-steam
|
||||
|
||||
## Usage
|
||||
|
||||
You can view the documentation with the [`godoc`](http://golang.org/cmd/godoc) tool or
|
||||
[online on godoc.org](http://godoc.org/github.com/Philipp15b/go-steam).
|
||||
|
||||
You should also take a look at the following sub-packages:
|
||||
|
||||
* [`gsbot`](http://godoc.org/github.com/Philipp15b/go-steam/gsbot) utilites that make writing bots easier
|
||||
* [example bot](http://godoc.org/github.com/Philipp15b/go-steam/gsbot/gsbot) and [its source code](https://github.com/Philipp15b/go-steam/blob/master/gsbot/gsbot/gsbot.go)
|
||||
* [`trade`](http://godoc.org/github.com/Philipp15b/go-steam/trade) for trading
|
||||
* [`tradeoffer`](http://godoc.org/github.com/Philipp15b/go-steam/tradeoffer) for trade offers
|
||||
* [`economy/inventory`](http://godoc.org/github.com/Philipp15b/go-steam/economy/inventory) for inventories
|
||||
* [`tf2`](http://godoc.org/github.com/Philipp15b/go-steam/tf2) for Team Fortress 2 related things
|
||||
|
||||
## Working with go-steam
|
||||
|
||||
Whether you want to develop your own Steam bot or directly work on go-steam itself, there are are few things to know.
|
||||
|
||||
* If something is not working, check first if the same operation works (under the same conditions!) in the Steam client on that account. Maybe there's something go-steam doesn't handle correctly or you're missing a warning that's not obviously shown in go-steam. This is particularly important when working with trading since there are [restrictions](https://support.steampowered.com/kb_article.php?ref=1047-edfm-2932), for example newly authorized devices will not be able to trade for seven days.
|
||||
* Since Steam does not maintain a public API for most of the things go-steam implements, you can expect that sometimes things break randomly. Especially the `trade` and `tradeoffer` packages have been affected in the past.
|
||||
* Always gather as much information as possible. When you file an issue, be as precise and complete as you can. This makes debugging way easier.
|
||||
* If you haven't noticed yet, expect to find lots of things out yourself. Debugging can be complicated and Steam's internals are too.
|
||||
* Sometimes things break and other [SteamKit ports](https://github.com/SteamRE/SteamKit/wiki/Ports) are fixed already. Maybe take a look what people are saying over there? There's also the [SteamKit IRC channel](https://github.com/SteamRE/SteamKit/wiki#contact).
|
||||
|
||||
## Updating go-steam to a new SteamKit version
|
||||
|
||||
To update go-steam to a new version of SteamKit, do the following:
|
||||
|
||||
go get github.com/golang/protobuf/protoc-gen-go/
|
||||
git submodule init && git submodule update
|
||||
cd generator
|
||||
go run generator.go clean proto steamlang
|
||||
|
||||
Make sure that `$GOPATH/bin` / `protoc-gen-go` is in your `$PATH`. You'll also need [`protoc`](https://developers.google.com/protocol-buffers/docs/downloads), the protocol buffer compiler. At the moment, we use Protocol Buffers 2.6.1 with `proco-gen-go`-[2402d76](https://github.com/golang/protobuf/tree/2402d76f3d41f928c7902a765dfc872356dd3aad).
|
||||
|
||||
To compile the Steam Language files, you also need the [.NET Framework](https://www.microsoft.com/net/downloads)
|
||||
on Windows or [mono](http://www.go-mono.com/mono-downloads/download.html) on other operating systems.
|
||||
|
||||
Apply the protocol changes where necessary.
|
||||
|
||||
## License
|
||||
|
||||
Steam for Go is licensed under the New BSD License. More information can be found in LICENSE.txt.
|
@ -1,35 +0,0 @@
|
||||
package community
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/cookiejar"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
const cookiePath = "https://steamcommunity.com/"
|
||||
|
||||
func SetCookies(client *http.Client, sessionId, steamLogin, steamLoginSecure string) {
|
||||
if client.Jar == nil {
|
||||
client.Jar, _ = cookiejar.New(new(cookiejar.Options))
|
||||
}
|
||||
base, err := url.Parse(cookiePath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
client.Jar.SetCookies(base, []*http.Cookie{
|
||||
// It seems that, for some reason, Steam tries to URL-decode the cookie.
|
||||
&http.Cookie{
|
||||
Name: "sessionid",
|
||||
Value: url.QueryEscape(sessionId),
|
||||
},
|
||||
// steamLogin is already URL-encoded.
|
||||
&http.Cookie{
|
||||
Name: "steamLogin",
|
||||
Value: steamLogin,
|
||||
},
|
||||
&http.Cookie{
|
||||
Name: "steamLoginSecure",
|
||||
Value: steamLoginSecure,
|
||||
},
|
||||
})
|
||||
}
|
File diff suppressed because it is too large
Load Diff
18413
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_client.pb.go
generated
vendored
18413
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_client.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
6123
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_client_fantasy.pb.go
generated
vendored
6123
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_client_fantasy.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
10997
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_common.pb.go
generated
vendored
10997
vendor/github.com/Philipp15b/go-steam/dota/protocol/protobuf/dota_common.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,579 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: gcsystemmsgs.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package protobuf
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the proto package protobuf is being compiled against.
|
||||
const _ = proto.ProtoPackageIsVersion1
|
||||
|
||||
type EGCSystemMsg int32
|
||||
|
||||
const (
|
||||
EGCSystemMsg_k_EGCMsgInvalid EGCSystemMsg = 0
|
||||
EGCSystemMsg_k_EGCMsgMulti EGCSystemMsg = 1
|
||||
EGCSystemMsg_k_EGCMsgGenericReply EGCSystemMsg = 10
|
||||
EGCSystemMsg_k_EGCMsgSystemBase EGCSystemMsg = 50
|
||||
EGCSystemMsg_k_EGCMsgAchievementAwarded EGCSystemMsg = 51
|
||||
EGCSystemMsg_k_EGCMsgConCommand EGCSystemMsg = 52
|
||||
EGCSystemMsg_k_EGCMsgStartPlaying EGCSystemMsg = 53
|
||||
EGCSystemMsg_k_EGCMsgStopPlaying EGCSystemMsg = 54
|
||||
EGCSystemMsg_k_EGCMsgStartGameserver EGCSystemMsg = 55
|
||||
EGCSystemMsg_k_EGCMsgStopGameserver EGCSystemMsg = 56
|
||||
EGCSystemMsg_k_EGCMsgWGRequest EGCSystemMsg = 57
|
||||
EGCSystemMsg_k_EGCMsgWGResponse EGCSystemMsg = 58
|
||||
EGCSystemMsg_k_EGCMsgGetUserGameStatsSchema EGCSystemMsg = 59
|
||||
EGCSystemMsg_k_EGCMsgGetUserGameStatsSchemaResponse EGCSystemMsg = 60
|
||||
EGCSystemMsg_k_EGCMsgGetUserStatsDEPRECATED EGCSystemMsg = 61
|
||||
EGCSystemMsg_k_EGCMsgGetUserStatsResponse EGCSystemMsg = 62
|
||||
EGCSystemMsg_k_EGCMsgAppInfoUpdated EGCSystemMsg = 63
|
||||
EGCSystemMsg_k_EGCMsgValidateSession EGCSystemMsg = 64
|
||||
EGCSystemMsg_k_EGCMsgValidateSessionResponse EGCSystemMsg = 65
|
||||
EGCSystemMsg_k_EGCMsgLookupAccountFromInput EGCSystemMsg = 66
|
||||
EGCSystemMsg_k_EGCMsgSendHTTPRequest EGCSystemMsg = 67
|
||||
EGCSystemMsg_k_EGCMsgSendHTTPRequestResponse EGCSystemMsg = 68
|
||||
EGCSystemMsg_k_EGCMsgPreTestSetup EGCSystemMsg = 69
|
||||
EGCSystemMsg_k_EGCMsgRecordSupportAction EGCSystemMsg = 70
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetails_DEPRECATED EGCSystemMsg = 71
|
||||
EGCSystemMsg_k_EGCMsgReceiveInterAppMessage EGCSystemMsg = 73
|
||||
EGCSystemMsg_k_EGCMsgFindAccounts EGCSystemMsg = 74
|
||||
EGCSystemMsg_k_EGCMsgPostAlert EGCSystemMsg = 75
|
||||
EGCSystemMsg_k_EGCMsgGetLicenses EGCSystemMsg = 76
|
||||
EGCSystemMsg_k_EGCMsgGetUserStats EGCSystemMsg = 77
|
||||
EGCSystemMsg_k_EGCMsgGetCommands EGCSystemMsg = 78
|
||||
EGCSystemMsg_k_EGCMsgGetCommandsResponse EGCSystemMsg = 79
|
||||
EGCSystemMsg_k_EGCMsgAddFreeLicense EGCSystemMsg = 80
|
||||
EGCSystemMsg_k_EGCMsgAddFreeLicenseResponse EGCSystemMsg = 81
|
||||
EGCSystemMsg_k_EGCMsgGetIPLocation EGCSystemMsg = 82
|
||||
EGCSystemMsg_k_EGCMsgGetIPLocationResponse EGCSystemMsg = 83
|
||||
EGCSystemMsg_k_EGCMsgSystemStatsSchema EGCSystemMsg = 84
|
||||
EGCSystemMsg_k_EGCMsgGetSystemStats EGCSystemMsg = 85
|
||||
EGCSystemMsg_k_EGCMsgGetSystemStatsResponse EGCSystemMsg = 86
|
||||
EGCSystemMsg_k_EGCMsgSendEmail EGCSystemMsg = 87
|
||||
EGCSystemMsg_k_EGCMsgSendEmailResponse EGCSystemMsg = 88
|
||||
EGCSystemMsg_k_EGCMsgGetEmailTemplate EGCSystemMsg = 89
|
||||
EGCSystemMsg_k_EGCMsgGetEmailTemplateResponse EGCSystemMsg = 90
|
||||
EGCSystemMsg_k_EGCMsgGrantGuestPass EGCSystemMsg = 91
|
||||
EGCSystemMsg_k_EGCMsgGrantGuestPassResponse EGCSystemMsg = 92
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetails EGCSystemMsg = 93
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetailsResponse EGCSystemMsg = 94
|
||||
EGCSystemMsg_k_EGCMsgGetPersonaNames EGCSystemMsg = 95
|
||||
EGCSystemMsg_k_EGCMsgGetPersonaNamesResponse EGCSystemMsg = 96
|
||||
EGCSystemMsg_k_EGCMsgMultiplexMsg EGCSystemMsg = 97
|
||||
EGCSystemMsg_k_EGCMsgWebAPIRegisterInterfaces EGCSystemMsg = 101
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequest EGCSystemMsg = 102
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequestHttpResponse EGCSystemMsg = 104
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequestForwardResponse EGCSystemMsg = 105
|
||||
EGCSystemMsg_k_EGCMsgMemCachedGet EGCSystemMsg = 200
|
||||
EGCSystemMsg_k_EGCMsgMemCachedGetResponse EGCSystemMsg = 201
|
||||
EGCSystemMsg_k_EGCMsgMemCachedSet EGCSystemMsg = 202
|
||||
EGCSystemMsg_k_EGCMsgMemCachedDelete EGCSystemMsg = 203
|
||||
EGCSystemMsg_k_EGCMsgMemCachedStats EGCSystemMsg = 204
|
||||
EGCSystemMsg_k_EGCMsgMemCachedStatsResponse EGCSystemMsg = 205
|
||||
EGCSystemMsg_k_EGCMsgSQLStats EGCSystemMsg = 210
|
||||
EGCSystemMsg_k_EGCMsgSQLStatsResponse EGCSystemMsg = 211
|
||||
EGCSystemMsg_k_EGCMsgMasterSetDirectory EGCSystemMsg = 220
|
||||
EGCSystemMsg_k_EGCMsgMasterSetDirectoryResponse EGCSystemMsg = 221
|
||||
EGCSystemMsg_k_EGCMsgMasterSetWebAPIRouting EGCSystemMsg = 222
|
||||
EGCSystemMsg_k_EGCMsgMasterSetWebAPIRoutingResponse EGCSystemMsg = 223
|
||||
EGCSystemMsg_k_EGCMsgMasterSetClientMsgRouting EGCSystemMsg = 224
|
||||
EGCSystemMsg_k_EGCMsgMasterSetClientMsgRoutingResponse EGCSystemMsg = 225
|
||||
EGCSystemMsg_k_EGCMsgSetOptions EGCSystemMsg = 226
|
||||
EGCSystemMsg_k_EGCMsgSetOptionsResponse EGCSystemMsg = 227
|
||||
EGCSystemMsg_k_EGCMsgSystemBase2 EGCSystemMsg = 500
|
||||
EGCSystemMsg_k_EGCMsgGetPurchaseTrustStatus EGCSystemMsg = 501
|
||||
EGCSystemMsg_k_EGCMsgGetPurchaseTrustStatusResponse EGCSystemMsg = 502
|
||||
EGCSystemMsg_k_EGCMsgUpdateSession EGCSystemMsg = 503
|
||||
EGCSystemMsg_k_EGCMsgGCAccountVacStatusChange EGCSystemMsg = 504
|
||||
EGCSystemMsg_k_EGCMsgCheckFriendship EGCSystemMsg = 505
|
||||
EGCSystemMsg_k_EGCMsgCheckFriendshipResponse EGCSystemMsg = 506
|
||||
EGCSystemMsg_k_EGCMsgGetPartnerAccountLink EGCSystemMsg = 507
|
||||
EGCSystemMsg_k_EGCMsgGetPartnerAccountLinkResponse EGCSystemMsg = 508
|
||||
EGCSystemMsg_k_EGCMsgVSReportedSuspiciousActivity EGCSystemMsg = 509
|
||||
EGCSystemMsg_k_EGCMsgDPPartnerMicroTxns EGCSystemMsg = 512
|
||||
EGCSystemMsg_k_EGCMsgDPPartnerMicroTxnsResponse EGCSystemMsg = 513
|
||||
EGCSystemMsg_k_EGCMsgGetIPASN EGCSystemMsg = 514
|
||||
EGCSystemMsg_k_EGCMsgGetIPASNResponse EGCSystemMsg = 515
|
||||
EGCSystemMsg_k_EGCMsgGetAppFriendsList EGCSystemMsg = 516
|
||||
EGCSystemMsg_k_EGCMsgGetAppFriendsListResponse EGCSystemMsg = 517
|
||||
)
|
||||
|
||||
var EGCSystemMsg_name = map[int32]string{
|
||||
0: "k_EGCMsgInvalid",
|
||||
1: "k_EGCMsgMulti",
|
||||
10: "k_EGCMsgGenericReply",
|
||||
50: "k_EGCMsgSystemBase",
|
||||
51: "k_EGCMsgAchievementAwarded",
|
||||
52: "k_EGCMsgConCommand",
|
||||
53: "k_EGCMsgStartPlaying",
|
||||
54: "k_EGCMsgStopPlaying",
|
||||
55: "k_EGCMsgStartGameserver",
|
||||
56: "k_EGCMsgStopGameserver",
|
||||
57: "k_EGCMsgWGRequest",
|
||||
58: "k_EGCMsgWGResponse",
|
||||
59: "k_EGCMsgGetUserGameStatsSchema",
|
||||
60: "k_EGCMsgGetUserGameStatsSchemaResponse",
|
||||
61: "k_EGCMsgGetUserStatsDEPRECATED",
|
||||
62: "k_EGCMsgGetUserStatsResponse",
|
||||
63: "k_EGCMsgAppInfoUpdated",
|
||||
64: "k_EGCMsgValidateSession",
|
||||
65: "k_EGCMsgValidateSessionResponse",
|
||||
66: "k_EGCMsgLookupAccountFromInput",
|
||||
67: "k_EGCMsgSendHTTPRequest",
|
||||
68: "k_EGCMsgSendHTTPRequestResponse",
|
||||
69: "k_EGCMsgPreTestSetup",
|
||||
70: "k_EGCMsgRecordSupportAction",
|
||||
71: "k_EGCMsgGetAccountDetails_DEPRECATED",
|
||||
73: "k_EGCMsgReceiveInterAppMessage",
|
||||
74: "k_EGCMsgFindAccounts",
|
||||
75: "k_EGCMsgPostAlert",
|
||||
76: "k_EGCMsgGetLicenses",
|
||||
77: "k_EGCMsgGetUserStats",
|
||||
78: "k_EGCMsgGetCommands",
|
||||
79: "k_EGCMsgGetCommandsResponse",
|
||||
80: "k_EGCMsgAddFreeLicense",
|
||||
81: "k_EGCMsgAddFreeLicenseResponse",
|
||||
82: "k_EGCMsgGetIPLocation",
|
||||
83: "k_EGCMsgGetIPLocationResponse",
|
||||
84: "k_EGCMsgSystemStatsSchema",
|
||||
85: "k_EGCMsgGetSystemStats",
|
||||
86: "k_EGCMsgGetSystemStatsResponse",
|
||||
87: "k_EGCMsgSendEmail",
|
||||
88: "k_EGCMsgSendEmailResponse",
|
||||
89: "k_EGCMsgGetEmailTemplate",
|
||||
90: "k_EGCMsgGetEmailTemplateResponse",
|
||||
91: "k_EGCMsgGrantGuestPass",
|
||||
92: "k_EGCMsgGrantGuestPassResponse",
|
||||
93: "k_EGCMsgGetAccountDetails",
|
||||
94: "k_EGCMsgGetAccountDetailsResponse",
|
||||
95: "k_EGCMsgGetPersonaNames",
|
||||
96: "k_EGCMsgGetPersonaNamesResponse",
|
||||
97: "k_EGCMsgMultiplexMsg",
|
||||
101: "k_EGCMsgWebAPIRegisterInterfaces",
|
||||
102: "k_EGCMsgWebAPIJobRequest",
|
||||
104: "k_EGCMsgWebAPIJobRequestHttpResponse",
|
||||
105: "k_EGCMsgWebAPIJobRequestForwardResponse",
|
||||
200: "k_EGCMsgMemCachedGet",
|
||||
201: "k_EGCMsgMemCachedGetResponse",
|
||||
202: "k_EGCMsgMemCachedSet",
|
||||
203: "k_EGCMsgMemCachedDelete",
|
||||
204: "k_EGCMsgMemCachedStats",
|
||||
205: "k_EGCMsgMemCachedStatsResponse",
|
||||
210: "k_EGCMsgSQLStats",
|
||||
211: "k_EGCMsgSQLStatsResponse",
|
||||
220: "k_EGCMsgMasterSetDirectory",
|
||||
221: "k_EGCMsgMasterSetDirectoryResponse",
|
||||
222: "k_EGCMsgMasterSetWebAPIRouting",
|
||||
223: "k_EGCMsgMasterSetWebAPIRoutingResponse",
|
||||
224: "k_EGCMsgMasterSetClientMsgRouting",
|
||||
225: "k_EGCMsgMasterSetClientMsgRoutingResponse",
|
||||
226: "k_EGCMsgSetOptions",
|
||||
227: "k_EGCMsgSetOptionsResponse",
|
||||
500: "k_EGCMsgSystemBase2",
|
||||
501: "k_EGCMsgGetPurchaseTrustStatus",
|
||||
502: "k_EGCMsgGetPurchaseTrustStatusResponse",
|
||||
503: "k_EGCMsgUpdateSession",
|
||||
504: "k_EGCMsgGCAccountVacStatusChange",
|
||||
505: "k_EGCMsgCheckFriendship",
|
||||
506: "k_EGCMsgCheckFriendshipResponse",
|
||||
507: "k_EGCMsgGetPartnerAccountLink",
|
||||
508: "k_EGCMsgGetPartnerAccountLinkResponse",
|
||||
509: "k_EGCMsgVSReportedSuspiciousActivity",
|
||||
512: "k_EGCMsgDPPartnerMicroTxns",
|
||||
513: "k_EGCMsgDPPartnerMicroTxnsResponse",
|
||||
514: "k_EGCMsgGetIPASN",
|
||||
515: "k_EGCMsgGetIPASNResponse",
|
||||
516: "k_EGCMsgGetAppFriendsList",
|
||||
517: "k_EGCMsgGetAppFriendsListResponse",
|
||||
}
|
||||
var EGCSystemMsg_value = map[string]int32{
|
||||
"k_EGCMsgInvalid": 0,
|
||||
"k_EGCMsgMulti": 1,
|
||||
"k_EGCMsgGenericReply": 10,
|
||||
"k_EGCMsgSystemBase": 50,
|
||||
"k_EGCMsgAchievementAwarded": 51,
|
||||
"k_EGCMsgConCommand": 52,
|
||||
"k_EGCMsgStartPlaying": 53,
|
||||
"k_EGCMsgStopPlaying": 54,
|
||||
"k_EGCMsgStartGameserver": 55,
|
||||
"k_EGCMsgStopGameserver": 56,
|
||||
"k_EGCMsgWGRequest": 57,
|
||||
"k_EGCMsgWGResponse": 58,
|
||||
"k_EGCMsgGetUserGameStatsSchema": 59,
|
||||
"k_EGCMsgGetUserGameStatsSchemaResponse": 60,
|
||||
"k_EGCMsgGetUserStatsDEPRECATED": 61,
|
||||
"k_EGCMsgGetUserStatsResponse": 62,
|
||||
"k_EGCMsgAppInfoUpdated": 63,
|
||||
"k_EGCMsgValidateSession": 64,
|
||||
"k_EGCMsgValidateSessionResponse": 65,
|
||||
"k_EGCMsgLookupAccountFromInput": 66,
|
||||
"k_EGCMsgSendHTTPRequest": 67,
|
||||
"k_EGCMsgSendHTTPRequestResponse": 68,
|
||||
"k_EGCMsgPreTestSetup": 69,
|
||||
"k_EGCMsgRecordSupportAction": 70,
|
||||
"k_EGCMsgGetAccountDetails_DEPRECATED": 71,
|
||||
"k_EGCMsgReceiveInterAppMessage": 73,
|
||||
"k_EGCMsgFindAccounts": 74,
|
||||
"k_EGCMsgPostAlert": 75,
|
||||
"k_EGCMsgGetLicenses": 76,
|
||||
"k_EGCMsgGetUserStats": 77,
|
||||
"k_EGCMsgGetCommands": 78,
|
||||
"k_EGCMsgGetCommandsResponse": 79,
|
||||
"k_EGCMsgAddFreeLicense": 80,
|
||||
"k_EGCMsgAddFreeLicenseResponse": 81,
|
||||
"k_EGCMsgGetIPLocation": 82,
|
||||
"k_EGCMsgGetIPLocationResponse": 83,
|
||||
"k_EGCMsgSystemStatsSchema": 84,
|
||||
"k_EGCMsgGetSystemStats": 85,
|
||||
"k_EGCMsgGetSystemStatsResponse": 86,
|
||||
"k_EGCMsgSendEmail": 87,
|
||||
"k_EGCMsgSendEmailResponse": 88,
|
||||
"k_EGCMsgGetEmailTemplate": 89,
|
||||
"k_EGCMsgGetEmailTemplateResponse": 90,
|
||||
"k_EGCMsgGrantGuestPass": 91,
|
||||
"k_EGCMsgGrantGuestPassResponse": 92,
|
||||
"k_EGCMsgGetAccountDetails": 93,
|
||||
"k_EGCMsgGetAccountDetailsResponse": 94,
|
||||
"k_EGCMsgGetPersonaNames": 95,
|
||||
"k_EGCMsgGetPersonaNamesResponse": 96,
|
||||
"k_EGCMsgMultiplexMsg": 97,
|
||||
"k_EGCMsgWebAPIRegisterInterfaces": 101,
|
||||
"k_EGCMsgWebAPIJobRequest": 102,
|
||||
"k_EGCMsgWebAPIJobRequestHttpResponse": 104,
|
||||
"k_EGCMsgWebAPIJobRequestForwardResponse": 105,
|
||||
"k_EGCMsgMemCachedGet": 200,
|
||||
"k_EGCMsgMemCachedGetResponse": 201,
|
||||
"k_EGCMsgMemCachedSet": 202,
|
||||
"k_EGCMsgMemCachedDelete": 203,
|
||||
"k_EGCMsgMemCachedStats": 204,
|
||||
"k_EGCMsgMemCachedStatsResponse": 205,
|
||||
"k_EGCMsgSQLStats": 210,
|
||||
"k_EGCMsgSQLStatsResponse": 211,
|
||||
"k_EGCMsgMasterSetDirectory": 220,
|
||||
"k_EGCMsgMasterSetDirectoryResponse": 221,
|
||||
"k_EGCMsgMasterSetWebAPIRouting": 222,
|
||||
"k_EGCMsgMasterSetWebAPIRoutingResponse": 223,
|
||||
"k_EGCMsgMasterSetClientMsgRouting": 224,
|
||||
"k_EGCMsgMasterSetClientMsgRoutingResponse": 225,
|
||||
"k_EGCMsgSetOptions": 226,
|
||||
"k_EGCMsgSetOptionsResponse": 227,
|
||||
"k_EGCMsgSystemBase2": 500,
|
||||
"k_EGCMsgGetPurchaseTrustStatus": 501,
|
||||
"k_EGCMsgGetPurchaseTrustStatusResponse": 502,
|
||||
"k_EGCMsgUpdateSession": 503,
|
||||
"k_EGCMsgGCAccountVacStatusChange": 504,
|
||||
"k_EGCMsgCheckFriendship": 505,
|
||||
"k_EGCMsgCheckFriendshipResponse": 506,
|
||||
"k_EGCMsgGetPartnerAccountLink": 507,
|
||||
"k_EGCMsgGetPartnerAccountLinkResponse": 508,
|
||||
"k_EGCMsgVSReportedSuspiciousActivity": 509,
|
||||
"k_EGCMsgDPPartnerMicroTxns": 512,
|
||||
"k_EGCMsgDPPartnerMicroTxnsResponse": 513,
|
||||
"k_EGCMsgGetIPASN": 514,
|
||||
"k_EGCMsgGetIPASNResponse": 515,
|
||||
"k_EGCMsgGetAppFriendsList": 516,
|
||||
"k_EGCMsgGetAppFriendsListResponse": 517,
|
||||
}
|
||||
|
||||
func (x EGCSystemMsg) Enum() *EGCSystemMsg {
|
||||
p := new(EGCSystemMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCSystemMsg) String() string {
|
||||
return proto.EnumName(EGCSystemMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCSystemMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCSystemMsg_value, data, "EGCSystemMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCSystemMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCSystemMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{0} }
|
||||
|
||||
type ESOMsg int32
|
||||
|
||||
const (
|
||||
ESOMsg_k_ESOMsg_Create ESOMsg = 21
|
||||
ESOMsg_k_ESOMsg_Update ESOMsg = 22
|
||||
ESOMsg_k_ESOMsg_Destroy ESOMsg = 23
|
||||
ESOMsg_k_ESOMsg_CacheSubscribed ESOMsg = 24
|
||||
ESOMsg_k_ESOMsg_CacheUnsubscribed ESOMsg = 25
|
||||
ESOMsg_k_ESOMsg_UpdateMultiple ESOMsg = 26
|
||||
ESOMsg_k_ESOMsg_CacheSubscriptionRefresh ESOMsg = 28
|
||||
ESOMsg_k_ESOMsg_CacheSubscribedUpToDate ESOMsg = 29
|
||||
)
|
||||
|
||||
var ESOMsg_name = map[int32]string{
|
||||
21: "k_ESOMsg_Create",
|
||||
22: "k_ESOMsg_Update",
|
||||
23: "k_ESOMsg_Destroy",
|
||||
24: "k_ESOMsg_CacheSubscribed",
|
||||
25: "k_ESOMsg_CacheUnsubscribed",
|
||||
26: "k_ESOMsg_UpdateMultiple",
|
||||
28: "k_ESOMsg_CacheSubscriptionRefresh",
|
||||
29: "k_ESOMsg_CacheSubscribedUpToDate",
|
||||
}
|
||||
var ESOMsg_value = map[string]int32{
|
||||
"k_ESOMsg_Create": 21,
|
||||
"k_ESOMsg_Update": 22,
|
||||
"k_ESOMsg_Destroy": 23,
|
||||
"k_ESOMsg_CacheSubscribed": 24,
|
||||
"k_ESOMsg_CacheUnsubscribed": 25,
|
||||
"k_ESOMsg_UpdateMultiple": 26,
|
||||
"k_ESOMsg_CacheSubscriptionRefresh": 28,
|
||||
"k_ESOMsg_CacheSubscribedUpToDate": 29,
|
||||
}
|
||||
|
||||
func (x ESOMsg) Enum() *ESOMsg {
|
||||
p := new(ESOMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x ESOMsg) String() string {
|
||||
return proto.EnumName(ESOMsg_name, int32(x))
|
||||
}
|
||||
func (x *ESOMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(ESOMsg_value, data, "ESOMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = ESOMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (ESOMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{1} }
|
||||
|
||||
type EGCBaseClientMsg int32
|
||||
|
||||
const (
|
||||
EGCBaseClientMsg_k_EMsgGCPingRequest EGCBaseClientMsg = 3001
|
||||
EGCBaseClientMsg_k_EMsgGCPingResponse EGCBaseClientMsg = 3002
|
||||
EGCBaseClientMsg_k_EMsgGCClientWelcome EGCBaseClientMsg = 4004
|
||||
EGCBaseClientMsg_k_EMsgGCServerWelcome EGCBaseClientMsg = 4005
|
||||
EGCBaseClientMsg_k_EMsgGCClientHello EGCBaseClientMsg = 4006
|
||||
EGCBaseClientMsg_k_EMsgGCServerHello EGCBaseClientMsg = 4007
|
||||
EGCBaseClientMsg_k_EMsgGCClientConnectionStatus EGCBaseClientMsg = 4009
|
||||
EGCBaseClientMsg_k_EMsgGCServerConnectionStatus EGCBaseClientMsg = 4010
|
||||
)
|
||||
|
||||
var EGCBaseClientMsg_name = map[int32]string{
|
||||
3001: "k_EMsgGCPingRequest",
|
||||
3002: "k_EMsgGCPingResponse",
|
||||
4004: "k_EMsgGCClientWelcome",
|
||||
4005: "k_EMsgGCServerWelcome",
|
||||
4006: "k_EMsgGCClientHello",
|
||||
4007: "k_EMsgGCServerHello",
|
||||
4009: "k_EMsgGCClientConnectionStatus",
|
||||
4010: "k_EMsgGCServerConnectionStatus",
|
||||
}
|
||||
var EGCBaseClientMsg_value = map[string]int32{
|
||||
"k_EMsgGCPingRequest": 3001,
|
||||
"k_EMsgGCPingResponse": 3002,
|
||||
"k_EMsgGCClientWelcome": 4004,
|
||||
"k_EMsgGCServerWelcome": 4005,
|
||||
"k_EMsgGCClientHello": 4006,
|
||||
"k_EMsgGCServerHello": 4007,
|
||||
"k_EMsgGCClientConnectionStatus": 4009,
|
||||
"k_EMsgGCServerConnectionStatus": 4010,
|
||||
}
|
||||
|
||||
func (x EGCBaseClientMsg) Enum() *EGCBaseClientMsg {
|
||||
p := new(EGCBaseClientMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCBaseClientMsg) String() string {
|
||||
return proto.EnumName(EGCBaseClientMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCBaseClientMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCBaseClientMsg_value, data, "EGCBaseClientMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCBaseClientMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCBaseClientMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{2} }
|
||||
|
||||
type EGCToGCMsg int32
|
||||
|
||||
const (
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterAck EGCToGCMsg = 150
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterAckResponse EGCToGCMsg = 151
|
||||
EGCToGCMsg_k_EGCToGCMsgRouted EGCToGCMsg = 152
|
||||
EGCToGCMsg_k_EGCToGCMsgRoutedReply EGCToGCMsg = 153
|
||||
EGCToGCMsg_k_EMsgGCUpdateSubGCSessionInfo EGCToGCMsg = 154
|
||||
EGCToGCMsg_k_EMsgGCRequestSubGCSessionInfo EGCToGCMsg = 155
|
||||
EGCToGCMsg_k_EMsgGCRequestSubGCSessionInfoResponse EGCToGCMsg = 156
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterStartupComplete EGCToGCMsg = 157
|
||||
EGCToGCMsg_k_EMsgGCToGCSOCacheSubscribe EGCToGCMsg = 158
|
||||
EGCToGCMsg_k_EMsgGCToGCSOCacheUnsubscribe EGCToGCMsg = 159
|
||||
EGCToGCMsg_k_EMsgGCToGCLoadSessionSOCache EGCToGCMsg = 160
|
||||
EGCToGCMsg_k_EMsgGCToGCLoadSessionSOCacheResponse EGCToGCMsg = 161
|
||||
EGCToGCMsg_k_EMsgGCToGCUpdateSessionStats EGCToGCMsg = 162
|
||||
)
|
||||
|
||||
var EGCToGCMsg_name = map[int32]string{
|
||||
150: "k_EGCToGCMsgMasterAck",
|
||||
151: "k_EGCToGCMsgMasterAckResponse",
|
||||
152: "k_EGCToGCMsgRouted",
|
||||
153: "k_EGCToGCMsgRoutedReply",
|
||||
154: "k_EMsgGCUpdateSubGCSessionInfo",
|
||||
155: "k_EMsgGCRequestSubGCSessionInfo",
|
||||
156: "k_EMsgGCRequestSubGCSessionInfoResponse",
|
||||
157: "k_EGCToGCMsgMasterStartupComplete",
|
||||
158: "k_EMsgGCToGCSOCacheSubscribe",
|
||||
159: "k_EMsgGCToGCSOCacheUnsubscribe",
|
||||
160: "k_EMsgGCToGCLoadSessionSOCache",
|
||||
161: "k_EMsgGCToGCLoadSessionSOCacheResponse",
|
||||
162: "k_EMsgGCToGCUpdateSessionStats",
|
||||
}
|
||||
var EGCToGCMsg_value = map[string]int32{
|
||||
"k_EGCToGCMsgMasterAck": 150,
|
||||
"k_EGCToGCMsgMasterAckResponse": 151,
|
||||
"k_EGCToGCMsgRouted": 152,
|
||||
"k_EGCToGCMsgRoutedReply": 153,
|
||||
"k_EMsgGCUpdateSubGCSessionInfo": 154,
|
||||
"k_EMsgGCRequestSubGCSessionInfo": 155,
|
||||
"k_EMsgGCRequestSubGCSessionInfoResponse": 156,
|
||||
"k_EGCToGCMsgMasterStartupComplete": 157,
|
||||
"k_EMsgGCToGCSOCacheSubscribe": 158,
|
||||
"k_EMsgGCToGCSOCacheUnsubscribe": 159,
|
||||
"k_EMsgGCToGCLoadSessionSOCache": 160,
|
||||
"k_EMsgGCToGCLoadSessionSOCacheResponse": 161,
|
||||
"k_EMsgGCToGCUpdateSessionStats": 162,
|
||||
}
|
||||
|
||||
func (x EGCToGCMsg) Enum() *EGCToGCMsg {
|
||||
p := new(EGCToGCMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCToGCMsg) String() string {
|
||||
return proto.EnumName(EGCToGCMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCToGCMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCToGCMsg_value, data, "EGCToGCMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCToGCMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCToGCMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{3} }
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("EGCSystemMsg", EGCSystemMsg_name, EGCSystemMsg_value)
|
||||
proto.RegisterEnum("ESOMsg", ESOMsg_name, ESOMsg_value)
|
||||
proto.RegisterEnum("EGCBaseClientMsg", EGCBaseClientMsg_name, EGCBaseClientMsg_value)
|
||||
proto.RegisterEnum("EGCToGCMsg", EGCToGCMsg_name, EGCToGCMsg_value)
|
||||
}
|
||||
|
||||
var system_fileDescriptor0 = []byte{
|
||||
// 1475 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x57, 0x59, 0x73, 0x1b, 0xc5,
|
||||
0x13, 0xcf, 0x96, 0xfc, 0xff, 0x3f, 0x4c, 0x41, 0xd1, 0x99, 0xc4, 0x47, 0x12, 0x27, 0x4a, 0x42,
|
||||
0x0e, 0x62, 0xa8, 0x3c, 0x84, 0xfb, 0x46, 0x91, 0x64, 0x5b, 0x41, 0x8e, 0x15, 0x4b, 0xb6, 0xb9,
|
||||
0xcd, 0x7a, 0x35, 0xb6, 0xb6, 0x2c, 0xed, 0x2c, 0x33, 0xbb, 0x26, 0x7e, 0x0b, 0xd7, 0x57, 0xe0,
|
||||
0xbe, 0x8b, 0xa3, 0xe0, 0x1b, 0xc0, 0x27, 0xe0, 0x7c, 0x81, 0x57, 0xee, 0x7c, 0x01, 0x1e, 0xb8,
|
||||
0x21, 0x55, 0xf4, 0xee, 0xce, 0xce, 0xce, 0x4a, 0xb2, 0x79, 0x93, 0xe6, 0xd7, 0xdd, 0xd3, 0xdd,
|
||||
0xd3, 0xfd, 0xeb, 0x5e, 0x42, 0xd7, 0x1d, 0xb9, 0x25, 0x03, 0xd6, 0xeb, 0xc9, 0x75, 0x79, 0xda,
|
||||
0x17, 0x3c, 0xe0, 0x53, 0x97, 0x47, 0xc9, 0x55, 0xd5, 0x99, 0x72, 0x33, 0x3e, 0x9f, 0x93, 0xeb,
|
||||
0x74, 0x0f, 0xb9, 0x66, 0x63, 0x05, 0x4f, 0xf0, 0x77, 0xcd, 0xdb, 0xb4, 0xbb, 0x6e, 0x1b, 0x76,
|
||||
0xd1, 0xdd, 0xe4, 0xea, 0xf4, 0x70, 0x2e, 0xec, 0x06, 0x2e, 0x58, 0x74, 0x82, 0xec, 0x4d, 0x8f,
|
||||
0x66, 0x98, 0xc7, 0x84, 0xeb, 0x2c, 0x30, 0xbf, 0xbb, 0x05, 0x84, 0x8e, 0x11, 0x9a, 0x22, 0x89,
|
||||
0xd9, 0xb3, 0xb6, 0x64, 0x70, 0x86, 0x1e, 0x22, 0xfb, 0xd3, 0xf3, 0x92, 0xd3, 0x71, 0xd9, 0x26,
|
||||
0xeb, 0x31, 0x2f, 0x28, 0x3d, 0x69, 0x8b, 0x36, 0x6b, 0xc3, 0x8d, 0xa6, 0x5e, 0x99, 0x7b, 0x65,
|
||||
0xde, 0xeb, 0xd9, 0x5e, 0x1b, 0x6e, 0x32, 0x6f, 0x6a, 0x06, 0xb6, 0x08, 0x1a, 0x5d, 0x7b, 0xcb,
|
||||
0xf5, 0xd6, 0xe1, 0x66, 0x3a, 0x4e, 0xf6, 0x64, 0x08, 0xf7, 0x53, 0xe0, 0x16, 0x7a, 0x80, 0x8c,
|
||||
0xe7, 0x54, 0x66, 0xec, 0x1e, 0x93, 0x4c, 0x6c, 0x32, 0x01, 0xb7, 0xd2, 0xfd, 0x64, 0xcc, 0xd4,
|
||||
0x32, 0xb0, 0xdb, 0xe8, 0x28, 0xd9, 0x9d, 0x62, 0xcb, 0x33, 0x0b, 0xec, 0x89, 0x90, 0xc9, 0x00,
|
||||
0x6e, 0x37, 0x5d, 0x8b, 0x8e, 0xa5, 0xcf, 0x3d, 0x0c, 0xe9, 0x0e, 0x7a, 0x94, 0x1c, 0xca, 0x92,
|
||||
0x10, 0x2c, 0xa2, 0x99, 0xc8, 0x1a, 0x5e, 0x19, 0xc8, 0xa6, 0xd3, 0x61, 0x3d, 0x1b, 0xee, 0xa4,
|
||||
0x53, 0xe4, 0xc4, 0xce, 0x32, 0xda, 0xde, 0x5d, 0x43, 0xec, 0xc5, 0x72, 0x95, 0x6a, 0x63, 0xa1,
|
||||
0x5a, 0x2e, 0xb5, 0xaa, 0x15, 0xb8, 0x9b, 0x1e, 0x26, 0x93, 0xc3, 0x64, 0xb4, 0x95, 0x7b, 0xcc,
|
||||
0x00, 0x4b, 0xbe, 0x5f, 0xf3, 0xd6, 0xf8, 0xa2, 0xdf, 0xb6, 0x03, 0x4c, 0xf2, 0xbd, 0x66, 0x66,
|
||||
0x96, 0xa2, 0xc7, 0xc5, 0xe3, 0x26, 0x93, 0xd2, 0xe5, 0x1e, 0xdc, 0x47, 0xaf, 0x25, 0xc5, 0x6d,
|
||||
0x40, 0x6d, 0xbd, 0x64, 0xfa, 0x58, 0xe7, 0x7c, 0x23, 0xf4, 0x4b, 0x8e, 0xc3, 0x43, 0x2f, 0x98,
|
||||
0x16, 0xbc, 0x57, 0xf3, 0xfc, 0x30, 0x80, 0xb3, 0xb9, 0xfc, 0x33, 0xaf, 0x3d, 0xdb, 0x6a, 0x35,
|
||||
0xd2, 0x64, 0x96, 0xcd, 0x5b, 0xfa, 0x40, 0x7d, 0x4b, 0xc5, 0x7c, 0xf4, 0x86, 0x60, 0x2d, 0x04,
|
||||
0x9b, 0x2c, 0x08, 0x7d, 0xa8, 0xd2, 0x22, 0x39, 0x90, 0x22, 0x0b, 0xcc, 0xe1, 0xa2, 0xdd, 0x0c,
|
||||
0x7d, 0x9f, 0x8b, 0xa0, 0xe4, 0x04, 0x51, 0x14, 0xd3, 0xf4, 0x3a, 0x72, 0xcc, 0x48, 0x90, 0xf2,
|
||||
0xae, 0xc2, 0x02, 0xdb, 0xed, 0xca, 0x15, 0x23, 0x95, 0x33, 0x66, 0x28, 0x68, 0x8a, 0xb9, 0x9b,
|
||||
0xac, 0xe6, 0x05, 0x4c, 0x60, 0xd2, 0xe6, 0x30, 0x6c, 0x7b, 0x9d, 0x41, 0xcd, 0x74, 0x64, 0xda,
|
||||
0xf5, 0xda, 0xca, 0x9c, 0x84, 0x73, 0x66, 0xad, 0x34, 0xb8, 0x0c, 0x4a, 0x5d, 0x26, 0x02, 0xb8,
|
||||
0xdf, 0x2c, 0x4a, 0xbc, 0xbe, 0xee, 0x3a, 0x0c, 0x23, 0x92, 0x50, 0xcf, 0x77, 0x4c, 0xf6, 0x70,
|
||||
0x30, 0xd7, 0xa7, 0xa2, 0x2a, 0x5f, 0xc2, 0x79, 0x33, 0x56, 0x03, 0xd0, 0x69, 0x9a, 0xcf, 0x3d,
|
||||
0x75, 0xbb, 0x3d, 0x2d, 0x18, 0x53, 0x17, 0x42, 0xc3, 0x8c, 0x2e, 0x8f, 0x69, 0xfd, 0x0b, 0x74,
|
||||
0x1f, 0x19, 0x35, 0x2e, 0xa8, 0x35, 0xea, 0xdc, 0xb1, 0xe3, 0x34, 0x2e, 0xd0, 0x23, 0xe4, 0xe0,
|
||||
0x50, 0x48, 0x6b, 0x37, 0xe9, 0x41, 0xb2, 0x2f, 0xdf, 0xe9, 0x66, 0xe5, 0xb7, 0x4c, 0xe7, 0xd0,
|
||||
0x82, 0x21, 0x01, 0x8b, 0x7d, 0x95, 0x6e, 0x60, 0xda, 0xfc, 0x92, 0x99, 0xe0, 0xa8, 0x50, 0xaa,
|
||||
0x3d, 0x7c, 0x41, 0x58, 0xce, 0xdd, 0x9a, 0x1e, 0x6b, 0xad, 0x07, 0xe8, 0x24, 0x99, 0x30, 0x2c,
|
||||
0xc7, 0x68, 0x8b, 0xf5, 0xfc, 0x2e, 0x16, 0x33, 0x3c, 0x48, 0x8f, 0x91, 0xc3, 0xdb, 0xa1, 0xda,
|
||||
0xc6, 0x43, 0x39, 0xcf, 0x85, 0xed, 0x05, 0x33, 0x51, 0x75, 0x36, 0x6c, 0x29, 0xe1, 0xe1, 0x9c,
|
||||
0xe7, 0x39, 0x4c, 0xeb, 0x3f, 0x62, 0xba, 0x38, 0x50, 0x82, 0xf0, 0x28, 0x3d, 0x4e, 0x8e, 0x6c,
|
||||
0x0b, 0x6b, 0x2b, 0x8f, 0x99, 0x5d, 0x84, 0x62, 0x0d, 0x26, 0x24, 0xf7, 0xec, 0xf3, 0x11, 0x5d,
|
||||
0xc1, 0x8a, 0xd9, 0x45, 0x7d, 0xa0, 0xb6, 0xf0, 0xb8, 0x59, 0x72, 0x31, 0x6f, 0xfb, 0x5d, 0x76,
|
||||
0x11, 0x7f, 0x83, 0x6d, 0xe6, 0x61, 0x99, 0xad, 0x96, 0x1a, 0xb5, 0x05, 0xb6, 0xee, 0xe2, 0x23,
|
||||
0x88, 0xb8, 0x03, 0xd6, 0x6c, 0x07, 0x2f, 0x61, 0x66, 0x2e, 0x13, 0xa9, 0x73, 0x7c, 0x35, 0x6d,
|
||||
0xe4, 0x35, 0xb3, 0xd1, 0xfa, 0xd1, 0xd9, 0x20, 0xf0, 0xb5, 0x1f, 0x1d, 0x7a, 0x3d, 0x39, 0xb9,
|
||||
0x9d, 0xe4, 0x34, 0x17, 0xd1, 0x04, 0xd0, 0xc2, 0x2e, 0xd6, 0x64, 0xe6, 0x34, 0xeb, 0x95, 0x6d,
|
||||
0x2c, 0xa7, 0x36, 0x86, 0x08, 0x9f, 0x58, 0x58, 0x93, 0x93, 0xc3, 0x20, 0xad, 0xfc, 0xa9, 0x35,
|
||||
0x54, 0x1b, 0xa9, 0x03, 0x3e, 0xb3, 0x30, 0x9a, 0xf1, 0x01, 0xa8, 0xc2, 0xba, 0x0c, 0x0b, 0xe3,
|
||||
0x73, 0x0b, 0xb3, 0x3d, 0x36, 0xa8, 0x18, 0x57, 0xeb, 0x17, 0x16, 0x66, 0xfb, 0xd0, 0x70, 0x50,
|
||||
0x5f, 0xfd, 0xa5, 0x85, 0xf5, 0x0a, 0xba, 0x30, 0x2f, 0xd4, 0x13, 0xdd, 0xaf, 0x2c, 0x2c, 0x86,
|
||||
0x89, 0xfe, 0x63, 0xad, 0xf5, 0xb5, 0x85, 0x3d, 0xae, 0xc7, 0xe2, 0x9c, 0x1d, 0xbd, 0x00, 0x7a,
|
||||
0x5b, 0x71, 0x05, 0x73, 0x02, 0x2e, 0xb6, 0xe0, 0x1b, 0x8b, 0x9e, 0x24, 0x47, 0xb7, 0x17, 0xd0,
|
||||
0x96, 0xbe, 0xcd, 0x3b, 0x99, 0x0a, 0xaa, 0xc7, 0xe5, 0x61, 0x10, 0x4d, 0xc6, 0xef, 0x2c, 0x7c,
|
||||
0x8a, 0x13, 0x3b, 0x0b, 0x69, 0x8b, 0xdf, 0x5b, 0xf4, 0x44, 0x56, 0xa8, 0x5a, 0xb8, 0xdc, 0x75,
|
||||
0x71, 0x6c, 0x47, 0x94, 0xa9, 0x8c, 0xfe, 0x60, 0xd1, 0xd3, 0xe4, 0xd4, 0x7f, 0xca, 0x69, 0xbb,
|
||||
0x3f, 0x5a, 0x48, 0x78, 0xd9, 0x8a, 0xc0, 0x82, 0x79, 0x3f, 0xe2, 0x15, 0x09, 0x3f, 0xe5, 0x92,
|
||||
0x91, 0x01, 0x5a, 0xf3, 0x72, 0xb4, 0x76, 0xec, 0x19, 0x5c, 0x2e, 0xce, 0xc0, 0x2f, 0x05, 0x33,
|
||||
0xfa, 0xa8, 0x21, 0x42, 0xe1, 0x74, 0x10, 0x6a, 0x89, 0x10, 0x47, 0x07, 0xe6, 0x3c, 0x94, 0xf0,
|
||||
0x6b, 0xc1, 0x8c, 0x7e, 0xb8, 0x90, 0xbe, 0xeb, 0xb7, 0x02, 0xb2, 0x80, 0x26, 0xc7, 0x64, 0x80,
|
||||
0xa6, 0x93, 0xf2, 0xf7, 0x02, 0xb6, 0x70, 0xc6, 0x23, 0x65, 0xd5, 0xc1, 0x4b, 0xb6, 0x93, 0x18,
|
||||
0x29, 0x77, 0x6c, 0x0f, 0x87, 0xc7, 0x1f, 0x05, 0xb3, 0xe4, 0xca, 0x1d, 0xe6, 0x6c, 0x4c, 0x0b,
|
||||
0x4c, 0x4a, 0x5b, 0x76, 0x5c, 0x1f, 0xfe, 0x2c, 0x60, 0x13, 0x16, 0xb7, 0x41, 0xb5, 0x1b, 0x7f,
|
||||
0x15, 0x90, 0x70, 0x4c, 0x22, 0x6e, 0xe0, 0x3a, 0x83, 0xeb, 0x96, 0xba, 0xb2, 0xee, 0x7a, 0x1b,
|
||||
0xf0, 0x77, 0x01, 0x97, 0x8c, 0xe3, 0x3b, 0xca, 0x68, 0x7b, 0xff, 0x14, 0xe8, 0xa9, 0xac, 0x6d,
|
||||
0x97, 0x9a, 0xb8, 0xb4, 0xe1, 0xec, 0xc4, 0x62, 0x0e, 0xa5, 0xef, 0x3a, 0x2e, 0x0f, 0x65, 0x34,
|
||||
0x47, 0x37, 0xdd, 0x60, 0x0b, 0xae, 0x14, 0xcc, 0xe7, 0xa8, 0x34, 0x94, 0xd5, 0x39, 0xd7, 0x11,
|
||||
0xbc, 0x75, 0x11, 0xdf, 0xeb, 0xd2, 0x88, 0x59, 0x9b, 0x83, 0x02, 0xfa, 0xd2, 0xa7, 0x46, 0xcc,
|
||||
0xde, 0x88, 0xa7, 0x49, 0xa9, 0x79, 0x1e, 0x9e, 0x1e, 0x31, 0x7b, 0x23, 0x3d, 0xd6, 0x5a, 0xcf,
|
||||
0x8c, 0xe0, 0xca, 0x98, 0xe3, 0x51, 0xdf, 0x57, 0x19, 0xaa, 0x23, 0x55, 0xc1, 0xb3, 0x23, 0x66,
|
||||
0x7d, 0x0e, 0xe0, 0xda, 0xce, 0x73, 0x23, 0x53, 0x3f, 0x5b, 0xe4, 0xff, 0xd5, 0xe6, 0x7c, 0xb6,
|
||||
0xdf, 0xc6, 0xbf, 0x57, 0xca, 0x82, 0x45, 0x53, 0x61, 0x34, 0x77, 0x98, 0x3c, 0x35, 0x8c, 0xd1,
|
||||
0xbd, 0xb1, 0xcb, 0xc9, 0x61, 0x05, 0x99, 0x4a, 0xf0, 0x2d, 0x18, 0x57, 0x94, 0xa8, 0xf4, 0x23,
|
||||
0x1e, 0x68, 0x86, 0xab, 0xd2, 0x11, 0xee, 0x2a, 0xae, 0x57, 0x13, 0x6a, 0xc7, 0x35, 0xd0, 0x45,
|
||||
0x4f, 0x66, 0xf8, 0x3e, 0x45, 0xe9, 0xe6, 0x45, 0x29, 0x2f, 0xc3, 0x7e, 0x35, 0x16, 0x06, 0x4d,
|
||||
0xfb, 0xc9, 0xd8, 0x5d, 0x13, 0x4c, 0x76, 0x60, 0x52, 0x51, 0xf7, 0x50, 0x0f, 0x16, 0xfd, 0x16,
|
||||
0xaf, 0x44, 0xde, 0x1f, 0x9c, 0xba, 0x62, 0x11, 0xc0, 0xcc, 0x44, 0xed, 0xa1, 0x3b, 0x51, 0x75,
|
||||
0x4f, 0x5c, 0xb3, 0x8d, 0xb8, 0x25, 0x13, 0x2a, 0xff, 0x68, 0x5c, 0xd1, 0xa6, 0x81, 0xa8, 0xe4,
|
||||
0x7d, 0x3c, 0xae, 0xda, 0x20, 0x86, 0x12, 0x4b, 0xcb, 0xac, 0xeb, 0xf0, 0x1e, 0x83, 0x77, 0x8a,
|
||||
0x26, 0xd6, 0x8c, 0x77, 0xe8, 0x14, 0x7b, 0xb7, 0x68, 0x5e, 0x96, 0xe8, 0xcd, 0xb2, 0x6e, 0x97,
|
||||
0xc3, 0x7b, 0x39, 0x24, 0xd1, 0x4a, 0x90, 0xf7, 0x8b, 0xaa, 0x89, 0x0d, 0x1d, 0xfc, 0x12, 0xf0,
|
||||
0x58, 0xbc, 0xd9, 0xa9, 0x26, 0xfe, 0x20, 0x27, 0x94, 0xa8, 0x0f, 0x08, 0x7d, 0x58, 0x9c, 0xba,
|
||||
0x5c, 0x20, 0x04, 0xe3, 0x6f, 0xf1, 0xb8, 0x3a, 0x74, 0x2f, 0xab, 0xff, 0x09, 0x4b, 0x95, 0x9c,
|
||||
0x0d, 0x78, 0xde, 0xd2, 0x0d, 0xd6, 0x8f, 0xe9, 0x24, 0xbc, 0x90, 0x31, 0x96, 0x92, 0x89, 0x38,
|
||||
0x0d, 0x1f, 0xf4, 0xc5, 0x6c, 0xa8, 0xe4, 0x80, 0xe4, 0x53, 0xe8, 0x25, 0xcb, 0x74, 0x55, 0x51,
|
||||
0x48, 0xb8, 0x1a, 0x79, 0x1d, 0xf3, 0x48, 0xb4, 0x99, 0xc3, 0xcb, 0x96, 0xa2, 0x81, 0x58, 0x48,
|
||||
0xbd, 0xc8, 0x80, 0xd4, 0x2b, 0x16, 0xbd, 0x21, 0x9e, 0xa1, 0x3b, 0x49, 0x69, 0x7f, 0x5f, 0xcd,
|
||||
0x98, 0x3b, 0x17, 0x53, 0xfc, 0x2d, 0x14, 0xfa, 0xb8, 0x47, 0xfa, 0xf1, 0xd4, 0x7b, 0x2d, 0x9d,
|
||||
0xa8, 0xb1, 0xd5, 0x48, 0xb4, 0x39, 0x9f, 0xaf, 0x28, 0x78, 0x3d, 0x17, 0x83, 0x21, 0x62, 0x14,
|
||||
0x36, 0xbc, 0x31, 0x20, 0x54, 0xe7, 0x76, 0x5b, 0x79, 0xa6, 0xe4, 0xe1, 0xcd, 0x74, 0xf6, 0xec,
|
||||
0x20, 0xa4, 0x23, 0x78, 0x6b, 0xc0, 0x62, 0x8e, 0x81, 0x93, 0xd9, 0xfa, 0xb6, 0x75, 0xf6, 0x7f,
|
||||
0xb3, 0xd6, 0x25, 0x6b, 0xd7, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x05, 0xab, 0xaf, 0x14, 0xda,
|
||||
0x0e, 0x00, 0x00,
|
||||
}
|
@ -1,188 +0,0 @@
|
||||
/*
|
||||
Includes inventory types as used in the trade package
|
||||
*/
|
||||
package inventory
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Philipp15b/go-steam/jsont"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type GenericInventory map[uint32]map[uint64]*Inventory
|
||||
|
||||
func NewGenericInventory() GenericInventory {
|
||||
iMap := make(map[uint32]map[uint64]*Inventory)
|
||||
return GenericInventory(iMap)
|
||||
}
|
||||
|
||||
// Get inventory for specified AppId and ContextId
|
||||
func (i *GenericInventory) Get(appId uint32, contextId uint64) (*Inventory, error) {
|
||||
iMap := (map[uint32]map[uint64]*Inventory)(*i)
|
||||
iMap2, ok := iMap[appId]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("inventory for specified appId not found")
|
||||
}
|
||||
inv, ok := iMap2[contextId]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("inventory for specified contextId not found")
|
||||
}
|
||||
return inv, nil
|
||||
}
|
||||
|
||||
func (i *GenericInventory) Add(appId uint32, contextId uint64, inv *Inventory) {
|
||||
iMap := (map[uint32]map[uint64]*Inventory)(*i)
|
||||
iMap2, ok := iMap[appId]
|
||||
if !ok {
|
||||
iMap2 = make(map[uint64]*Inventory)
|
||||
iMap[appId] = iMap2
|
||||
}
|
||||
iMap2[contextId] = inv
|
||||
}
|
||||
|
||||
type Inventory struct {
|
||||
Items Items `json:"rgInventory"`
|
||||
Currencies Currencies `json:"rgCurrency"`
|
||||
Descriptions Descriptions `json:"rgDescriptions"`
|
||||
AppInfo *AppInfo `json:"rgAppInfo"`
|
||||
}
|
||||
|
||||
// Items key is an AssetId
|
||||
type Items map[string]*Item
|
||||
|
||||
func (i *Items) ToMap() map[string]*Item {
|
||||
return (map[string]*Item)(*i)
|
||||
}
|
||||
|
||||
func (i *Items) Get(assetId uint64) (*Item, error) {
|
||||
iMap := (map[string]*Item)(*i)
|
||||
if item, ok := iMap[strconv.FormatUint(assetId, 10)]; ok {
|
||||
return item, nil
|
||||
}
|
||||
return nil, fmt.Errorf("item not found")
|
||||
}
|
||||
|
||||
func (i *Items) UnmarshalJSON(data []byte) error {
|
||||
if bytes.Equal(data, []byte("[]")) {
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(data, (*map[string]*Item)(i))
|
||||
}
|
||||
|
||||
type Currencies map[string]*Currency
|
||||
|
||||
func (c *Currencies) ToMap() map[string]*Currency {
|
||||
return (map[string]*Currency)(*c)
|
||||
}
|
||||
|
||||
func (c *Currencies) UnmarshalJSON(data []byte) error {
|
||||
if bytes.Equal(data, []byte("[]")) {
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(data, (*map[string]*Currency)(c))
|
||||
}
|
||||
|
||||
// Descriptions key format is %d_%d, first %d is ClassId, second is InstanceId
|
||||
type Descriptions map[string]*Description
|
||||
|
||||
func (d *Descriptions) ToMap() map[string]*Description {
|
||||
return (map[string]*Description)(*d)
|
||||
}
|
||||
|
||||
func (d *Descriptions) Get(classId uint64, instanceId uint64) (*Description, error) {
|
||||
dMap := (map[string]*Description)(*d)
|
||||
descId := fmt.Sprintf("%v_%v", classId, instanceId)
|
||||
if desc, ok := dMap[descId]; ok {
|
||||
return desc, nil
|
||||
}
|
||||
return nil, fmt.Errorf("description not found")
|
||||
}
|
||||
|
||||
func (d *Descriptions) UnmarshalJSON(data []byte) error {
|
||||
if bytes.Equal(data, []byte("[]")) {
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(data, (*map[string]*Description)(d))
|
||||
}
|
||||
|
||||
type Item struct {
|
||||
Id uint64 `json:",string"`
|
||||
ClassId uint64 `json:",string"`
|
||||
InstanceId uint64 `json:",string"`
|
||||
Amount uint64 `json:",string"`
|
||||
Pos uint32
|
||||
}
|
||||
|
||||
type Currency struct {
|
||||
Id uint64 `json:",string"`
|
||||
ClassId uint64 `json:",string"`
|
||||
IsCurrency bool `json:"is_currency"`
|
||||
Pos uint32
|
||||
}
|
||||
|
||||
type Description struct {
|
||||
AppId uint32 `json:",string"`
|
||||
ClassId uint64 `json:",string"`
|
||||
InstanceId uint64 `json:",string"`
|
||||
|
||||
IconUrl string `json:"icon_url"`
|
||||
IconUrlLarge string `json:"icon_url_large"`
|
||||
IconDragUrl string `json:"icon_drag_url"`
|
||||
|
||||
Name string
|
||||
MarketName string `json:"market_name"`
|
||||
MarketHashName string `json:"market_hash_name"`
|
||||
|
||||
// Colors in hex, for example `B2B2B2`
|
||||
NameColor string `json:"name_color"`
|
||||
BackgroundColor string `json:"background_color"`
|
||||
|
||||
Type string
|
||||
|
||||
Tradable jsont.UintBool
|
||||
Marketable jsont.UintBool
|
||||
Commodity jsont.UintBool
|
||||
MarketTradableRestriction uint32 `json:"market_tradable_restriction,string"`
|
||||
|
||||
Descriptions DescriptionLines
|
||||
Actions []*Action
|
||||
// Application-specific data, like "def_index" and "quality" for TF2
|
||||
AppData map[string]string
|
||||
Tags []*Tag
|
||||
}
|
||||
|
||||
type DescriptionLines []*DescriptionLine
|
||||
|
||||
func (d *DescriptionLines) UnmarshalJSON(data []byte) error {
|
||||
if bytes.Equal(data, []byte(`""`)) {
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(data, (*[]*DescriptionLine)(d))
|
||||
}
|
||||
|
||||
type DescriptionLine struct {
|
||||
Value string
|
||||
Type *string // Is `html` for HTML descriptions
|
||||
Color *string
|
||||
}
|
||||
|
||||
type Action struct {
|
||||
Name string
|
||||
Link string
|
||||
}
|
||||
|
||||
type AppInfo struct {
|
||||
AppId uint32
|
||||
Name string
|
||||
Icon string
|
||||
Link string
|
||||
}
|
||||
|
||||
type Tag struct {
|
||||
InternalName string `json:internal_name`
|
||||
Name string
|
||||
Category string
|
||||
CategoryName string `json:category_name`
|
||||
}
|
@ -1,79 +0,0 @@
|
||||
package inventory
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type InventoryApps map[string]*InventoryApp
|
||||
|
||||
func (i *InventoryApps) Get(appId uint32) (*InventoryApp, error) {
|
||||
iMap := (map[string]*InventoryApp)(*i)
|
||||
if inventoryApp, ok := iMap[strconv.FormatUint(uint64(appId), 10)]; ok {
|
||||
return inventoryApp, nil
|
||||
}
|
||||
return nil, fmt.Errorf("inventory app not found")
|
||||
}
|
||||
|
||||
func (i *InventoryApps) ToMap() map[string]*InventoryApp {
|
||||
return (map[string]*InventoryApp)(*i)
|
||||
}
|
||||
|
||||
type InventoryApp struct {
|
||||
AppId uint32
|
||||
Name string
|
||||
Icon string
|
||||
Link string
|
||||
AssetCount uint32 `json:"asset_count"`
|
||||
InventoryLogo string `json:"inventory_logo"`
|
||||
TradePermissions string `json:"trade_permissions"`
|
||||
Contexts Contexts `json:"rgContexts"`
|
||||
}
|
||||
|
||||
type Contexts map[string]*Context
|
||||
|
||||
func (c *Contexts) Get(contextId uint64) (*Context, error) {
|
||||
cMap := (map[string]*Context)(*c)
|
||||
if context, ok := cMap[strconv.FormatUint(contextId, 10)]; ok {
|
||||
return context, nil
|
||||
}
|
||||
return nil, fmt.Errorf("context not found")
|
||||
}
|
||||
|
||||
func (c *Contexts) ToMap() map[string]*Context {
|
||||
return (map[string]*Context)(*c)
|
||||
}
|
||||
|
||||
type Context struct {
|
||||
ContextId uint64 `json:"id,string"`
|
||||
AssetCount uint32 `json:"asset_count"`
|
||||
Name string
|
||||
}
|
||||
|
||||
func GetInventoryApps(client *http.Client, steamId steamid.SteamId) (InventoryApps, error) {
|
||||
resp, err := http.Get("http://steamcommunity.com/profiles/" + steamId.ToString() + "/inventory/")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
respBody, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reg := regexp.MustCompile("var g_rgAppContextData = (.*?);")
|
||||
inventoryAppsMatches := reg.FindSubmatch(respBody)
|
||||
if inventoryAppsMatches == nil {
|
||||
return nil, fmt.Errorf("profile inventory not found in steam response")
|
||||
}
|
||||
var inventoryApps InventoryApps
|
||||
if err = json.Unmarshal(inventoryAppsMatches[1], &inventoryApps); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return inventoryApps, nil
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
package inventory
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func GetPartialOwnInventory(client *http.Client, contextId uint64, appId uint32, start *uint) (*PartialInventory, error) {
|
||||
// TODO: the "trading" parameter can be left off to return non-tradable items too
|
||||
url := fmt.Sprintf("http://steamcommunity.com/my/inventory/json/%d/%d?trading=1", appId, contextId)
|
||||
if start != nil {
|
||||
url += "&start=" + strconv.FormatUint(uint64(*start), 10)
|
||||
}
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return DoInventoryRequest(client, req)
|
||||
}
|
||||
|
||||
func GetOwnInventory(client *http.Client, contextId uint64, appId uint32) (*Inventory, error) {
|
||||
return GetFullInventory(func() (*PartialInventory, error) {
|
||||
return GetPartialOwnInventory(client, contextId, appId, nil)
|
||||
}, func(start uint) (*PartialInventory, error) {
|
||||
return GetPartialOwnInventory(client, contextId, appId, &start)
|
||||
})
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
package inventory
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// A partial inventory as sent by the Steam API.
|
||||
type PartialInventory struct {
|
||||
Success bool
|
||||
Error string
|
||||
Inventory
|
||||
More bool
|
||||
MoreStart MoreStart `json:"more_start"`
|
||||
}
|
||||
|
||||
type MoreStart uint
|
||||
|
||||
func (m *MoreStart) UnmarshalJSON(data []byte) error {
|
||||
if bytes.Equal(data, []byte("false")) {
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(data, (*uint)(m))
|
||||
}
|
||||
|
||||
func DoInventoryRequest(client *http.Client, req *http.Request) (*PartialInventory, error) {
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
inv := new(PartialInventory)
|
||||
err = json.NewDecoder(resp.Body).Decode(inv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return inv, nil
|
||||
}
|
||||
|
||||
func GetFullInventory(getFirst func() (*PartialInventory, error), getNext func(start uint) (*PartialInventory, error)) (*Inventory, error) {
|
||||
first, err := getFirst()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !first.Success {
|
||||
return nil, errors.New("GetFullInventory API call failed: " + first.Error)
|
||||
}
|
||||
|
||||
result := &first.Inventory
|
||||
var next *PartialInventory
|
||||
for latest := first; latest.More; latest = next {
|
||||
next, err := getNext(uint(latest.MoreStart))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !next.Success {
|
||||
return nil, errors.New("GetFullInventory API call failed: " + next.Error)
|
||||
}
|
||||
|
||||
result = Merge(result, &next.Inventory)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// Merges the given Inventory into a single Inventory.
|
||||
// The given slice must have at least one element. The first element of the slice is used
|
||||
// and modified.
|
||||
func Merge(p ...*Inventory) *Inventory {
|
||||
inv := p[0]
|
||||
for idx, i := range p {
|
||||
if idx == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
for key, value := range i.Items {
|
||||
inv.Items[key] = value
|
||||
}
|
||||
for key, value := range i.Descriptions {
|
||||
inv.Descriptions[key] = value
|
||||
}
|
||||
for key, value := range i.Currencies {
|
||||
inv.Currencies[key] = value
|
||||
}
|
||||
}
|
||||
|
||||
return inv
|
||||
}
|
@ -1,295 +0,0 @@
|
||||
/*
|
||||
This program generates the protobuf and SteamLanguage files from the SteamKit data.
|
||||
*/
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var printCommands = false
|
||||
|
||||
func main() {
|
||||
args := strings.Join(os.Args[1:], " ")
|
||||
|
||||
found := false
|
||||
if strings.Contains(args, "clean") {
|
||||
clean()
|
||||
found = true
|
||||
}
|
||||
if strings.Contains(args, "steamlang") {
|
||||
buildSteamLanguage()
|
||||
found = true
|
||||
}
|
||||
if strings.Contains(args, "proto") {
|
||||
buildProto()
|
||||
found = true
|
||||
}
|
||||
|
||||
if !found {
|
||||
os.Stderr.WriteString("Invalid target!\nAvailable targets: clean, proto, steamlang\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func clean() {
|
||||
print("# Cleaning")
|
||||
cleanGlob("../protocol/**/*.pb.go")
|
||||
cleanGlob("../tf2/protocol/**/*.pb.go")
|
||||
cleanGlob("../dota/protocol/**/*.pb.go")
|
||||
|
||||
os.Remove("../protocol/steamlang/enums.go")
|
||||
os.Remove("../protocol/steamlang/messages.go")
|
||||
}
|
||||
|
||||
func cleanGlob(pattern string) {
|
||||
protos, _ := filepath.Glob(pattern)
|
||||
for _, proto := range protos {
|
||||
err := os.Remove(proto)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func buildSteamLanguage() {
|
||||
print("# Building Steam Language")
|
||||
exePath := "./GoSteamLanguageGenerator/bin/Debug/GoSteamLanguageGenerator.exe"
|
||||
|
||||
if runtime.GOOS != "windows" {
|
||||
execute("mono", exePath, "./SteamKit", "../protocol/steamlang")
|
||||
} else {
|
||||
execute(exePath, "./SteamKit", "../protocol/steamlang")
|
||||
}
|
||||
execute("gofmt", "-w", "../protocol/steamlang/enums.go", "../protocol/steamlang/messages.go")
|
||||
}
|
||||
|
||||
func buildProto() {
|
||||
print("# Building Protobufs")
|
||||
|
||||
buildProtoMap("steamclient", clientProtoFiles, "../protocol/protobuf")
|
||||
buildProtoMap("tf", tf2ProtoFiles, "../tf2/protocol/protobuf")
|
||||
buildProtoMap("dota", dotaProtoFiles, "../dota/protocol/protobuf")
|
||||
}
|
||||
|
||||
func buildProtoMap(srcSubdir string, files map[string]string, outDir string) {
|
||||
os.MkdirAll(outDir, os.ModePerm)
|
||||
for proto, out := range files {
|
||||
full := filepath.Join(outDir, out)
|
||||
compileProto("SteamKit/Resources/Protobufs", srcSubdir, proto, full)
|
||||
fixProto(full)
|
||||
}
|
||||
}
|
||||
|
||||
// Maps the proto files to their target files.
|
||||
// See `SteamKit/Resources/Protobufs/steamclient/generate-base.bat` for reference.
|
||||
var clientProtoFiles = map[string]string{
|
||||
"steammessages_base.proto": "base.pb.go",
|
||||
"encrypted_app_ticket.proto": "app_ticket.pb.go",
|
||||
|
||||
"steammessages_clientserver.proto": "client_server.pb.go",
|
||||
"steammessages_clientserver_2.proto": "client_server_2.pb.go",
|
||||
|
||||
"content_manifest.proto": "content_manifest.pb.go",
|
||||
|
||||
"steammessages_unified_base.steamclient.proto": "unified/base.pb.go",
|
||||
"steammessages_cloud.steamclient.proto": "unified/cloud.pb.go",
|
||||
"steammessages_credentials.steamclient.proto": "unified/credentials.pb.go",
|
||||
"steammessages_deviceauth.steamclient.proto": "unified/deviceauth.pb.go",
|
||||
"steammessages_gamenotifications.steamclient.proto": "unified/gamenotifications.pb.go",
|
||||
"steammessages_offline.steamclient.proto": "unified/offline.pb.go",
|
||||
"steammessages_parental.steamclient.proto": "unified/parental.pb.go",
|
||||
"steammessages_partnerapps.steamclient.proto": "unified/partnerapps.pb.go",
|
||||
"steammessages_player.steamclient.proto": "unified/player.pb.go",
|
||||
"steammessages_publishedfile.steamclient.proto": "unified/publishedfile.pb.go",
|
||||
}
|
||||
|
||||
var tf2ProtoFiles = map[string]string{
|
||||
"base_gcmessages.proto": "base.pb.go",
|
||||
"econ_gcmessages.proto": "econ.pb.go",
|
||||
"gcsdk_gcmessages.proto": "gcsdk.pb.go",
|
||||
"tf_gcmessages.proto": "tf.pb.go",
|
||||
"gcsystemmsgs.proto": "system.pb.go",
|
||||
}
|
||||
|
||||
var dotaProtoFiles = map[string]string{
|
||||
"base_gcmessages.proto": "base.pb.go",
|
||||
"econ_gcmessages.proto": "econ.pb.go",
|
||||
"gcsdk_gcmessages.proto": "gcsdk.pb.go",
|
||||
"dota_gcmessages_common.proto": "dota_common.pb.go",
|
||||
"dota_gcmessages_client.proto": "dota_client.pb.go",
|
||||
"dota_gcmessages_client_fantasy.proto": "dota_client_fantasy.pb.go",
|
||||
"gcsystemmsgs.proto": "system.pb.go",
|
||||
}
|
||||
|
||||
func compileProto(srcBase, srcSubdir, proto, target string) {
|
||||
outDir, _ := filepath.Split(target)
|
||||
err := os.MkdirAll(outDir, os.ModePerm)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
execute("protoc", "--go_out="+outDir, "-I="+srcBase+"/"+srcSubdir, "-I="+srcBase, filepath.Join(srcBase, srcSubdir, proto))
|
||||
out := strings.Replace(filepath.Join(outDir, proto), ".proto", ".pb.go", 1)
|
||||
err = forceRename(out, target)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func forceRename(from, to string) error {
|
||||
if from != to {
|
||||
os.Remove(to)
|
||||
}
|
||||
return os.Rename(from, to)
|
||||
}
|
||||
|
||||
var pkgRegex = regexp.MustCompile(`(package \w+)`)
|
||||
var pkgCommentRegex = regexp.MustCompile(`(?s)(\/\*.*?\*\/\n)package`)
|
||||
var unusedImportCommentRegex = regexp.MustCompile("// discarding unused import .*\n")
|
||||
var fileDescriptorVarRegex = regexp.MustCompile(`fileDescriptor\d+`)
|
||||
|
||||
func fixProto(path string) {
|
||||
// goprotobuf is really bad at dependencies, so we must fix them manually...
|
||||
// It tries to load each dependency of a file as a seperate package (but in a very, very wrong way).
|
||||
// Because we want some files in the same package, we'll remove those imports to local files.
|
||||
|
||||
file, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fset := token.NewFileSet()
|
||||
f, err := parser.ParseFile(fset, path, file, parser.ImportsOnly)
|
||||
if err != nil {
|
||||
panic("Error parsing " + path + ": " + err.Error())
|
||||
}
|
||||
|
||||
importsToRemove := make([]*ast.ImportSpec, 0)
|
||||
for _, i := range f.Imports {
|
||||
// We remove all local imports
|
||||
if i.Path.Value == "\".\"" {
|
||||
importsToRemove = append(importsToRemove, i)
|
||||
}
|
||||
}
|
||||
|
||||
for _, itr := range importsToRemove {
|
||||
// remove the package name from all types
|
||||
file = bytes.Replace(file, []byte(itr.Name.Name+"."), []byte{}, -1)
|
||||
// and remove the import itself
|
||||
file = bytes.Replace(file, []byte(fmt.Sprintf("import %v %v\n", itr.Name.Name, itr.Path.Value)), []byte{}, -1)
|
||||
}
|
||||
|
||||
// remove the package comment because it just includes a list of all messages and
|
||||
// collides not only with the other compiled protobuf files, but also our own documentation.
|
||||
file = cutAllSubmatch(pkgCommentRegex, file, 1)
|
||||
|
||||
// remove warnings
|
||||
file = unusedImportCommentRegex.ReplaceAllLiteral(file, []byte{})
|
||||
|
||||
// fix the package name
|
||||
file = pkgRegex.ReplaceAll(file, []byte("package "+inferPackageName(path)))
|
||||
|
||||
// fix the google dependency;
|
||||
// we just reuse the one from protoc-gen-go
|
||||
file = bytes.Replace(file, []byte("google/protobuf"), []byte("github.com/golang/protobuf/protoc-gen-go/descriptor"), -1)
|
||||
|
||||
// we need to prefix local variables created by protoc-gen-go so that they don't clash with others in the same package
|
||||
filename := strings.Split(filepath.Base(path), ".")[0]
|
||||
file = fileDescriptorVarRegex.ReplaceAllFunc(file, func(match []byte) []byte {
|
||||
return []byte(filename + "_" + string(match))
|
||||
})
|
||||
|
||||
err = ioutil.WriteFile(path, file, os.ModePerm)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func inferPackageName(path string) string {
|
||||
pieces := strings.Split(path, string(filepath.Separator))
|
||||
return pieces[len(pieces)-2]
|
||||
}
|
||||
|
||||
func cutAllSubmatch(r *regexp.Regexp, b []byte, n int) []byte {
|
||||
i := r.FindSubmatchIndex(b)
|
||||
return bytesCut(b, i[2*n], i[2*n+1])
|
||||
}
|
||||
|
||||
// Removes the given section from the byte array
|
||||
func bytesCut(b []byte, from, to int) []byte {
|
||||
buf := new(bytes.Buffer)
|
||||
buf.Write(b[:from])
|
||||
buf.Write(b[to:])
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
func print(text string) { os.Stdout.WriteString(text + "\n") }
|
||||
|
||||
func printerr(text string) { os.Stderr.WriteString(text + "\n") }
|
||||
|
||||
// This writer appends a "> " after every newline so that the outpout appears quoted.
|
||||
type QuotedWriter struct {
|
||||
w io.Writer
|
||||
started bool
|
||||
}
|
||||
|
||||
func NewQuotedWriter(w io.Writer) *QuotedWriter {
|
||||
return &QuotedWriter{w, false}
|
||||
}
|
||||
|
||||
func (w *QuotedWriter) Write(p []byte) (n int, err error) {
|
||||
if !w.started {
|
||||
_, err = w.w.Write([]byte("> "))
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
w.started = true
|
||||
}
|
||||
|
||||
for i, c := range p {
|
||||
if c == '\n' {
|
||||
nw, err := w.w.Write(p[n : i+1])
|
||||
n += nw
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
|
||||
_, err = w.w.Write([]byte("> "))
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
}
|
||||
if n != len(p) {
|
||||
nw, err := w.w.Write(p[n:len(p)])
|
||||
n += nw
|
||||
return n, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func execute(command string, args ...string) {
|
||||
if printCommands {
|
||||
print(command + " " + strings.Join(args, " "))
|
||||
}
|
||||
cmd := exec.Command(command, args...)
|
||||
cmd.Stdout = NewQuotedWriter(os.Stdout)
|
||||
cmd.Stderr = NewQuotedWriter(os.Stderr)
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
printerr(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
@ -1,210 +0,0 @@
|
||||
// The GsBot package contains some useful utilites for working with the
|
||||
// steam package. It implements authentication with sentries, server lists and
|
||||
// logging messages and events.
|
||||
//
|
||||
// Every module is optional and requires an instance of the GsBot struct.
|
||||
// Should a module have a `HandlePacket` method, you must register it with the
|
||||
// steam.Client with `RegisterPacketHandler`. Any module with a `HandleEvent`
|
||||
// method must be integrated into your event loop and should be called for each
|
||||
// event you receive.
|
||||
package gsbot
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math/rand"
|
||||
"net"
|
||||
"os"
|
||||
"path"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"github.com/Philipp15b/go-steam"
|
||||
"github.com/Philipp15b/go-steam/netutil"
|
||||
"github.com/Philipp15b/go-steam/protocol"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
)
|
||||
|
||||
// Base structure holding common data among GsBot modules.
|
||||
type GsBot struct {
|
||||
Client *steam.Client
|
||||
Log *log.Logger
|
||||
}
|
||||
|
||||
// Creates a new GsBot with a new steam.Client where logs are written to stdout.
|
||||
func Default() *GsBot {
|
||||
return &GsBot{
|
||||
steam.NewClient(),
|
||||
log.New(os.Stdout, "", 0),
|
||||
}
|
||||
}
|
||||
|
||||
// This module handles authentication. It logs on automatically after a ConnectedEvent
|
||||
// and saves the sentry data to a file which is also used for logon if available.
|
||||
// If you're logging on for the first time Steam may require an authcode. You can then
|
||||
// connect again with the new logon details.
|
||||
type Auth struct {
|
||||
bot *GsBot
|
||||
details *LogOnDetails
|
||||
sentryPath string
|
||||
machineAuthHash []byte
|
||||
}
|
||||
|
||||
func NewAuth(bot *GsBot, details *LogOnDetails, sentryPath string) *Auth {
|
||||
return &Auth{
|
||||
bot: bot,
|
||||
details: details,
|
||||
sentryPath: sentryPath,
|
||||
}
|
||||
}
|
||||
|
||||
type LogOnDetails struct {
|
||||
Username string
|
||||
Password string
|
||||
AuthCode string
|
||||
TwoFactorCode string
|
||||
}
|
||||
|
||||
// This is called automatically after every ConnectedEvent, but must be called once again manually
|
||||
// with an authcode if Steam requires it when logging on for the first time.
|
||||
func (a *Auth) LogOn(details *LogOnDetails) {
|
||||
a.details = details
|
||||
sentry, err := ioutil.ReadFile(a.sentryPath)
|
||||
if err != nil {
|
||||
a.bot.Log.Printf("Error loading sentry file from path %v - This is normal if you're logging in for the first time.\n", a.sentryPath)
|
||||
}
|
||||
a.bot.Client.Auth.LogOn(&steam.LogOnDetails{
|
||||
Username: details.Username,
|
||||
Password: details.Password,
|
||||
SentryFileHash: sentry,
|
||||
AuthCode: details.AuthCode,
|
||||
TwoFactorCode: details.TwoFactorCode,
|
||||
})
|
||||
}
|
||||
|
||||
func (a *Auth) HandleEvent(event interface{}) {
|
||||
switch e := event.(type) {
|
||||
case *steam.ConnectedEvent:
|
||||
a.LogOn(a.details)
|
||||
case *steam.LoggedOnEvent:
|
||||
a.bot.Log.Printf("Logged on (%v) with SteamId %v and account flags %v", e.Result, e.ClientSteamId, e.AccountFlags)
|
||||
case *steam.MachineAuthUpdateEvent:
|
||||
a.machineAuthHash = e.Hash
|
||||
err := ioutil.WriteFile(a.sentryPath, e.Hash, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This module saves the server list from ClientCMListEvent and uses
|
||||
// it when you call `Connect()`.
|
||||
type ServerList struct {
|
||||
bot *GsBot
|
||||
listPath string
|
||||
}
|
||||
|
||||
func NewServerList(bot *GsBot, listPath string) *ServerList {
|
||||
return &ServerList{
|
||||
bot,
|
||||
listPath,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ServerList) HandleEvent(event interface{}) {
|
||||
switch e := event.(type) {
|
||||
case *steam.ClientCMListEvent:
|
||||
d, err := json.Marshal(e.Addresses)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
err = ioutil.WriteFile(s.listPath, d, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ServerList) Connect() (bool, error) {
|
||||
return s.ConnectBind(nil)
|
||||
}
|
||||
|
||||
func (s *ServerList) ConnectBind(laddr *net.TCPAddr) (bool, error) {
|
||||
d, err := ioutil.ReadFile(s.listPath)
|
||||
if err != nil {
|
||||
s.bot.Log.Println("Connecting to random server.")
|
||||
s.bot.Client.Connect()
|
||||
return false, nil
|
||||
}
|
||||
var addrs []*netutil.PortAddr
|
||||
err = json.Unmarshal(d, &addrs)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
raddr := addrs[rand.Intn(len(addrs))]
|
||||
s.bot.Log.Printf("Connecting to %v from server list\n", raddr)
|
||||
s.bot.Client.ConnectToBind(raddr, laddr)
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// This module logs incoming packets and events to a directory.
|
||||
type Debug struct {
|
||||
packetId, eventId uint64
|
||||
bot *GsBot
|
||||
base string
|
||||
}
|
||||
|
||||
func NewDebug(bot *GsBot, base string) (*Debug, error) {
|
||||
base = path.Join(base, fmt.Sprint(time.Now().Unix()))
|
||||
err := os.MkdirAll(path.Join(base, "events"), 0700)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = os.MkdirAll(path.Join(base, "packets"), 0700)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Debug{
|
||||
0, 0,
|
||||
bot,
|
||||
base,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (d *Debug) HandlePacket(packet *protocol.Packet) {
|
||||
d.packetId++
|
||||
name := path.Join(d.base, "packets", fmt.Sprintf("%d_%d_%s", time.Now().Unix(), d.packetId, packet.EMsg))
|
||||
|
||||
text := packet.String() + "\n\n" + hex.Dump(packet.Data)
|
||||
err := ioutil.WriteFile(name+".txt", []byte(text), 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(name+".bin", packet.Data, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Debug) HandleEvent(event interface{}) {
|
||||
d.eventId++
|
||||
name := fmt.Sprintf("%d_%d_%s.txt", time.Now().Unix(), d.eventId, name(event))
|
||||
err := ioutil.WriteFile(path.Join(d.base, "events", name), []byte(spew.Sdump(event)), 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func name(obj interface{}) string {
|
||||
val := reflect.ValueOf(obj)
|
||||
ind := reflect.Indirect(val)
|
||||
if ind.IsValid() {
|
||||
return ind.Type().Name()
|
||||
} else {
|
||||
return val.Type().Name()
|
||||
}
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
// A simple example that uses the modules from the gsbot package and go-steam to log on
|
||||
// to the Steam network.
|
||||
//
|
||||
// The command expects log on data, optionally with an auth code:
|
||||
//
|
||||
// gsbot [username] [password]
|
||||
// gsbot [username] [password] [authcode]
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/Philipp15b/go-steam"
|
||||
"github.com/Philipp15b/go-steam/gsbot"
|
||||
"github.com/Philipp15b/go-steam/protocol/steamlang"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 3 {
|
||||
fmt.Println("gsbot example\nusage: \n\tgsbot [username] [password] [authcode]")
|
||||
return
|
||||
}
|
||||
authcode := ""
|
||||
if len(os.Args) > 3 {
|
||||
authcode = os.Args[3]
|
||||
}
|
||||
|
||||
bot := gsbot.Default()
|
||||
client := bot.Client
|
||||
auth := gsbot.NewAuth(bot, &gsbot.LogOnDetails{
|
||||
os.Args[1],
|
||||
os.Args[2],
|
||||
authcode,
|
||||
}, "sentry.bin")
|
||||
debug, err := gsbot.NewDebug(bot, "debug")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
client.RegisterPacketHandler(debug)
|
||||
serverList := gsbot.NewServerList(bot, "serverlist.json")
|
||||
serverList.Connect()
|
||||
|
||||
for event := range client.Events() {
|
||||
auth.HandleEvent(event)
|
||||
debug.HandleEvent(event)
|
||||
serverList.HandleEvent(event)
|
||||
|
||||
switch e := event.(type) {
|
||||
case error:
|
||||
fmt.Printf("Error: %v", e)
|
||||
case *steam.LoggedOnEvent:
|
||||
client.Social.SetPersonaState(steamlang.EPersonaState_Online)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
// Includes helper types for working with JSON data
|
||||
package jsont
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// A boolean value that can be unmarshaled from a number in JSON.
|
||||
type UintBool bool
|
||||
|
||||
func (u *UintBool) UnmarshalJSON(data []byte) error {
|
||||
var n uint
|
||||
err := json.Unmarshal(data, &n)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*u = n != 0
|
||||
return nil
|
||||
}
|
@ -1,141 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_unified_base.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type EProtoExecutionSite int32
|
||||
|
||||
const (
|
||||
EProtoExecutionSite_k_EProtoExecutionSiteUnknown EProtoExecutionSite = 0
|
||||
EProtoExecutionSite_k_EProtoExecutionSiteSteamClient EProtoExecutionSite = 2
|
||||
)
|
||||
|
||||
var EProtoExecutionSite_name = map[int32]string{
|
||||
0: "k_EProtoExecutionSiteUnknown",
|
||||
2: "k_EProtoExecutionSiteSteamClient",
|
||||
}
|
||||
var EProtoExecutionSite_value = map[string]int32{
|
||||
"k_EProtoExecutionSiteUnknown": 0,
|
||||
"k_EProtoExecutionSiteSteamClient": 2,
|
||||
}
|
||||
|
||||
func (x EProtoExecutionSite) Enum() *EProtoExecutionSite {
|
||||
p := new(EProtoExecutionSite)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EProtoExecutionSite) String() string {
|
||||
return proto.EnumName(EProtoExecutionSite_name, int32(x))
|
||||
}
|
||||
func (x *EProtoExecutionSite) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EProtoExecutionSite_value, data, "EProtoExecutionSite")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EProtoExecutionSite(value)
|
||||
return nil
|
||||
}
|
||||
func (EProtoExecutionSite) EnumDescriptor() ([]byte, []int) { return base_fileDescriptor0, []int{0} }
|
||||
|
||||
type NoResponse struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *NoResponse) Reset() { *m = NoResponse{} }
|
||||
func (m *NoResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*NoResponse) ProtoMessage() {}
|
||||
func (*NoResponse) Descriptor() ([]byte, []int) { return base_fileDescriptor0, []int{0} }
|
||||
|
||||
var E_Description = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.FieldOptions)(nil),
|
||||
ExtensionType: (*string)(nil),
|
||||
Field: 50000,
|
||||
Name: "description",
|
||||
Tag: "bytes,50000,opt,name=description",
|
||||
}
|
||||
|
||||
var E_ServiceDescription = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.ServiceOptions)(nil),
|
||||
ExtensionType: (*string)(nil),
|
||||
Field: 50000,
|
||||
Name: "service_description",
|
||||
Tag: "bytes,50000,opt,name=service_description",
|
||||
}
|
||||
|
||||
var E_ServiceExecutionSite = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.ServiceOptions)(nil),
|
||||
ExtensionType: (*EProtoExecutionSite)(nil),
|
||||
Field: 50008,
|
||||
Name: "service_execution_site",
|
||||
Tag: "varint,50008,opt,name=service_execution_site,enum=EProtoExecutionSite,def=0",
|
||||
}
|
||||
|
||||
var E_MethodDescription = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.MethodOptions)(nil),
|
||||
ExtensionType: (*string)(nil),
|
||||
Field: 50000,
|
||||
Name: "method_description",
|
||||
Tag: "bytes,50000,opt,name=method_description",
|
||||
}
|
||||
|
||||
var E_EnumDescription = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.EnumOptions)(nil),
|
||||
ExtensionType: (*string)(nil),
|
||||
Field: 50000,
|
||||
Name: "enum_description",
|
||||
Tag: "bytes,50000,opt,name=enum_description",
|
||||
}
|
||||
|
||||
var E_EnumValueDescription = &proto.ExtensionDesc{
|
||||
ExtendedType: (*google_protobuf.EnumValueOptions)(nil),
|
||||
ExtensionType: (*string)(nil),
|
||||
Field: 50000,
|
||||
Name: "enum_value_description",
|
||||
Tag: "bytes,50000,opt,name=enum_value_description",
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*NoResponse)(nil), "NoResponse")
|
||||
proto.RegisterEnum("EProtoExecutionSite", EProtoExecutionSite_name, EProtoExecutionSite_value)
|
||||
proto.RegisterExtension(E_Description)
|
||||
proto.RegisterExtension(E_ServiceDescription)
|
||||
proto.RegisterExtension(E_ServiceExecutionSite)
|
||||
proto.RegisterExtension(E_MethodDescription)
|
||||
proto.RegisterExtension(E_EnumDescription)
|
||||
proto.RegisterExtension(E_EnumValueDescription)
|
||||
}
|
||||
|
||||
var base_fileDescriptor0 = []byte{
|
||||
// 306 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x90, 0x4d, 0x4b, 0xc3, 0x40,
|
||||
0x10, 0x86, 0x1b, 0xc5, 0x83, 0xa3, 0x48, 0x48, 0xa5, 0x88, 0x54, 0x8d, 0xe2, 0x41, 0x44, 0xb6,
|
||||
0x20, 0x1e, 0x24, 0x88, 0x07, 0x4b, 0xc4, 0x8b, 0x1f, 0x18, 0xf4, 0x26, 0x21, 0x4d, 0xa6, 0x71,
|
||||
0x69, 0xb2, 0x1b, 0xb2, 0xbb, 0xd5, 0xa3, 0x27, 0x7f, 0x9f, 0x47, 0x7f, 0x8e, 0xcd, 0x86, 0x80,
|
||||
0xf9, 0x40, 0x8f, 0xc9, 0xfb, 0x3e, 0xb3, 0xcf, 0x0c, 0x9c, 0x08, 0x89, 0x41, 0x9a, 0xa2, 0x10,
|
||||
0x41, 0x8c, 0xc2, 0x57, 0x8c, 0x4e, 0x29, 0x46, 0xfe, 0x24, 0x10, 0x48, 0x74, 0x14, 0x26, 0x14,
|
||||
0x99, 0x24, 0x59, 0xce, 0x25, 0xdf, 0xb6, 0x63, 0xce, 0xe3, 0x04, 0x47, 0xfa, 0x6b, 0xa2, 0xa6,
|
||||
0xa3, 0x08, 0x45, 0x98, 0xd3, 0x4c, 0xf2, 0xbc, 0x6c, 0x1c, 0xac, 0x03, 0xdc, 0xf1, 0x47, 0x14,
|
||||
0x19, 0x67, 0x02, 0x8f, 0x5f, 0xa0, 0xef, 0x3e, 0x14, 0xff, 0xdd, 0x77, 0x0c, 0x95, 0xa4, 0x9c,
|
||||
0x79, 0x54, 0xa2, 0x65, 0xc3, 0x70, 0xe6, 0x77, 0x04, 0x4f, 0x6c, 0xc6, 0xf8, 0x1b, 0x33, 0x7b,
|
||||
0xd6, 0x21, 0xd8, 0x9d, 0x0d, 0xaf, 0x50, 0x1a, 0x6b, 0x25, 0x73, 0xc9, 0x39, 0x83, 0xb5, 0x4a,
|
||||
0x60, 0x91, 0x5b, 0x3b, 0xa4, 0xd4, 0x23, 0x95, 0x1e, 0xb9, 0xa6, 0x98, 0x44, 0xf7, 0x3a, 0x15,
|
||||
0x5b, 0x5f, 0x9f, 0xcb, 0xb6, 0x71, 0xb4, 0xea, 0x5c, 0x42, 0x5f, 0x60, 0x3e, 0xa7, 0x21, 0xfa,
|
||||
0xbf, 0xe9, 0xbd, 0x16, 0xed, 0x95, 0xad, 0x26, 0xaf, 0x60, 0x50, 0xf1, 0x58, 0xb9, 0xf9, 0xa2,
|
||||
0xd8, 0xeb, 0xdf, 0x11, 0xdf, 0x7a, 0xc4, 0xc6, 0xe9, 0x26, 0xe9, 0xd8, 0xcd, 0xf9, 0xf3, 0x28,
|
||||
0xce, 0x05, 0x58, 0x29, 0xca, 0x57, 0x1e, 0xd5, 0xac, 0x77, 0x5b, 0x4f, 0xde, 0xea, 0x52, 0x53,
|
||||
0xfa, 0x1c, 0x4c, 0x64, 0x2a, 0xad, 0xb1, 0xc3, 0x16, 0xeb, 0x2e, 0x2a, 0x4d, 0x72, 0x0c, 0x03,
|
||||
0x4d, 0xce, 0x83, 0x44, 0xd5, 0x2f, 0xb6, 0xdf, 0xc9, 0x3f, 0x17, 0xbd, 0xc6, 0x90, 0xab, 0x95,
|
||||
0x1b, 0xe3, 0xc3, 0xe8, 0xfd, 0x04, 0x00, 0x00, 0xff, 0xff, 0x5c, 0xf6, 0x07, 0xbb, 0x6e, 0x02,
|
||||
0x00, 0x00,
|
||||
}
|
File diff suppressed because it is too large
Load Diff
874
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/credentials.pb.go
generated
vendored
874
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/credentials.pb.go
generated
vendored
@ -1,874 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_credentials.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type CCredentials_TestAvailablePassword_Request struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
ShaDigestPassword []byte `protobuf:"bytes,2,opt,name=sha_digest_password" json:"sha_digest_password,omitempty"`
|
||||
AccountName *string `protobuf:"bytes,3,opt,name=account_name" json:"account_name,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Request) Reset() {
|
||||
*m = CCredentials_TestAvailablePassword_Request{}
|
||||
}
|
||||
func (m *CCredentials_TestAvailablePassword_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_TestAvailablePassword_Request) ProtoMessage() {}
|
||||
func (*CCredentials_TestAvailablePassword_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{0}
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Request) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Request) GetShaDigestPassword() []byte {
|
||||
if m != nil {
|
||||
return m.ShaDigestPassword
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Request) GetAccountName() string {
|
||||
if m != nil && m.AccountName != nil {
|
||||
return *m.AccountName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CCredentials_TestAvailablePassword_Response struct {
|
||||
IsValid *bool `protobuf:"varint,3,opt,name=is_valid" json:"is_valid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Response) Reset() {
|
||||
*m = CCredentials_TestAvailablePassword_Response{}
|
||||
}
|
||||
func (m *CCredentials_TestAvailablePassword_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_TestAvailablePassword_Response) ProtoMessage() {}
|
||||
func (*CCredentials_TestAvailablePassword_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *CCredentials_TestAvailablePassword_Response) GetIsValid() bool {
|
||||
if m != nil && m.IsValid != nil {
|
||||
return *m.IsValid
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CCredentials_GetSteamGuardDetails_Request struct {
|
||||
IncludeNewAuthentications *bool `protobuf:"varint,1,opt,name=include_new_authentications,def=1" json:"include_new_authentications,omitempty"`
|
||||
Webcookie *string `protobuf:"bytes,2,opt,name=webcookie" json:"webcookie,omitempty"`
|
||||
TimestampMinimumWanted *uint32 `protobuf:"fixed32,3,opt,name=timestamp_minimum_wanted" json:"timestamp_minimum_wanted,omitempty"`
|
||||
Ipaddress *int32 `protobuf:"varint,4,opt,name=ipaddress" json:"ipaddress,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) Reset() {
|
||||
*m = CCredentials_GetSteamGuardDetails_Request{}
|
||||
}
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CCredentials_GetSteamGuardDetails_Request) ProtoMessage() {}
|
||||
func (*CCredentials_GetSteamGuardDetails_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
const Default_CCredentials_GetSteamGuardDetails_Request_IncludeNewAuthentications bool = true
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) GetIncludeNewAuthentications() bool {
|
||||
if m != nil && m.IncludeNewAuthentications != nil {
|
||||
return *m.IncludeNewAuthentications
|
||||
}
|
||||
return Default_CCredentials_GetSteamGuardDetails_Request_IncludeNewAuthentications
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) GetWebcookie() string {
|
||||
if m != nil && m.Webcookie != nil {
|
||||
return *m.Webcookie
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) GetTimestampMinimumWanted() uint32 {
|
||||
if m != nil && m.TimestampMinimumWanted != nil {
|
||||
return *m.TimestampMinimumWanted
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Request) GetIpaddress() int32 {
|
||||
if m != nil && m.Ipaddress != nil {
|
||||
return *m.Ipaddress
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_GetSteamGuardDetails_Response struct {
|
||||
IsSteamguardEnabled *bool `protobuf:"varint,1,opt,name=is_steamguard_enabled" json:"is_steamguard_enabled,omitempty"`
|
||||
TimestampSteamguardEnabled *uint32 `protobuf:"fixed32,2,opt,name=timestamp_steamguard_enabled" json:"timestamp_steamguard_enabled,omitempty"`
|
||||
DeprecatedNewauthentication []*CCredentials_GetSteamGuardDetails_Response_NewAuthentication `protobuf:"bytes,3,rep,name=deprecated_newauthentication" json:"deprecated_newauthentication,omitempty"`
|
||||
DeprecatedMachineNameUserchosen *string `protobuf:"bytes,4,opt,name=deprecated_machine_name_userchosen" json:"deprecated_machine_name_userchosen,omitempty"`
|
||||
DeprecatedTimestampMachineSteamguardEnabled *uint32 `protobuf:"fixed32,5,opt,name=deprecated_timestamp_machine_steamguard_enabled" json:"deprecated_timestamp_machine_steamguard_enabled,omitempty"`
|
||||
DeprecatedAuthenticationExistsFromGeolocBeforeMintime *bool `protobuf:"varint,6,opt,name=deprecated_authentication_exists_from_geoloc_before_mintime" json:"deprecated_authentication_exists_from_geoloc_before_mintime,omitempty"`
|
||||
DeprecatedMachineId *uint64 `protobuf:"varint,7,opt,name=deprecated_machine_id" json:"deprecated_machine_id,omitempty"`
|
||||
SessionData []*CCredentials_GetSteamGuardDetails_Response_SessionData `protobuf:"bytes,8,rep,name=session_data" json:"session_data,omitempty"`
|
||||
IsTwofactorEnabled *bool `protobuf:"varint,9,opt,name=is_twofactor_enabled" json:"is_twofactor_enabled,omitempty"`
|
||||
TimestampTwofactorEnabled *uint32 `protobuf:"fixed32,10,opt,name=timestamp_twofactor_enabled" json:"timestamp_twofactor_enabled,omitempty"`
|
||||
IsPhoneVerified *bool `protobuf:"varint,11,opt,name=is_phone_verified" json:"is_phone_verified,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) Reset() {
|
||||
*m = CCredentials_GetSteamGuardDetails_Response{}
|
||||
}
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response) ProtoMessage() {}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetIsSteamguardEnabled() bool {
|
||||
if m != nil && m.IsSteamguardEnabled != nil {
|
||||
return *m.IsSteamguardEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetTimestampSteamguardEnabled() uint32 {
|
||||
if m != nil && m.TimestampSteamguardEnabled != nil {
|
||||
return *m.TimestampSteamguardEnabled
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetDeprecatedNewauthentication() []*CCredentials_GetSteamGuardDetails_Response_NewAuthentication {
|
||||
if m != nil {
|
||||
return m.DeprecatedNewauthentication
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetDeprecatedMachineNameUserchosen() string {
|
||||
if m != nil && m.DeprecatedMachineNameUserchosen != nil {
|
||||
return *m.DeprecatedMachineNameUserchosen
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetDeprecatedTimestampMachineSteamguardEnabled() uint32 {
|
||||
if m != nil && m.DeprecatedTimestampMachineSteamguardEnabled != nil {
|
||||
return *m.DeprecatedTimestampMachineSteamguardEnabled
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetDeprecatedAuthenticationExistsFromGeolocBeforeMintime() bool {
|
||||
if m != nil && m.DeprecatedAuthenticationExistsFromGeolocBeforeMintime != nil {
|
||||
return *m.DeprecatedAuthenticationExistsFromGeolocBeforeMintime
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetDeprecatedMachineId() uint64 {
|
||||
if m != nil && m.DeprecatedMachineId != nil {
|
||||
return *m.DeprecatedMachineId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetSessionData() []*CCredentials_GetSteamGuardDetails_Response_SessionData {
|
||||
if m != nil {
|
||||
return m.SessionData
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetIsTwofactorEnabled() bool {
|
||||
if m != nil && m.IsTwofactorEnabled != nil {
|
||||
return *m.IsTwofactorEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetTimestampTwofactorEnabled() uint32 {
|
||||
if m != nil && m.TimestampTwofactorEnabled != nil {
|
||||
return *m.TimestampTwofactorEnabled
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response) GetIsPhoneVerified() bool {
|
||||
if m != nil && m.IsPhoneVerified != nil {
|
||||
return *m.IsPhoneVerified
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CCredentials_GetSteamGuardDetails_Response_NewAuthentication struct {
|
||||
TimestampSteamguardEnabled *uint32 `protobuf:"fixed32,1,opt,name=timestamp_steamguard_enabled" json:"timestamp_steamguard_enabled,omitempty"`
|
||||
IsWebCookie *bool `protobuf:"varint,2,opt,name=is_web_cookie" json:"is_web_cookie,omitempty"`
|
||||
Ipaddress *int32 `protobuf:"varint,3,opt,name=ipaddress" json:"ipaddress,omitempty"`
|
||||
GeolocInfo *string `protobuf:"bytes,4,opt,name=geoloc_info" json:"geoloc_info,omitempty"`
|
||||
IsRemembered *bool `protobuf:"varint,5,opt,name=is_remembered" json:"is_remembered,omitempty"`
|
||||
MachineNameUserSupplied *string `protobuf:"bytes,6,opt,name=machine_name_user_supplied" json:"machine_name_user_supplied,omitempty"`
|
||||
Status *int32 `protobuf:"varint,7,opt,name=status" json:"status,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) Reset() {
|
||||
*m = CCredentials_GetSteamGuardDetails_Response_NewAuthentication{}
|
||||
}
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response_NewAuthentication) ProtoMessage() {}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response_NewAuthentication) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{3, 0}
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetTimestampSteamguardEnabled() uint32 {
|
||||
if m != nil && m.TimestampSteamguardEnabled != nil {
|
||||
return *m.TimestampSteamguardEnabled
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetIsWebCookie() bool {
|
||||
if m != nil && m.IsWebCookie != nil {
|
||||
return *m.IsWebCookie
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetIpaddress() int32 {
|
||||
if m != nil && m.Ipaddress != nil {
|
||||
return *m.Ipaddress
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetGeolocInfo() string {
|
||||
if m != nil && m.GeolocInfo != nil {
|
||||
return *m.GeolocInfo
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetIsRemembered() bool {
|
||||
if m != nil && m.IsRemembered != nil {
|
||||
return *m.IsRemembered
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetMachineNameUserSupplied() string {
|
||||
if m != nil && m.MachineNameUserSupplied != nil {
|
||||
return *m.MachineNameUserSupplied
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_NewAuthentication) GetStatus() int32 {
|
||||
if m != nil && m.Status != nil {
|
||||
return *m.Status
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_GetSteamGuardDetails_Response_SessionData struct {
|
||||
MachineId *uint64 `protobuf:"varint,1,opt,name=machine_id" json:"machine_id,omitempty"`
|
||||
MachineNameUserchosen *string `protobuf:"bytes,2,opt,name=machine_name_userchosen" json:"machine_name_userchosen,omitempty"`
|
||||
TimestampMachineSteamguardEnabled *uint32 `protobuf:"fixed32,3,opt,name=timestamp_machine_steamguard_enabled" json:"timestamp_machine_steamguard_enabled,omitempty"`
|
||||
AuthenticationExistsFromGeolocBeforeMintime *bool `protobuf:"varint,4,opt,name=authentication_exists_from_geoloc_before_mintime" json:"authentication_exists_from_geoloc_before_mintime,omitempty"`
|
||||
Newauthentication []*CCredentials_GetSteamGuardDetails_Response_NewAuthentication `protobuf:"bytes,5,rep,name=newauthentication" json:"newauthentication,omitempty"`
|
||||
AuthenticationExistsFromSameIpBeforeMintime *bool `protobuf:"varint,6,opt,name=authentication_exists_from_same_ip_before_mintime" json:"authentication_exists_from_same_ip_before_mintime,omitempty"`
|
||||
PublicIpv4 *uint32 `protobuf:"varint,7,opt,name=public_ipv4" json:"public_ipv4,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) Reset() {
|
||||
*m = CCredentials_GetSteamGuardDetails_Response_SessionData{}
|
||||
}
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response_SessionData) ProtoMessage() {}
|
||||
func (*CCredentials_GetSteamGuardDetails_Response_SessionData) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{3, 1}
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetMachineId() uint64 {
|
||||
if m != nil && m.MachineId != nil {
|
||||
return *m.MachineId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetMachineNameUserchosen() string {
|
||||
if m != nil && m.MachineNameUserchosen != nil {
|
||||
return *m.MachineNameUserchosen
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetTimestampMachineSteamguardEnabled() uint32 {
|
||||
if m != nil && m.TimestampMachineSteamguardEnabled != nil {
|
||||
return *m.TimestampMachineSteamguardEnabled
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetAuthenticationExistsFromGeolocBeforeMintime() bool {
|
||||
if m != nil && m.AuthenticationExistsFromGeolocBeforeMintime != nil {
|
||||
return *m.AuthenticationExistsFromGeolocBeforeMintime
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetNewauthentication() []*CCredentials_GetSteamGuardDetails_Response_NewAuthentication {
|
||||
if m != nil {
|
||||
return m.Newauthentication
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetAuthenticationExistsFromSameIpBeforeMintime() bool {
|
||||
if m != nil && m.AuthenticationExistsFromSameIpBeforeMintime != nil {
|
||||
return *m.AuthenticationExistsFromSameIpBeforeMintime
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetSteamGuardDetails_Response_SessionData) GetPublicIpv4() uint32 {
|
||||
if m != nil && m.PublicIpv4 != nil {
|
||||
return *m.PublicIpv4
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_NewMachineNotificationDialog_Request struct {
|
||||
IsApproved *bool `protobuf:"varint,1,opt,name=is_approved" json:"is_approved,omitempty"`
|
||||
IsWizardComplete *bool `protobuf:"varint,2,opt,name=is_wizard_complete" json:"is_wizard_complete,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Request) Reset() {
|
||||
*m = CCredentials_NewMachineNotificationDialog_Request{}
|
||||
}
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_NewMachineNotificationDialog_Request) ProtoMessage() {}
|
||||
func (*CCredentials_NewMachineNotificationDialog_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Request) GetIsApproved() bool {
|
||||
if m != nil && m.IsApproved != nil {
|
||||
return *m.IsApproved
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Request) GetIsWizardComplete() bool {
|
||||
if m != nil && m.IsWizardComplete != nil {
|
||||
return *m.IsWizardComplete
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CCredentials_NewMachineNotificationDialog_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Response) Reset() {
|
||||
*m = CCredentials_NewMachineNotificationDialog_Response{}
|
||||
}
|
||||
func (m *CCredentials_NewMachineNotificationDialog_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_NewMachineNotificationDialog_Response) ProtoMessage() {}
|
||||
func (*CCredentials_NewMachineNotificationDialog_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{5}
|
||||
}
|
||||
|
||||
type CCredentials_ValidateEmailAddress_Request struct {
|
||||
Stoken *string `protobuf:"bytes,1,opt,name=stoken" json:"stoken,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_ValidateEmailAddress_Request) Reset() {
|
||||
*m = CCredentials_ValidateEmailAddress_Request{}
|
||||
}
|
||||
func (m *CCredentials_ValidateEmailAddress_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CCredentials_ValidateEmailAddress_Request) ProtoMessage() {}
|
||||
func (*CCredentials_ValidateEmailAddress_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
func (m *CCredentials_ValidateEmailAddress_Request) GetStoken() string {
|
||||
if m != nil && m.Stoken != nil {
|
||||
return *m.Stoken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CCredentials_ValidateEmailAddress_Response struct {
|
||||
WasValidated *bool `protobuf:"varint,1,opt,name=was_validated" json:"was_validated,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_ValidateEmailAddress_Response) Reset() {
|
||||
*m = CCredentials_ValidateEmailAddress_Response{}
|
||||
}
|
||||
func (m *CCredentials_ValidateEmailAddress_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_ValidateEmailAddress_Response) ProtoMessage() {}
|
||||
func (*CCredentials_ValidateEmailAddress_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
func (m *CCredentials_ValidateEmailAddress_Response) GetWasValidated() bool {
|
||||
if m != nil && m.WasValidated != nil {
|
||||
return *m.WasValidated
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CCredentials_SteamGuardPhishingReport_Request struct {
|
||||
ParamString *string `protobuf:"bytes,1,opt,name=param_string" json:"param_string,omitempty"`
|
||||
IpaddressActual *uint32 `protobuf:"varint,2,opt,name=ipaddress_actual" json:"ipaddress_actual,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Request) Reset() {
|
||||
*m = CCredentials_SteamGuardPhishingReport_Request{}
|
||||
}
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_SteamGuardPhishingReport_Request) ProtoMessage() {}
|
||||
func (*CCredentials_SteamGuardPhishingReport_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{8}
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Request) GetParamString() string {
|
||||
if m != nil && m.ParamString != nil {
|
||||
return *m.ParamString
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Request) GetIpaddressActual() uint32 {
|
||||
if m != nil && m.IpaddressActual != nil {
|
||||
return *m.IpaddressActual
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_SteamGuardPhishingReport_Response struct {
|
||||
IpaddressLoginattempt *uint32 `protobuf:"varint,1,opt,name=ipaddress_loginattempt" json:"ipaddress_loginattempt,omitempty"`
|
||||
CountrynameLoginattempt *string `protobuf:"bytes,2,opt,name=countryname_loginattempt" json:"countryname_loginattempt,omitempty"`
|
||||
StatenameLoginattempt *string `protobuf:"bytes,3,opt,name=statename_loginattempt" json:"statename_loginattempt,omitempty"`
|
||||
CitynameLoginattempt *string `protobuf:"bytes,4,opt,name=cityname_loginattempt" json:"cityname_loginattempt,omitempty"`
|
||||
IpaddressActual *uint32 `protobuf:"varint,5,opt,name=ipaddress_actual" json:"ipaddress_actual,omitempty"`
|
||||
CountrynameActual *string `protobuf:"bytes,6,opt,name=countryname_actual" json:"countryname_actual,omitempty"`
|
||||
StatenameActual *string `protobuf:"bytes,7,opt,name=statename_actual" json:"statename_actual,omitempty"`
|
||||
CitynameActual *string `protobuf:"bytes,8,opt,name=cityname_actual" json:"cityname_actual,omitempty"`
|
||||
SteamguardCode *string `protobuf:"bytes,9,opt,name=steamguard_code" json:"steamguard_code,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) Reset() {
|
||||
*m = CCredentials_SteamGuardPhishingReport_Response{}
|
||||
}
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_SteamGuardPhishingReport_Response) ProtoMessage() {}
|
||||
func (*CCredentials_SteamGuardPhishingReport_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetIpaddressLoginattempt() uint32 {
|
||||
if m != nil && m.IpaddressLoginattempt != nil {
|
||||
return *m.IpaddressLoginattempt
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetCountrynameLoginattempt() string {
|
||||
if m != nil && m.CountrynameLoginattempt != nil {
|
||||
return *m.CountrynameLoginattempt
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetStatenameLoginattempt() string {
|
||||
if m != nil && m.StatenameLoginattempt != nil {
|
||||
return *m.StatenameLoginattempt
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetCitynameLoginattempt() string {
|
||||
if m != nil && m.CitynameLoginattempt != nil {
|
||||
return *m.CitynameLoginattempt
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetIpaddressActual() uint32 {
|
||||
if m != nil && m.IpaddressActual != nil {
|
||||
return *m.IpaddressActual
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetCountrynameActual() string {
|
||||
if m != nil && m.CountrynameActual != nil {
|
||||
return *m.CountrynameActual
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetStatenameActual() string {
|
||||
if m != nil && m.StatenameActual != nil {
|
||||
return *m.StatenameActual
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetCitynameActual() string {
|
||||
if m != nil && m.CitynameActual != nil {
|
||||
return *m.CitynameActual
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_SteamGuardPhishingReport_Response) GetSteamguardCode() string {
|
||||
if m != nil && m.SteamguardCode != nil {
|
||||
return *m.SteamguardCode
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CCredentials_AccountLockRequest_Request struct {
|
||||
ParamString *string `protobuf:"bytes,1,opt,name=param_string" json:"param_string,omitempty"`
|
||||
IpaddressActual *uint32 `protobuf:"varint,2,opt,name=ipaddress_actual" json:"ipaddress_actual,omitempty"`
|
||||
QueryOnly *bool `protobuf:"varint,3,opt,name=query_only" json:"query_only,omitempty"`
|
||||
EmailMessageType *int32 `protobuf:"varint,4,opt,name=email_message_type" json:"email_message_type,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Request) Reset() {
|
||||
*m = CCredentials_AccountLockRequest_Request{}
|
||||
}
|
||||
func (m *CCredentials_AccountLockRequest_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CCredentials_AccountLockRequest_Request) ProtoMessage() {}
|
||||
func (*CCredentials_AccountLockRequest_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{10}
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Request) GetParamString() string {
|
||||
if m != nil && m.ParamString != nil {
|
||||
return *m.ParamString
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Request) GetIpaddressActual() uint32 {
|
||||
if m != nil && m.IpaddressActual != nil {
|
||||
return *m.IpaddressActual
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Request) GetQueryOnly() bool {
|
||||
if m != nil && m.QueryOnly != nil {
|
||||
return *m.QueryOnly
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Request) GetEmailMessageType() int32 {
|
||||
if m != nil && m.EmailMessageType != nil {
|
||||
return *m.EmailMessageType
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_AccountLockRequest_Response struct {
|
||||
Success *bool `protobuf:"varint,1,opt,name=success" json:"success,omitempty"`
|
||||
AccountAlreadyLocked *bool `protobuf:"varint,2,opt,name=account_already_locked" json:"account_already_locked,omitempty"`
|
||||
ExpiredLink *bool `protobuf:"varint,3,opt,name=expired_link" json:"expired_link,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Response) Reset() {
|
||||
*m = CCredentials_AccountLockRequest_Response{}
|
||||
}
|
||||
func (m *CCredentials_AccountLockRequest_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CCredentials_AccountLockRequest_Response) ProtoMessage() {}
|
||||
func (*CCredentials_AccountLockRequest_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{11}
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Response) GetSuccess() bool {
|
||||
if m != nil && m.Success != nil {
|
||||
return *m.Success
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Response) GetAccountAlreadyLocked() bool {
|
||||
if m != nil && m.AccountAlreadyLocked != nil {
|
||||
return *m.AccountAlreadyLocked
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CCredentials_AccountLockRequest_Response) GetExpiredLink() bool {
|
||||
if m != nil && m.ExpiredLink != nil {
|
||||
return *m.ExpiredLink
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CCredentials_LastCredentialChangeTime_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_LastCredentialChangeTime_Request) Reset() {
|
||||
*m = CCredentials_LastCredentialChangeTime_Request{}
|
||||
}
|
||||
func (m *CCredentials_LastCredentialChangeTime_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_LastCredentialChangeTime_Request) ProtoMessage() {}
|
||||
func (*CCredentials_LastCredentialChangeTime_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{12}
|
||||
}
|
||||
|
||||
type CCredentials_LastCredentialChangeTime_Response struct {
|
||||
TimestampLastPasswordChange *uint32 `protobuf:"fixed32,1,opt,name=timestamp_last_password_change" json:"timestamp_last_password_change,omitempty"`
|
||||
TimestampLastEmailChange *uint32 `protobuf:"fixed32,2,opt,name=timestamp_last_email_change" json:"timestamp_last_email_change,omitempty"`
|
||||
TimestampLastPasswordReset *uint32 `protobuf:"fixed32,3,opt,name=timestamp_last_password_reset" json:"timestamp_last_password_reset,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_LastCredentialChangeTime_Response) Reset() {
|
||||
*m = CCredentials_LastCredentialChangeTime_Response{}
|
||||
}
|
||||
func (m *CCredentials_LastCredentialChangeTime_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_LastCredentialChangeTime_Response) ProtoMessage() {}
|
||||
func (*CCredentials_LastCredentialChangeTime_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{13}
|
||||
}
|
||||
|
||||
func (m *CCredentials_LastCredentialChangeTime_Response) GetTimestampLastPasswordChange() uint32 {
|
||||
if m != nil && m.TimestampLastPasswordChange != nil {
|
||||
return *m.TimestampLastPasswordChange
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_LastCredentialChangeTime_Response) GetTimestampLastEmailChange() uint32 {
|
||||
if m != nil && m.TimestampLastEmailChange != nil {
|
||||
return *m.TimestampLastEmailChange
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_LastCredentialChangeTime_Response) GetTimestampLastPasswordReset() uint32 {
|
||||
if m != nil && m.TimestampLastPasswordReset != nil {
|
||||
return *m.TimestampLastPasswordReset
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CCredentials_GetAccountAuthSecret_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetAccountAuthSecret_Request) Reset() {
|
||||
*m = CCredentials_GetAccountAuthSecret_Request{}
|
||||
}
|
||||
func (m *CCredentials_GetAccountAuthSecret_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CCredentials_GetAccountAuthSecret_Request) ProtoMessage() {}
|
||||
func (*CCredentials_GetAccountAuthSecret_Request) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{14}
|
||||
}
|
||||
|
||||
type CCredentials_GetAccountAuthSecret_Response struct {
|
||||
SecretId *int32 `protobuf:"varint,1,opt,name=secret_id" json:"secret_id,omitempty"`
|
||||
Secret []byte `protobuf:"bytes,2,opt,name=secret" json:"secret,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetAccountAuthSecret_Response) Reset() {
|
||||
*m = CCredentials_GetAccountAuthSecret_Response{}
|
||||
}
|
||||
func (m *CCredentials_GetAccountAuthSecret_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CCredentials_GetAccountAuthSecret_Response) ProtoMessage() {}
|
||||
func (*CCredentials_GetAccountAuthSecret_Response) Descriptor() ([]byte, []int) {
|
||||
return credentials_fileDescriptor0, []int{15}
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetAccountAuthSecret_Response) GetSecretId() int32 {
|
||||
if m != nil && m.SecretId != nil {
|
||||
return *m.SecretId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CCredentials_GetAccountAuthSecret_Response) GetSecret() []byte {
|
||||
if m != nil {
|
||||
return m.Secret
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*CCredentials_TestAvailablePassword_Request)(nil), "CCredentials_TestAvailablePassword_Request")
|
||||
proto.RegisterType((*CCredentials_TestAvailablePassword_Response)(nil), "CCredentials_TestAvailablePassword_Response")
|
||||
proto.RegisterType((*CCredentials_GetSteamGuardDetails_Request)(nil), "CCredentials_GetSteamGuardDetails_Request")
|
||||
proto.RegisterType((*CCredentials_GetSteamGuardDetails_Response)(nil), "CCredentials_GetSteamGuardDetails_Response")
|
||||
proto.RegisterType((*CCredentials_GetSteamGuardDetails_Response_NewAuthentication)(nil), "CCredentials_GetSteamGuardDetails_Response.NewAuthentication")
|
||||
proto.RegisterType((*CCredentials_GetSteamGuardDetails_Response_SessionData)(nil), "CCredentials_GetSteamGuardDetails_Response.SessionData")
|
||||
proto.RegisterType((*CCredentials_NewMachineNotificationDialog_Request)(nil), "CCredentials_NewMachineNotificationDialog_Request")
|
||||
proto.RegisterType((*CCredentials_NewMachineNotificationDialog_Response)(nil), "CCredentials_NewMachineNotificationDialog_Response")
|
||||
proto.RegisterType((*CCredentials_ValidateEmailAddress_Request)(nil), "CCredentials_ValidateEmailAddress_Request")
|
||||
proto.RegisterType((*CCredentials_ValidateEmailAddress_Response)(nil), "CCredentials_ValidateEmailAddress_Response")
|
||||
proto.RegisterType((*CCredentials_SteamGuardPhishingReport_Request)(nil), "CCredentials_SteamGuardPhishingReport_Request")
|
||||
proto.RegisterType((*CCredentials_SteamGuardPhishingReport_Response)(nil), "CCredentials_SteamGuardPhishingReport_Response")
|
||||
proto.RegisterType((*CCredentials_AccountLockRequest_Request)(nil), "CCredentials_AccountLockRequest_Request")
|
||||
proto.RegisterType((*CCredentials_AccountLockRequest_Response)(nil), "CCredentials_AccountLockRequest_Response")
|
||||
proto.RegisterType((*CCredentials_LastCredentialChangeTime_Request)(nil), "CCredentials_LastCredentialChangeTime_Request")
|
||||
proto.RegisterType((*CCredentials_LastCredentialChangeTime_Response)(nil), "CCredentials_LastCredentialChangeTime_Response")
|
||||
proto.RegisterType((*CCredentials_GetAccountAuthSecret_Request)(nil), "CCredentials_GetAccountAuthSecret_Request")
|
||||
proto.RegisterType((*CCredentials_GetAccountAuthSecret_Response)(nil), "CCredentials_GetAccountAuthSecret_Response")
|
||||
}
|
||||
|
||||
var credentials_fileDescriptor0 = []byte{
|
||||
// 1482 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x5d, 0x6f, 0x14, 0xd5,
|
||||
0x1b, 0xcf, 0x94, 0xbe, 0xec, 0x3e, 0xa5, 0x7f, 0xe8, 0x40, 0x61, 0x59, 0x0a, 0x4c, 0x06, 0xfe,
|
||||
0xb6, 0xd0, 0x3a, 0x48, 0x25, 0x41, 0x25, 0xc6, 0x94, 0x56, 0x09, 0x06, 0x90, 0x00, 0x51, 0xef,
|
||||
0x4e, 0x4e, 0x67, 0x4e, 0x77, 0x4f, 0x3a, 0x33, 0x67, 0x98, 0x39, 0xb3, 0x4b, 0x4d, 0x4c, 0xc4,
|
||||
0x3b, 0xbc, 0xf0, 0xce, 0x0b, 0x13, 0x2f, 0x8d, 0x5f, 0xc0, 0xe8, 0x17, 0xf0, 0x2b, 0xf8, 0x25,
|
||||
0xbc, 0x32, 0x7e, 0x03, 0x9f, 0x73, 0xe6, 0xec, 0xfb, 0x6c, 0xbb, 0x4b, 0xbc, 0xdc, 0x39, 0xcf,
|
||||
0xcb, 0xef, 0xf9, 0x3d, 0xaf, 0x0b, 0x1b, 0x99, 0x64, 0x34, 0x8a, 0x58, 0x96, 0xd1, 0x06, 0xcb,
|
||||
0x88, 0x9f, 0xb2, 0x80, 0xc5, 0x92, 0xd3, 0x30, 0xf3, 0xf4, 0x8b, 0x1f, 0x72, 0xfc, 0xed, 0x25,
|
||||
0xa9, 0x90, 0xa2, 0xbe, 0x39, 0x28, 0x9c, 0xc7, 0x7c, 0x9f, 0xb3, 0x80, 0xec, 0xd1, 0x8c, 0x8d,
|
||||
0x4a, 0xbb, 0x2f, 0xe0, 0xc6, 0xce, 0x4e, 0xcf, 0x1e, 0x79, 0xce, 0x32, 0xb9, 0xdd, 0xa2, 0x3c,
|
||||
0xa4, 0x7b, 0x21, 0x7b, 0x42, 0xb3, 0xac, 0x2d, 0xd2, 0x80, 0x3c, 0x65, 0x2f, 0x72, 0x7c, 0xb0,
|
||||
0x4f, 0x43, 0x25, 0x31, 0xdf, 0x6a, 0x96, 0x63, 0xad, 0x57, 0xed, 0x8b, 0x70, 0x26, 0x6b, 0x52,
|
||||
0x12, 0x70, 0xf4, 0x25, 0x49, 0xf7, 0x71, 0x06, 0x1f, 0x4f, 0xda, 0x67, 0xe1, 0x24, 0xf5, 0x7d,
|
||||
0x91, 0xc7, 0x92, 0xc4, 0x34, 0x62, 0xb5, 0x13, 0x4a, 0xc5, 0xfd, 0x08, 0x36, 0x26, 0x72, 0x99,
|
||||
0x25, 0x22, 0xce, 0x98, 0xf2, 0xc9, 0x33, 0xd2, 0xa2, 0x21, 0x0f, 0xb4, 0x81, 0x8a, 0xfb, 0xf7,
|
||||
0x0c, 0x5c, 0x1f, 0xb0, 0x70, 0x9f, 0xc9, 0x67, 0x2a, 0xb2, 0xfb, 0x39, 0x4d, 0x83, 0x5d, 0x26,
|
||||
0xd1, 0x56, 0xd6, 0xc5, 0x9c, 0xc3, 0x45, 0x1e, 0xfb, 0x61, 0x1e, 0x30, 0x12, 0xb3, 0x36, 0xa1,
|
||||
0xb9, 0x6c, 0x2a, 0x3d, 0x9f, 0x4a, 0x8e, 0xf6, 0x75, 0x18, 0x95, 0x0f, 0x66, 0x65, 0x9a, 0xb3,
|
||||
0x7b, 0x9f, 0x7e, 0xfb, 0x5b, 0xed, 0x93, 0x2f, 0x9a, 0x0c, 0x25, 0x52, 0x47, 0xa4, 0x4e, 0x2c,
|
||||
0xa4, 0x23, 0x85, 0x93, 0x88, 0x24, 0x0f, 0xa9, 0x64, 0x0e, 0x7e, 0x77, 0xd0, 0xc6, 0xa0, 0x09,
|
||||
0x07, 0xe9, 0x0d, 0x03, 0x87, 0xc7, 0xfa, 0x39, 0xed, 0xc0, 0xfe, 0xc1, 0x82, 0x6a, 0x9b, 0xed,
|
||||
0xf9, 0x42, 0x1c, 0x70, 0xa6, 0xf9, 0xa8, 0xde, 0x7b, 0x65, 0xa1, 0x83, 0xaf, 0x9f, 0xa3, 0x58,
|
||||
0x9e, 0xb1, 0x74, 0x2d, 0x73, 0x34, 0x6a, 0x47, 0xc3, 0x76, 0x22, 0xea, 0x37, 0x79, 0xcc, 0x1c,
|
||||
0x65, 0xdd, 0x29, 0xd4, 0x3c, 0xe7, 0xc1, 0xbe, 0x93, 0xa0, 0x49, 0xf4, 0xb6, 0xe9, 0x70, 0xb9,
|
||||
0x16, 0x86, 0xce, 0x9e, 0x56, 0x0e, 0x14, 0xae, 0x06, 0x93, 0xda, 0xa7, 0x31, 0xd6, 0x31, 0xf0,
|
||||
0x60, 0x17, 0xc1, 0xa8, 0x4c, 0x07, 0x8e, 0xd8, 0xd7, 0x02, 0xdb, 0x8f, 0x9c, 0x0c, 0xeb, 0x01,
|
||||
0xc1, 0x7a, 0xb6, 0x03, 0x35, 0xc9, 0xb1, 0x3a, 0x24, 0x8d, 0x12, 0x12, 0xf1, 0x98, 0x47, 0x79,
|
||||
0x44, 0xda, 0x34, 0x96, 0xac, 0xa0, 0x77, 0xc1, 0x5e, 0x86, 0x2a, 0x4f, 0x68, 0x10, 0xa0, 0xdf,
|
||||
0xac, 0x36, 0x8b, 0x9f, 0xe6, 0xdc, 0xbf, 0x2a, 0x43, 0x65, 0x32, 0x86, 0x71, 0x13, 0xfb, 0x25,
|
||||
0x58, 0xc1, 0x94, 0xe9, 0x62, 0x6b, 0x28, 0x01, 0xc2, 0x62, 0x95, 0xdb, 0xa2, 0x66, 0x2a, 0xf6,
|
||||
0x35, 0x58, 0xed, 0x41, 0x28, 0x91, 0x9a, 0xd1, 0x30, 0x7c, 0x58, 0x0d, 0x18, 0x06, 0x8f, 0x2c,
|
||||
0x63, 0xf9, 0x8e, 0xd0, 0x8e, 0x60, 0x4f, 0xac, 0x2f, 0x6e, 0x7d, 0xe8, 0x4d, 0x8e, 0xcb, 0x7b,
|
||||
0xcc, 0xda, 0xdb, 0x03, 0x46, 0xec, 0x1b, 0xe0, 0xf6, 0x39, 0x31, 0x0c, 0xea, 0x62, 0x25, 0x8a,
|
||||
0x55, 0xbf, 0x29, 0x90, 0x7b, 0x4d, 0x42, 0xd5, 0xbe, 0x03, 0x37, 0xfb, 0x64, 0xfb, 0x48, 0x34,
|
||||
0x5a, 0x25, 0x91, 0xcc, 0xe9, 0x48, 0x76, 0xe0, 0x6e, 0x9f, 0xe2, 0x60, 0x18, 0x84, 0xbd, 0xe4,
|
||||
0x99, 0xcc, 0xc8, 0x7e, 0x2a, 0x22, 0xd2, 0x60, 0x22, 0x14, 0x3e, 0xd9, 0x63, 0xfb, 0x22, 0x65,
|
||||
0x2a, 0x39, 0xca, 0x49, 0x6d, 0x5e, 0x93, 0x86, 0x9c, 0x96, 0x20, 0xc5, 0x9e, 0x58, 0xc0, 0xe7,
|
||||
0x59, 0xfb, 0x11, 0x9c, 0x34, 0x29, 0x26, 0x01, 0x95, 0xb4, 0x56, 0xd1, 0xec, 0xdc, 0x99, 0x86,
|
||||
0x9d, 0x67, 0x85, 0xfe, 0x2e, 0xaa, 0xdb, 0xab, 0x70, 0x16, 0x33, 0x28, 0xdb, 0x62, 0x9f, 0xfa,
|
||||
0x52, 0xa4, 0xdd, 0x80, 0xaa, 0x1a, 0xcb, 0x55, 0xb8, 0xd8, 0x0b, 0x7f, 0x54, 0x08, 0x74, 0xd4,
|
||||
0x17, 0x60, 0x19, 0x4d, 0x24, 0x4d, 0x81, 0x30, 0x5b, 0x2c, 0xd5, 0x53, 0xa8, 0xb6, 0xa8, 0xf4,
|
||||
0xeb, 0x7f, 0x58, 0xb0, 0x3c, 0x9a, 0x8b, 0xe3, 0xca, 0xc2, 0xd2, 0x66, 0x57, 0x60, 0x09, 0xcd,
|
||||
0x62, 0x67, 0x91, 0xbe, 0xd6, 0xaa, 0x0c, 0x16, 0xad, 0xaa, 0xe3, 0x39, 0xfb, 0x0c, 0x2c, 0x1a,
|
||||
0x42, 0x79, 0xbc, 0x2f, 0x4c, 0x12, 0x0b, 0xf5, 0x94, 0x45, 0x2c, 0xda, 0x63, 0xa9, 0x49, 0x51,
|
||||
0xc5, 0x76, 0xa1, 0x3e, 0x92, 0x7c, 0x92, 0xe5, 0x49, 0x12, 0x2a, 0xd4, 0xf3, 0x5a, 0xf5, 0x7f,
|
||||
0x30, 0x8f, 0xd8, 0x64, 0x9e, 0x69, 0xca, 0xe7, 0xea, 0x7f, 0xce, 0xc0, 0x62, 0x3f, 0x67, 0x36,
|
||||
0x40, 0x5f, 0x5a, 0x2c, 0x9d, 0x96, 0x2b, 0x70, 0x7e, 0x5c, 0x51, 0xe9, 0x91, 0x60, 0x6f, 0xc2,
|
||||
0xb5, 0x89, 0x2a, 0xa9, 0x68, 0xcd, 0xf7, 0xe0, 0x9d, 0xa9, 0xcb, 0x67, 0x56, 0x07, 0xf8, 0x25,
|
||||
0x2c, 0x8f, 0xb6, 0xd0, 0xdc, 0x7f, 0xd1, 0x42, 0xef, 0xc3, 0xad, 0x23, 0x30, 0x65, 0x2a, 0x6a,
|
||||
0x9e, 0x94, 0xd7, 0x34, 0x66, 0x28, 0xc9, 0xf7, 0x42, 0x8e, 0x19, 0x4a, 0x5a, 0xb7, 0x35, 0xad,
|
||||
0x4b, 0x6e, 0x00, 0xb7, 0x06, 0xf0, 0xa0, 0xc7, 0x47, 0x05, 0x2f, 0x8f, 0x85, 0xc4, 0x2a, 0x2a,
|
||||
0x9c, 0xec, 0xe2, 0x9b, 0x68, 0x74, 0x87, 0x3c, 0x5a, 0xc2, 0xb4, 0xd2, 0x04, 0x97, 0x5a, 0xab,
|
||||
0x3b, 0x67, 0xea, 0x60, 0xab, 0x52, 0xe1, 0x5f, 0x29, 0x22, 0x7d, 0x11, 0x25, 0x21, 0x93, 0xa6,
|
||||
0x5e, 0xdc, 0xdb, 0xb0, 0x35, 0x8d, 0x97, 0x22, 0x7a, 0xf7, 0xee, 0xd0, 0xe2, 0xf9, 0x5c, 0x6d,
|
||||
0x25, 0x6c, 0xc8, 0x8f, 0x23, 0x64, 0x69, 0xbb, 0xa8, 0xbe, 0x2e, 0x26, 0x5d, 0x2f, 0xe2, 0x00,
|
||||
0x53, 0xad, 0x57, 0xa5, 0xbb, 0x33, 0x34, 0x43, 0xc7, 0x28, 0x9b, 0x19, 0x8a, 0x85, 0xda, 0xa6,
|
||||
0x66, 0xef, 0xa9, 0x96, 0x2f, 0x62, 0x72, 0x09, 0xbc, 0x3d, 0x60, 0xa4, 0x97, 0xaa, 0x27, 0x4d,
|
||||
0x9e, 0x21, 0xfe, 0xc6, 0x53, 0x96, 0x88, 0x54, 0x76, 0x51, 0xe0, 0x0e, 0x4e, 0x68, 0x4a, 0x31,
|
||||
0x13, 0x32, 0xc5, 0x57, 0xb3, 0xb6, 0x6b, 0x70, 0xba, 0xdb, 0x2e, 0x04, 0xbb, 0x37, 0xa7, 0xa1,
|
||||
0x26, 0x66, 0xc9, 0xfd, 0x75, 0x06, 0xbc, 0x49, 0x3d, 0x18, 0xa8, 0x97, 0xe1, 0x5c, 0xcf, 0x18,
|
||||
0xf2, 0xc5, 0x63, 0x2a, 0x25, 0x8b, 0x12, 0xa9, 0x9d, 0x2d, 0xa9, 0x95, 0xa3, 0x8f, 0x80, 0xf4,
|
||||
0x50, 0xf7, 0xc0, 0x80, 0x44, 0xd1, 0x05, 0x68, 0x41, 0xb5, 0x16, 0x1b, 0x7d, 0xd7, 0x27, 0x83,
|
||||
0x1a, 0x7e, 0x3e, 0x97, 0x25, 0xea, 0xb3, 0x63, 0xa3, 0x99, 0xd3, 0xae, 0xb1, 0x04, 0xfa, 0x5d,
|
||||
0x9b, 0xb7, 0xf9, 0x8e, 0x56, 0xcf, 0xa9, 0x79, 0x59, 0xd0, 0x2f, 0xe7, 0xe1, 0x54, 0xd7, 0x9d,
|
||||
0x79, 0xa8, 0x74, 0x1e, 0xfa, 0x7a, 0xd3, 0x17, 0x01, 0xd3, 0x13, 0xb1, 0xea, 0xbe, 0xb6, 0x60,
|
||||
0x6d, 0x80, 0xb5, 0xed, 0xe2, 0xee, 0x79, 0x28, 0xfc, 0x03, 0x93, 0x89, 0x37, 0xcd, 0x88, 0x9a,
|
||||
0x2b, 0xa8, 0x98, 0x1e, 0x12, 0x11, 0x87, 0x87, 0xc5, 0x09, 0xa4, 0xe2, 0x62, 0xaa, 0x6c, 0x88,
|
||||
0xb9, 0xf3, 0x88, 0x3c, 0x4c, 0x98, 0x59, 0xd6, 0x2f, 0x60, 0xfd, 0x78, 0x28, 0x26, 0x75, 0xa7,
|
||||
0x60, 0x21, 0xcb, 0x7d, 0x5f, 0x0d, 0xcd, 0xa2, 0x67, 0x30, 0x13, 0x9d, 0x93, 0x8d, 0x86, 0x29,
|
||||
0xde, 0x10, 0x87, 0x48, 0xb8, 0x7f, 0x60, 0xb6, 0x72, 0x45, 0x81, 0x67, 0x2f, 0x13, 0x8e, 0xe6,
|
||||
0x49, 0xc8, 0xe3, 0x03, 0x73, 0x91, 0xdd, 0x1c, 0xaa, 0xca, 0x87, 0x34, 0x93, 0xbd, 0xdf, 0x3b,
|
||||
0x4d, 0x1a, 0x37, 0xd8, 0x73, 0xec, 0xfb, 0x0e, 0x07, 0xee, 0xcf, 0xd6, 0x50, 0x95, 0x1d, 0xa1,
|
||||
0x61, 0xa0, 0xbe, 0x05, 0x97, 0x7b, 0x93, 0x32, 0xa4, 0x7d, 0xd7, 0x26, 0xf1, 0xb5, 0xb8, 0x59,
|
||||
0x10, 0x03, 0xcb, 0x49, 0xcb, 0x15, 0x4c, 0x19, 0xa1, 0xe2, 0xb8, 0xf8, 0x3f, 0x5c, 0x1a, 0x67,
|
||||
0x4c, 0x9d, 0x5b, 0x45, 0xdd, 0x2d, 0xb8, 0x1b, 0xa3, 0x87, 0xa6, 0x61, 0x53, 0x0d, 0xc1, 0x67,
|
||||
0x0c, 0x2f, 0xf1, 0x6e, 0x5e, 0xdd, 0xcf, 0x46, 0x6f, 0xa4, 0x32, 0x61, 0x13, 0x0e, 0x2e, 0xac,
|
||||
0xac, 0xf8, 0x64, 0x96, 0xc5, 0x9c, 0x1e, 0x18, 0xfa, 0x53, 0x71, 0x3e, 0x6f, 0xfd, 0x53, 0x85,
|
||||
0xc5, 0x3e, 0x83, 0xf6, 0xf7, 0x16, 0xac, 0x94, 0x1e, 0xcb, 0xf6, 0x86, 0x37, 0xf9, 0x11, 0x5f,
|
||||
0xdf, 0xf4, 0xa6, 0x38, 0xbf, 0xdd, 0x3a, 0x9e, 0xac, 0xe7, 0x4a, 0x65, 0x3c, 0xfb, 0x3b, 0x0b,
|
||||
0xce, 0x96, 0xad, 0x0b, 0xfb, 0x86, 0x37, 0xf1, 0x7d, 0x5e, 0xdf, 0x98, 0x62, 0xfd, 0xb8, 0x17,
|
||||
0x10, 0xcd, 0x4a, 0x99, 0x88, 0x67, 0xff, 0x6e, 0x81, 0x7b, 0xd4, 0x14, 0x47, 0x1b, 0x79, 0x28,
|
||||
0xed, 0x2d, 0x6f, 0xea, 0xed, 0x52, 0x7f, 0xd7, 0x7b, 0x83, 0x5d, 0xb1, 0x86, 0x50, 0xaf, 0x1e,
|
||||
0x0f, 0xc8, 0xb3, 0x7f, 0x42, 0x16, 0xcb, 0x76, 0xc1, 0x30, 0x8b, 0x47, 0x2d, 0x9b, 0x61, 0x16,
|
||||
0x8f, 0xdc, 0x2d, 0xee, 0x06, 0x42, 0x5b, 0xeb, 0x88, 0x38, 0x34, 0x76, 0x74, 0x87, 0x38, 0x66,
|
||||
0xfa, 0x38, 0x0d, 0xde, 0x62, 0xb1, 0x43, 0x1d, 0xbd, 0xbc, 0xec, 0x1f, 0x2d, 0xa8, 0x8d, 0xdb,
|
||||
0x01, 0xb6, 0xe7, 0x4d, 0xb5, 0x8d, 0xea, 0x37, 0xa7, 0xdc, 0x2d, 0xee, 0x2a, 0x42, 0x1d, 0xef,
|
||||
0xfe, 0x95, 0x05, 0xf6, 0xe8, 0x78, 0xb3, 0xd7, 0xbd, 0x09, 0x67, 0x71, 0xfd, 0xba, 0x37, 0xe9,
|
||||
0xa8, 0x74, 0xcf, 0x21, 0x92, 0x32, 0x67, 0xbf, 0x58, 0x70, 0x19, 0x2b, 0xb2, 0x6c, 0x78, 0x75,
|
||||
0xda, 0xc1, 0xf3, 0xa6, 0x9a, 0x8e, 0xc3, 0x2c, 0x1d, 0x3b, 0x1b, 0xdd, 0xab, 0x88, 0xed, 0xca,
|
||||
0xd1, 0x20, 0x3c, 0xfb, 0x75, 0xd1, 0xad, 0x23, 0x33, 0xa9, 0xa4, 0x5b, 0xc7, 0x0e, 0xb9, 0x92,
|
||||
0x6e, 0x1d, 0x3f, 0xe3, 0xdc, 0x1a, 0xc2, 0x2a, 0x75, 0x59, 0x3f, 0x8f, 0x2f, 0x67, 0xfa, 0x0c,
|
||||
0xe1, 0xff, 0xd3, 0xb4, 0xc5, 0x7d, 0x76, 0xef, 0xc4, 0x37, 0x96, 0xf5, 0x6f, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0x3c, 0x6e, 0x05, 0xde, 0xf0, 0x10, 0x00, 0x00,
|
||||
}
|
694
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/deviceauth.pb.go
generated
vendored
694
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/deviceauth.pb.go
generated
vendored
@ -1,694 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_deviceauth.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type CDeviceAuth_GetOwnAuthorizedDevices_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
IncludeCanceled *bool `protobuf:"varint,2,opt,name=include_canceled" json:"include_canceled,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Request) Reset() {
|
||||
*m = CDeviceAuth_GetOwnAuthorizedDevices_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{0}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Request) GetIncludeCanceled() bool {
|
||||
if m != nil && m.IncludeCanceled != nil {
|
||||
return *m.IncludeCanceled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetOwnAuthorizedDevices_Response struct {
|
||||
Devices []*CDeviceAuth_GetOwnAuthorizedDevices_Response_Device `protobuf:"bytes,1,rep,name=devices" json:"devices,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response) Reset() {
|
||||
*m = CDeviceAuth_GetOwnAuthorizedDevices_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response) GetDevices() []*CDeviceAuth_GetOwnAuthorizedDevices_Response_Device {
|
||||
if m != nil {
|
||||
return m.Devices
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetOwnAuthorizedDevices_Response_Device struct {
|
||||
AuthDeviceToken *uint64 `protobuf:"fixed64,1,opt,name=auth_device_token" json:"auth_device_token,omitempty"`
|
||||
DeviceName *string `protobuf:"bytes,2,opt,name=device_name" json:"device_name,omitempty"`
|
||||
IsPending *bool `protobuf:"varint,3,opt,name=is_pending" json:"is_pending,omitempty"`
|
||||
IsCanceled *bool `protobuf:"varint,4,opt,name=is_canceled" json:"is_canceled,omitempty"`
|
||||
LastTimeUsed *uint32 `protobuf:"varint,5,opt,name=last_time_used" json:"last_time_used,omitempty"`
|
||||
LastBorrowerId *uint64 `protobuf:"fixed64,6,opt,name=last_borrower_id" json:"last_borrower_id,omitempty"`
|
||||
LastAppPlayed *uint32 `protobuf:"varint,7,opt,name=last_app_played" json:"last_app_played,omitempty"`
|
||||
IsLimited *bool `protobuf:"varint,8,opt,name=is_limited" json:"is_limited,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) Reset() {
|
||||
*m = CDeviceAuth_GetOwnAuthorizedDevices_Response_Device{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{1, 0}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetAuthDeviceToken() uint64 {
|
||||
if m != nil && m.AuthDeviceToken != nil {
|
||||
return *m.AuthDeviceToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetDeviceName() string {
|
||||
if m != nil && m.DeviceName != nil {
|
||||
return *m.DeviceName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetIsPending() bool {
|
||||
if m != nil && m.IsPending != nil {
|
||||
return *m.IsPending
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetIsCanceled() bool {
|
||||
if m != nil && m.IsCanceled != nil {
|
||||
return *m.IsCanceled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetLastTimeUsed() uint32 {
|
||||
if m != nil && m.LastTimeUsed != nil {
|
||||
return *m.LastTimeUsed
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetLastBorrowerId() uint64 {
|
||||
if m != nil && m.LastBorrowerId != nil {
|
||||
return *m.LastBorrowerId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetLastAppPlayed() uint32 {
|
||||
if m != nil && m.LastAppPlayed != nil {
|
||||
return *m.LastAppPlayed
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetOwnAuthorizedDevices_Response_Device) GetIsLimited() bool {
|
||||
if m != nil && m.IsLimited != nil {
|
||||
return *m.IsLimited
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CDeviceAuth_AcceptAuthorizationRequest_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
AuthDeviceToken *uint64 `protobuf:"fixed64,2,opt,name=auth_device_token" json:"auth_device_token,omitempty"`
|
||||
AuthCode *uint64 `protobuf:"fixed64,3,opt,name=auth_code" json:"auth_code,omitempty"`
|
||||
FromSteamid *uint64 `protobuf:"fixed64,4,opt,name=from_steamid" json:"from_steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) Reset() {
|
||||
*m = CDeviceAuth_AcceptAuthorizationRequest_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_AcceptAuthorizationRequest_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AcceptAuthorizationRequest_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) GetAuthDeviceToken() uint64 {
|
||||
if m != nil && m.AuthDeviceToken != nil {
|
||||
return *m.AuthDeviceToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) GetAuthCode() uint64 {
|
||||
if m != nil && m.AuthCode != nil {
|
||||
return *m.AuthCode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Request) GetFromSteamid() uint64 {
|
||||
if m != nil && m.FromSteamid != nil {
|
||||
return *m.FromSteamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_AcceptAuthorizationRequest_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Response) Reset() {
|
||||
*m = CDeviceAuth_AcceptAuthorizationRequest_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_AcceptAuthorizationRequest_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_AcceptAuthorizationRequest_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AcceptAuthorizationRequest_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
type CDeviceAuth_AuthorizeRemoteDevice_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
AuthDeviceToken *uint64 `protobuf:"fixed64,2,opt,name=auth_device_token" json:"auth_device_token,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Request) Reset() {
|
||||
*m = CDeviceAuth_AuthorizeRemoteDevice_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CDeviceAuth_AuthorizeRemoteDevice_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AuthorizeRemoteDevice_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Request) GetAuthDeviceToken() uint64 {
|
||||
if m != nil && m.AuthDeviceToken != nil {
|
||||
return *m.AuthDeviceToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_AuthorizeRemoteDevice_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Response) Reset() {
|
||||
*m = CDeviceAuth_AuthorizeRemoteDevice_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_AuthorizeRemoteDevice_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_AuthorizeRemoteDevice_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AuthorizeRemoteDevice_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{5}
|
||||
}
|
||||
|
||||
type CDeviceAuth_DeauthorizeRemoteDevice_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
AuthDeviceToken *uint64 `protobuf:"fixed64,2,opt,name=auth_device_token" json:"auth_device_token,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Request) Reset() {
|
||||
*m = CDeviceAuth_DeauthorizeRemoteDevice_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_DeauthorizeRemoteDevice_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_DeauthorizeRemoteDevice_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Request) GetAuthDeviceToken() uint64 {
|
||||
if m != nil && m.AuthDeviceToken != nil {
|
||||
return *m.AuthDeviceToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_DeauthorizeRemoteDevice_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Response) Reset() {
|
||||
*m = CDeviceAuth_DeauthorizeRemoteDevice_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_DeauthorizeRemoteDevice_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_DeauthorizeRemoteDevice_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_DeauthorizeRemoteDevice_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetUsedAuthorizedDevices_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Request) Reset() {
|
||||
*m = CDeviceAuth_GetUsedAuthorizedDevices_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{8}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetUsedAuthorizedDevices_Response struct {
|
||||
Devices []*CDeviceAuth_GetUsedAuthorizedDevices_Response_Device `protobuf:"bytes,1,rep,name=devices" json:"devices,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response) Reset() {
|
||||
*m = CDeviceAuth_GetUsedAuthorizedDevices_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response) GetDevices() []*CDeviceAuth_GetUsedAuthorizedDevices_Response_Device {
|
||||
if m != nil {
|
||||
return m.Devices
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetUsedAuthorizedDevices_Response_Device struct {
|
||||
AuthDeviceToken *uint64 `protobuf:"fixed64,1,opt,name=auth_device_token" json:"auth_device_token,omitempty"`
|
||||
DeviceName *string `protobuf:"bytes,2,opt,name=device_name" json:"device_name,omitempty"`
|
||||
OwnerSteamid *uint64 `protobuf:"fixed64,3,opt,name=owner_steamid" json:"owner_steamid,omitempty"`
|
||||
LastTimeUsed *uint32 `protobuf:"varint,4,opt,name=last_time_used" json:"last_time_used,omitempty"`
|
||||
LastAppPlayed *uint32 `protobuf:"varint,5,opt,name=last_app_played" json:"last_app_played,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) Reset() {
|
||||
*m = CDeviceAuth_GetUsedAuthorizedDevices_Response_Device{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{9, 0}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) GetAuthDeviceToken() uint64 {
|
||||
if m != nil && m.AuthDeviceToken != nil {
|
||||
return *m.AuthDeviceToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) GetDeviceName() string {
|
||||
if m != nil && m.DeviceName != nil {
|
||||
return *m.DeviceName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) GetOwnerSteamid() uint64 {
|
||||
if m != nil && m.OwnerSteamid != nil {
|
||||
return *m.OwnerSteamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) GetLastTimeUsed() uint32 {
|
||||
if m != nil && m.LastTimeUsed != nil {
|
||||
return *m.LastTimeUsed
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetUsedAuthorizedDevices_Response_Device) GetLastAppPlayed() uint32 {
|
||||
if m != nil && m.LastAppPlayed != nil {
|
||||
return *m.LastAppPlayed
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetAuthorizedBorrowers_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
IncludeCanceled *bool `protobuf:"varint,2,opt,name=include_canceled" json:"include_canceled,omitempty"`
|
||||
IncludePending *bool `protobuf:"varint,3,opt,name=include_pending" json:"include_pending,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Request) Reset() {
|
||||
*m = CDeviceAuth_GetAuthorizedBorrowers_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{10}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Request) GetIncludeCanceled() bool {
|
||||
if m != nil && m.IncludeCanceled != nil {
|
||||
return *m.IncludeCanceled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Request) GetIncludePending() bool {
|
||||
if m != nil && m.IncludePending != nil {
|
||||
return *m.IncludePending
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetAuthorizedBorrowers_Response struct {
|
||||
Borrowers []*CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower `protobuf:"bytes,1,rep,name=borrowers" json:"borrowers,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response) Reset() {
|
||||
*m = CDeviceAuth_GetAuthorizedBorrowers_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{11}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response) GetBorrowers() []*CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower {
|
||||
if m != nil {
|
||||
return m.Borrowers
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
IsPending *bool `protobuf:"varint,2,opt,name=is_pending" json:"is_pending,omitempty"`
|
||||
IsCanceled *bool `protobuf:"varint,3,opt,name=is_canceled" json:"is_canceled,omitempty"`
|
||||
TimeCreated *uint32 `protobuf:"varint,4,opt,name=time_created" json:"time_created,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) Reset() {
|
||||
*m = CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower{}
|
||||
}
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) ProtoMessage() {}
|
||||
func (*CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{11, 0}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) GetIsPending() bool {
|
||||
if m != nil && m.IsPending != nil {
|
||||
return *m.IsPending
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) GetIsCanceled() bool {
|
||||
if m != nil && m.IsCanceled != nil {
|
||||
return *m.IsCanceled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower) GetTimeCreated() uint32 {
|
||||
if m != nil && m.TimeCreated != nil {
|
||||
return *m.TimeCreated
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_AddAuthorizedBorrowers_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
SteamidBorrower []uint64 `protobuf:"fixed64,2,rep,name=steamid_borrower" json:"steamid_borrower,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Request) Reset() {
|
||||
*m = CDeviceAuth_AddAuthorizedBorrowers_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_AddAuthorizedBorrowers_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AddAuthorizedBorrowers_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{12}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Request) GetSteamidBorrower() []uint64 {
|
||||
if m != nil {
|
||||
return m.SteamidBorrower
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CDeviceAuth_AddAuthorizedBorrowers_Response struct {
|
||||
SecondsToWait *int32 `protobuf:"varint,1,opt,name=seconds_to_wait" json:"seconds_to_wait,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Response) Reset() {
|
||||
*m = CDeviceAuth_AddAuthorizedBorrowers_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_AddAuthorizedBorrowers_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_AddAuthorizedBorrowers_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{13}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_AddAuthorizedBorrowers_Response) GetSecondsToWait() int32 {
|
||||
if m != nil && m.SecondsToWait != nil {
|
||||
return *m.SecondsToWait
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CDeviceAuth_RemoveAuthorizedBorrowers_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
SteamidBorrower []uint64 `protobuf:"fixed64,2,rep,name=steamid_borrower" json:"steamid_borrower,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Request) Reset() {
|
||||
*m = CDeviceAuth_RemoveAuthorizedBorrowers_Request{}
|
||||
}
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_RemoveAuthorizedBorrowers_Request) ProtoMessage() {}
|
||||
func (*CDeviceAuth_RemoveAuthorizedBorrowers_Request) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{14}
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Request) GetSteamidBorrower() []uint64 {
|
||||
if m != nil {
|
||||
return m.SteamidBorrower
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CDeviceAuth_RemoveAuthorizedBorrowers_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Response) Reset() {
|
||||
*m = CDeviceAuth_RemoveAuthorizedBorrowers_Response{}
|
||||
}
|
||||
func (m *CDeviceAuth_RemoveAuthorizedBorrowers_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CDeviceAuth_RemoveAuthorizedBorrowers_Response) ProtoMessage() {}
|
||||
func (*CDeviceAuth_RemoveAuthorizedBorrowers_Response) Descriptor() ([]byte, []int) {
|
||||
return deviceauth_fileDescriptor0, []int{15}
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*CDeviceAuth_GetOwnAuthorizedDevices_Request)(nil), "CDeviceAuth_GetOwnAuthorizedDevices_Request")
|
||||
proto.RegisterType((*CDeviceAuth_GetOwnAuthorizedDevices_Response)(nil), "CDeviceAuth_GetOwnAuthorizedDevices_Response")
|
||||
proto.RegisterType((*CDeviceAuth_GetOwnAuthorizedDevices_Response_Device)(nil), "CDeviceAuth_GetOwnAuthorizedDevices_Response.Device")
|
||||
proto.RegisterType((*CDeviceAuth_AcceptAuthorizationRequest_Request)(nil), "CDeviceAuth_AcceptAuthorizationRequest_Request")
|
||||
proto.RegisterType((*CDeviceAuth_AcceptAuthorizationRequest_Response)(nil), "CDeviceAuth_AcceptAuthorizationRequest_Response")
|
||||
proto.RegisterType((*CDeviceAuth_AuthorizeRemoteDevice_Request)(nil), "CDeviceAuth_AuthorizeRemoteDevice_Request")
|
||||
proto.RegisterType((*CDeviceAuth_AuthorizeRemoteDevice_Response)(nil), "CDeviceAuth_AuthorizeRemoteDevice_Response")
|
||||
proto.RegisterType((*CDeviceAuth_DeauthorizeRemoteDevice_Request)(nil), "CDeviceAuth_DeauthorizeRemoteDevice_Request")
|
||||
proto.RegisterType((*CDeviceAuth_DeauthorizeRemoteDevice_Response)(nil), "CDeviceAuth_DeauthorizeRemoteDevice_Response")
|
||||
proto.RegisterType((*CDeviceAuth_GetUsedAuthorizedDevices_Request)(nil), "CDeviceAuth_GetUsedAuthorizedDevices_Request")
|
||||
proto.RegisterType((*CDeviceAuth_GetUsedAuthorizedDevices_Response)(nil), "CDeviceAuth_GetUsedAuthorizedDevices_Response")
|
||||
proto.RegisterType((*CDeviceAuth_GetUsedAuthorizedDevices_Response_Device)(nil), "CDeviceAuth_GetUsedAuthorizedDevices_Response.Device")
|
||||
proto.RegisterType((*CDeviceAuth_GetAuthorizedBorrowers_Request)(nil), "CDeviceAuth_GetAuthorizedBorrowers_Request")
|
||||
proto.RegisterType((*CDeviceAuth_GetAuthorizedBorrowers_Response)(nil), "CDeviceAuth_GetAuthorizedBorrowers_Response")
|
||||
proto.RegisterType((*CDeviceAuth_GetAuthorizedBorrowers_Response_Borrower)(nil), "CDeviceAuth_GetAuthorizedBorrowers_Response.Borrower")
|
||||
proto.RegisterType((*CDeviceAuth_AddAuthorizedBorrowers_Request)(nil), "CDeviceAuth_AddAuthorizedBorrowers_Request")
|
||||
proto.RegisterType((*CDeviceAuth_AddAuthorizedBorrowers_Response)(nil), "CDeviceAuth_AddAuthorizedBorrowers_Response")
|
||||
proto.RegisterType((*CDeviceAuth_RemoveAuthorizedBorrowers_Request)(nil), "CDeviceAuth_RemoveAuthorizedBorrowers_Request")
|
||||
proto.RegisterType((*CDeviceAuth_RemoveAuthorizedBorrowers_Response)(nil), "CDeviceAuth_RemoveAuthorizedBorrowers_Response")
|
||||
}
|
||||
|
||||
var deviceauth_fileDescriptor0 = []byte{
|
||||
// 934 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x56, 0xdf, 0x4e, 0x3b, 0x45,
|
||||
0x14, 0xce, 0xb6, 0x50, 0x60, 0x10, 0x91, 0x51, 0xa0, 0xec, 0x85, 0x4e, 0x56, 0x2f, 0x10, 0xca,
|
||||
0x80, 0x04, 0xe3, 0xff, 0x3f, 0x20, 0xa2, 0x17, 0x26, 0x26, 0x18, 0xa3, 0x72, 0xb3, 0x99, 0xee,
|
||||
0x0e, 0x74, 0x62, 0xbb, 0xbb, 0xee, 0x4c, 0x69, 0xf0, 0x8a, 0x98, 0xf8, 0x12, 0xfa, 0x06, 0x5e,
|
||||
0x19, 0x13, 0xa2, 0x89, 0x5e, 0xf8, 0x0e, 0xbe, 0x8d, 0x57, 0xbf, 0xb3, 0xb3, 0xb3, 0x85, 0x6d,
|
||||
0x77, 0x4b, 0xb7, 0xe1, 0xaa, 0x9b, 0x73, 0xce, 0x9c, 0xf9, 0xce, 0x99, 0xf3, 0x7d, 0xa7, 0x68,
|
||||
0x47, 0x2a, 0xce, 0x7a, 0x3d, 0x2e, 0x25, 0xbb, 0xe2, 0xd2, 0xf5, 0xf9, 0xb5, 0xf0, 0x38, 0xeb,
|
||||
0xab, 0x0e, 0xd5, 0x0e, 0xaf, 0x2b, 0x78, 0xa0, 0x68, 0x14, 0x87, 0x2a, 0xb4, 0x5b, 0xf9, 0xd8,
|
||||
0x7e, 0x20, 0x2e, 0x05, 0xf7, 0xdd, 0x36, 0x93, 0x7c, 0x3c, 0xda, 0xf9, 0x16, 0xed, 0x7e, 0x72,
|
||||
0xaa, 0xd3, 0x1d, 0x43, 0x3a, 0xf7, 0x33, 0xae, 0xbe, 0x1c, 0x04, 0xc9, 0x67, 0x18, 0x8b, 0x1f,
|
||||
0xb9, 0x9f, 0xba, 0xa4, 0x7b, 0xce, 0x7f, 0xe8, 0x73, 0xa9, 0xf0, 0x2a, 0x5a, 0xd0, 0x39, 0x84,
|
||||
0xdf, 0xb4, 0x88, 0xb5, 0xdd, 0xc0, 0x4d, 0xf4, 0x82, 0x08, 0xbc, 0x6e, 0xdf, 0xe7, 0xae, 0xc7,
|
||||
0x02, 0x8f, 0x77, 0xb9, 0xdf, 0xac, 0x81, 0x67, 0xd1, 0xf9, 0xab, 0x86, 0x5a, 0xd3, 0xa5, 0x96,
|
||||
0x51, 0x18, 0x48, 0x8e, 0x3f, 0x45, 0x0b, 0x69, 0x61, 0x12, 0x72, 0xd7, 0xb7, 0x97, 0x0f, 0x8f,
|
||||
0x68, 0x95, 0xf3, 0x34, 0x35, 0xd8, 0xff, 0x5a, 0xa8, 0x91, 0x7e, 0xe2, 0x2d, 0xb4, 0x96, 0x34,
|
||||
0xc9, 0xf4, 0xcb, 0x55, 0xe1, 0xf7, 0x3c, 0x30, 0xb8, 0x5f, 0x44, 0xcb, 0xc6, 0x1a, 0xb0, 0x1e,
|
||||
0xd7, 0x90, 0x97, 0x30, 0x46, 0x48, 0x48, 0x37, 0xe2, 0x81, 0x2f, 0x82, 0xab, 0x66, 0x3d, 0x29,
|
||||
0x23, 0x09, 0x04, 0xdb, 0xb0, 0xb6, 0x39, 0x6d, 0xdc, 0x40, 0xcf, 0x77, 0x99, 0x54, 0xae, 0x12,
|
||||
0x3d, 0xee, 0xf6, 0x25, 0xd8, 0xe7, 0xc1, 0xbe, 0x92, 0x74, 0x43, 0xdb, 0xdb, 0x61, 0x1c, 0x87,
|
||||
0x03, 0x1e, 0xbb, 0xd0, 0xa7, 0x86, 0xbe, 0x6f, 0x13, 0xad, 0x6a, 0x0f, 0x8b, 0x22, 0x37, 0xea,
|
||||
0xb2, 0x1b, 0x38, 0xb2, 0xa0, 0x8f, 0xa4, 0x77, 0x76, 0x45, 0x4f, 0x28, 0xb0, 0x2d, 0xea, 0xd6,
|
||||
0xfd, 0x6c, 0xa1, 0x5c, 0xe9, 0xc7, 0x9e, 0xc7, 0x23, 0x95, 0x95, 0xce, 0x94, 0x08, 0x03, 0xf3,
|
||||
0x20, 0xe5, 0x0f, 0x53, 0x58, 0x7b, 0x4d, 0xbb, 0xd6, 0xd0, 0x92, 0x76, 0x79, 0xa1, 0xcf, 0x75,
|
||||
0x95, 0x0d, 0xfc, 0x12, 0x7a, 0xee, 0x32, 0x0e, 0x7b, 0x6e, 0x96, 0x23, 0x29, 0xb3, 0xe1, 0xbc,
|
||||
0x81, 0xf6, 0xa7, 0x86, 0x91, 0x3e, 0x82, 0xf3, 0x0d, 0x7a, 0x3d, 0x77, 0x24, 0x7b, 0xae, 0x73,
|
||||
0xde, 0x0b, 0x15, 0x4f, 0x3d, 0xb3, 0x80, 0x76, 0x5a, 0x68, 0x67, 0x9a, 0xc4, 0x06, 0xc6, 0x77,
|
||||
0xf9, 0xb1, 0x3e, 0xd5, 0x64, 0x79, 0x1a, 0x20, 0x34, 0x3f, 0xd6, 0xe5, 0xa9, 0x0d, 0x94, 0x8f,
|
||||
0xc6, 0x68, 0xf0, 0x35, 0x0c, 0xcc, 0xf4, 0x14, 0x73, 0xfe, 0xb7, 0xd0, 0xde, 0x94, 0x19, 0x0c,
|
||||
0x93, 0xce, 0x46, 0x99, 0xf4, 0x26, 0xad, 0x94, 0x20, 0xa3, 0xd2, 0xed, 0xec, 0x54, 0x5a, 0x47,
|
||||
0x2b, 0xe1, 0x20, 0x00, 0x06, 0x64, 0xb5, 0xa4, 0x73, 0x36, 0x4e, 0x9c, 0x39, 0xcd, 0x82, 0x02,
|
||||
0x7a, 0x68, 0x46, 0x39, 0x51, 0xfe, 0xd9, 0x01, 0xfa, 0x3d, 0xec, 0x13, 0xc3, 0xb2, 0x59, 0xe4,
|
||||
0x29, 0xb9, 0x31, 0xf3, 0xe4, 0x08, 0xef, 0xfc, 0x67, 0x8d, 0x49, 0x62, 0xf1, 0x95, 0xa6, 0xd9,
|
||||
0x9f, 0xa3, 0xa5, 0x8c, 0xee, 0xa5, 0xed, 0x9e, 0x94, 0x80, 0x66, 0x26, 0xfb, 0x02, 0x2d, 0x66,
|
||||
0xdf, 0xe3, 0x95, 0xe4, 0xb5, 0xa9, 0x56, 0xa4, 0x4d, 0xa9, 0x60, 0x01, 0x95, 0x75, 0x77, 0xbd,
|
||||
0x98, 0x33, 0x95, 0x35, 0x18, 0x78, 0x99, 0xa7, 0x8f, 0xef, 0x57, 0xed, 0xa3, 0x31, 0x0c, 0xb5,
|
||||
0x0d, 0x30, 0xd4, 0x61, 0x3a, 0xcf, 0xf2, 0xdd, 0x2a, 0x4d, 0x6c, 0xba, 0x05, 0x6d, 0x97, 0xdc,
|
||||
0x0b, 0x03, 0x5f, 0xc2, 0x0c, 0xb9, 0x03, 0x26, 0x94, 0xbe, 0x61, 0xde, 0xb9, 0xc8, 0x0f, 0x79,
|
||||
0xc2, 0xa5, 0x6b, 0xfe, 0x44, 0x18, 0x0f, 0xf2, 0x72, 0x3a, 0x29, 0x77, 0x0a, 0xf3, 0xf0, 0xcf,
|
||||
0x65, 0x84, 0xee, 0x4f, 0xe0, 0x5f, 0x2c, 0xb4, 0x59, 0xb2, 0x7f, 0x70, 0x8b, 0x56, 0x58, 0xa0,
|
||||
0xf6, 0x5e, 0xa5, 0x9d, 0xe6, 0x38, 0x3f, 0xdd, 0x35, 0x5f, 0x86, 0x28, 0xd2, 0x15, 0x52, 0x91,
|
||||
0xf0, 0x92, 0x0c, 0xc5, 0xc6, 0x27, 0x86, 0xe2, 0xf8, 0xce, 0x42, 0x76, 0xb9, 0x34, 0xe3, 0xfd,
|
||||
0x8a, 0xab, 0xc4, 0x3e, 0xa0, 0x55, 0x45, 0xff, 0x08, 0x50, 0x1e, 0xa4, 0x81, 0x84, 0x05, 0x43,
|
||||
0x8c, 0x3a, 0x98, 0xc4, 0x69, 0x34, 0x69, 0xdf, 0x80, 0x2f, 0x54, 0x1d, 0x1e, 0x13, 0x20, 0x7e,
|
||||
0x2c, 0xf1, 0x6f, 0x16, 0x5a, 0x2f, 0x94, 0x71, 0xbc, 0x43, 0xa7, 0xde, 0x21, 0xf6, 0x2e, 0xad,
|
||||
0xb0, 0x16, 0xde, 0x06, 0xa0, 0x47, 0xc3, 0x18, 0x02, 0x0a, 0x05, 0xf0, 0x92, 0x40, 0xd3, 0x4c,
|
||||
0xa2, 0x3a, 0x4c, 0x91, 0x0e, 0x93, 0xc4, 0x10, 0x2d, 0x43, 0x8f, 0x7f, 0x85, 0x09, 0x28, 0x91,
|
||||
0xfa, 0x91, 0x09, 0x78, 0x64, 0xd7, 0x8c, 0x4c, 0xc0, 0xa3, 0xeb, 0xe3, 0x55, 0x80, 0xfc, 0xca,
|
||||
0x39, 0xbf, 0x06, 0xc1, 0xd5, 0x78, 0x0d, 0xd0, 0x5c, 0x8f, 0xf1, 0xdf, 0x16, 0x6a, 0x96, 0xa9,
|
||||
0x3a, 0xde, 0xa3, 0x55, 0xf6, 0x8f, 0x4d, 0xab, 0xed, 0x0a, 0xe7, 0x63, 0x00, 0xf8, 0xfe, 0xe4,
|
||||
0x11, 0xd5, 0x0f, 0x4e, 0x52, 0x5d, 0x27, 0x86, 0x9b, 0x3e, 0xb9, 0x82, 0x6d, 0x21, 0x09, 0xa0,
|
||||
0xff, 0xc3, 0x42, 0x1b, 0xc5, 0x22, 0x89, 0x77, 0xe9, 0xf4, 0xea, 0x6f, 0xb7, 0xaa, 0xc8, 0xae,
|
||||
0xf3, 0x01, 0xe0, 0x7e, 0xe7, 0x21, 0x6e, 0x3d, 0x95, 0xe9, 0x04, 0x80, 0xa4, 0x1a, 0x9c, 0x80,
|
||||
0xef, 0xe1, 0x48, 0x0f, 0x6b, 0xc2, 0xbf, 0x03, 0xe8, 0x62, 0xb1, 0x1b, 0x01, 0x3d, 0x59, 0x6a,
|
||||
0x47, 0x40, 0x3f, 0x22, 0x9f, 0xce, 0x7b, 0x00, 0xfa, 0x2d, 0x08, 0x2a, 0x07, 0x6b, 0xfe, 0x49,
|
||||
0x16, 0x09, 0xc5, 0x3f, 0x16, 0xda, 0x2a, 0xd5, 0x3e, 0x4c, 0x69, 0x25, 0xfd, 0xb5, 0xf7, 0x2b,
|
||||
0x6a, 0xaa, 0xf3, 0x21, 0x60, 0x7f, 0x37, 0x8d, 0x9b, 0x05, 0xbe, 0xfd, 0x1a, 0x9c, 0x27, 0x5f,
|
||||
0x88, 0x76, 0xcc, 0xe2, 0x1b, 0xf2, 0x55, 0x87, 0xc5, 0x09, 0x3f, 0x25, 0x57, 0x0a, 0x7e, 0x25,
|
||||
0x7c, 0xc4, 0x49, 0xd8, 0x49, 0xfd, 0xd6, 0xb2, 0x9e, 0x05, 0x00, 0x00, 0xff, 0xff, 0x27, 0xc5,
|
||||
0x15, 0xba, 0x30, 0x0d, 0x00, 0x00,
|
||||
}
|
850
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/gamenotifications.pb.go
generated
vendored
850
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/gamenotifications.pb.go
generated
vendored
@ -1,850 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_gamenotifications.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type CGameNotifications_Variable struct {
|
||||
Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
|
||||
Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Variable) Reset() { *m = CGameNotifications_Variable{} }
|
||||
func (m *CGameNotifications_Variable) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_Variable) ProtoMessage() {}
|
||||
func (*CGameNotifications_Variable) Descriptor() ([]byte, []int) { return gamenotifications_fileDescriptor0, []int{0} }
|
||||
|
||||
func (m *CGameNotifications_Variable) GetKey() string {
|
||||
if m != nil && m.Key != nil {
|
||||
return *m.Key
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Variable) GetValue() string {
|
||||
if m != nil && m.Value != nil {
|
||||
return *m.Value
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CGameNotifications_LocalizedText struct {
|
||||
Token *string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
|
||||
Variables []*CGameNotifications_Variable `protobuf:"bytes,2,rep,name=variables" json:"variables,omitempty"`
|
||||
RenderedText *string `protobuf:"bytes,3,opt,name=rendered_text" json:"rendered_text,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_LocalizedText) Reset() { *m = CGameNotifications_LocalizedText{} }
|
||||
func (m *CGameNotifications_LocalizedText) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_LocalizedText) ProtoMessage() {}
|
||||
func (*CGameNotifications_LocalizedText) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_LocalizedText) GetToken() string {
|
||||
if m != nil && m.Token != nil {
|
||||
return *m.Token
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_LocalizedText) GetVariables() []*CGameNotifications_Variable {
|
||||
if m != nil {
|
||||
return m.Variables
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_LocalizedText) GetRenderedText() string {
|
||||
if m != nil && m.RenderedText != nil {
|
||||
return *m.RenderedText
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CGameNotifications_UserStatus struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
State *string `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
|
||||
Title *CGameNotifications_LocalizedText `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
|
||||
Message *CGameNotifications_LocalizedText `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UserStatus) Reset() { *m = CGameNotifications_UserStatus{} }
|
||||
func (m *CGameNotifications_UserStatus) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_UserStatus) ProtoMessage() {}
|
||||
func (*CGameNotifications_UserStatus) Descriptor() ([]byte, []int) { return gamenotifications_fileDescriptor0, []int{2} }
|
||||
|
||||
func (m *CGameNotifications_UserStatus) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UserStatus) GetState() string {
|
||||
if m != nil && m.State != nil {
|
||||
return *m.State
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UserStatus) GetTitle() *CGameNotifications_LocalizedText {
|
||||
if m != nil {
|
||||
return m.Title
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UserStatus) GetMessage() *CGameNotifications_LocalizedText {
|
||||
if m != nil {
|
||||
return m.Message
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CGameNotifications_CreateSession_Request struct {
|
||||
Appid *uint32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
Context *uint64 `protobuf:"varint,2,opt,name=context" json:"context,omitempty"`
|
||||
Title *CGameNotifications_LocalizedText `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
|
||||
Users []*CGameNotifications_UserStatus `protobuf:"bytes,4,rep,name=users" json:"users,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,5,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) Reset() {
|
||||
*m = CGameNotifications_CreateSession_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_CreateSession_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_CreateSession_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_CreateSession_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) GetContext() uint64 {
|
||||
if m != nil && m.Context != nil {
|
||||
return *m.Context
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) GetTitle() *CGameNotifications_LocalizedText {
|
||||
if m != nil {
|
||||
return m.Title
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) GetUsers() []*CGameNotifications_UserStatus {
|
||||
if m != nil {
|
||||
return m.Users
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CGameNotifications_CreateSession_Response struct {
|
||||
Sessionid *uint64 `protobuf:"varint,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Response) Reset() {
|
||||
*m = CGameNotifications_CreateSession_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_CreateSession_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_CreateSession_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_CreateSession_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_CreateSession_Response) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CGameNotifications_DeleteSession_Request struct {
|
||||
Sessionid *uint64 `protobuf:"varint,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,3,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_DeleteSession_Request) Reset() {
|
||||
*m = CGameNotifications_DeleteSession_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_DeleteSession_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_DeleteSession_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_DeleteSession_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{5}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_DeleteSession_Request) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_DeleteSession_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_DeleteSession_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CGameNotifications_DeleteSession_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_DeleteSession_Response) Reset() {
|
||||
*m = CGameNotifications_DeleteSession_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_DeleteSession_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_DeleteSession_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_DeleteSession_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
type CGameNotifications_UpdateSession_Request struct {
|
||||
Sessionid *uint64 `protobuf:"varint,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
Title *CGameNotifications_LocalizedText `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
|
||||
Users []*CGameNotifications_UserStatus `protobuf:"bytes,4,rep,name=users" json:"users,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,6,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) Reset() {
|
||||
*m = CGameNotifications_UpdateSession_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_UpdateSession_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_UpdateSession_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_UpdateSession_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) GetTitle() *CGameNotifications_LocalizedText {
|
||||
if m != nil {
|
||||
return m.Title
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) GetUsers() []*CGameNotifications_UserStatus {
|
||||
if m != nil {
|
||||
return m.Users
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CGameNotifications_UpdateSession_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateSession_Response) Reset() {
|
||||
*m = CGameNotifications_UpdateSession_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_UpdateSession_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_UpdateSession_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_UpdateSession_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{8}
|
||||
}
|
||||
|
||||
type CGameNotifications_EnumerateSessions_Request struct {
|
||||
Appid *uint32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
IncludeAllUserMessages *bool `protobuf:"varint,3,opt,name=include_all_user_messages" json:"include_all_user_messages,omitempty"`
|
||||
IncludeAuthUserMessage *bool `protobuf:"varint,4,opt,name=include_auth_user_message" json:"include_auth_user_message,omitempty"`
|
||||
Language *string `protobuf:"bytes,5,opt,name=language" json:"language,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) Reset() {
|
||||
*m = CGameNotifications_EnumerateSessions_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_EnumerateSessions_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_EnumerateSessions_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) GetIncludeAllUserMessages() bool {
|
||||
if m != nil && m.IncludeAllUserMessages != nil {
|
||||
return *m.IncludeAllUserMessages
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) GetIncludeAuthUserMessage() bool {
|
||||
if m != nil && m.IncludeAuthUserMessage != nil {
|
||||
return *m.IncludeAuthUserMessage
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Request) GetLanguage() string {
|
||||
if m != nil && m.Language != nil {
|
||||
return *m.Language
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CGameNotifications_Session struct {
|
||||
Sessionid *uint64 `protobuf:"varint,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Appid *uint64 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
Context *uint64 `protobuf:"varint,3,opt,name=context" json:"context,omitempty"`
|
||||
Title *CGameNotifications_LocalizedText `protobuf:"bytes,4,opt,name=title" json:"title,omitempty"`
|
||||
TimeCreated *uint32 `protobuf:"varint,5,opt,name=time_created" json:"time_created,omitempty"`
|
||||
TimeUpdated *uint32 `protobuf:"varint,6,opt,name=time_updated" json:"time_updated,omitempty"`
|
||||
UserStatus []*CGameNotifications_UserStatus `protobuf:"bytes,7,rep,name=user_status" json:"user_status,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) Reset() { *m = CGameNotifications_Session{} }
|
||||
func (m *CGameNotifications_Session) String() string { return proto.CompactTextString(m) }
|
||||
func (*CGameNotifications_Session) ProtoMessage() {}
|
||||
func (*CGameNotifications_Session) Descriptor() ([]byte, []int) { return gamenotifications_fileDescriptor0, []int{10} }
|
||||
|
||||
func (m *CGameNotifications_Session) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetAppid() uint64 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetContext() uint64 {
|
||||
if m != nil && m.Context != nil {
|
||||
return *m.Context
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetTitle() *CGameNotifications_LocalizedText {
|
||||
if m != nil {
|
||||
return m.Title
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetTimeCreated() uint32 {
|
||||
if m != nil && m.TimeCreated != nil {
|
||||
return *m.TimeCreated
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetTimeUpdated() uint32 {
|
||||
if m != nil && m.TimeUpdated != nil {
|
||||
return *m.TimeUpdated
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_Session) GetUserStatus() []*CGameNotifications_UserStatus {
|
||||
if m != nil {
|
||||
return m.UserStatus
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CGameNotifications_EnumerateSessions_Response struct {
|
||||
Sessions []*CGameNotifications_Session `protobuf:"bytes,1,rep,name=sessions" json:"sessions,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Response) Reset() {
|
||||
*m = CGameNotifications_EnumerateSessions_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_EnumerateSessions_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_EnumerateSessions_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_EnumerateSessions_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{11}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_EnumerateSessions_Response) GetSessions() []*CGameNotifications_Session {
|
||||
if m != nil {
|
||||
return m.Sessions
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CGameNotifications_GetSessionDetails_Request struct {
|
||||
Sessions []*CGameNotifications_GetSessionDetails_Request_RequestedSession `protobuf:"bytes,1,rep,name=sessions" json:"sessions,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
Language *string `protobuf:"bytes,3,opt,name=language" json:"language,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request) Reset() {
|
||||
*m = CGameNotifications_GetSessionDetails_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_GetSessionDetails_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_GetSessionDetails_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_GetSessionDetails_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{12}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request) GetSessions() []*CGameNotifications_GetSessionDetails_Request_RequestedSession {
|
||||
if m != nil {
|
||||
return m.Sessions
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request) GetLanguage() string {
|
||||
if m != nil && m.Language != nil {
|
||||
return *m.Language
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CGameNotifications_GetSessionDetails_Request_RequestedSession struct {
|
||||
Sessionid *uint64 `protobuf:"varint,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
IncludeAuthUserMessage *bool `protobuf:"varint,3,opt,name=include_auth_user_message" json:"include_auth_user_message,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request_RequestedSession) Reset() {
|
||||
*m = CGameNotifications_GetSessionDetails_Request_RequestedSession{}
|
||||
}
|
||||
func (m *CGameNotifications_GetSessionDetails_Request_RequestedSession) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_GetSessionDetails_Request_RequestedSession) ProtoMessage() {}
|
||||
func (*CGameNotifications_GetSessionDetails_Request_RequestedSession) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{12, 0}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request_RequestedSession) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Request_RequestedSession) GetIncludeAuthUserMessage() bool {
|
||||
if m != nil && m.IncludeAuthUserMessage != nil {
|
||||
return *m.IncludeAuthUserMessage
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CGameNotifications_GetSessionDetails_Response struct {
|
||||
Sessions []*CGameNotifications_Session `protobuf:"bytes,1,rep,name=sessions" json:"sessions,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Response) Reset() {
|
||||
*m = CGameNotifications_GetSessionDetails_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_GetSessionDetails_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_GetSessionDetails_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_GetSessionDetails_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{13}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_GetSessionDetails_Response) GetSessions() []*CGameNotifications_Session {
|
||||
if m != nil {
|
||||
return m.Sessions
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type GameNotificationSettings struct {
|
||||
Appid *uint32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
AllowNotifications *bool `protobuf:"varint,2,opt,name=allow_notifications" json:"allow_notifications,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *GameNotificationSettings) Reset() { *m = GameNotificationSettings{} }
|
||||
func (m *GameNotificationSettings) String() string { return proto.CompactTextString(m) }
|
||||
func (*GameNotificationSettings) ProtoMessage() {}
|
||||
func (*GameNotificationSettings) Descriptor() ([]byte, []int) { return gamenotifications_fileDescriptor0, []int{14} }
|
||||
|
||||
func (m *GameNotificationSettings) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *GameNotificationSettings) GetAllowNotifications() bool {
|
||||
if m != nil && m.AllowNotifications != nil {
|
||||
return *m.AllowNotifications
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CGameNotifications_UpdateNotificationSettings_Request struct {
|
||||
GameNotificationSettings []*GameNotificationSettings `protobuf:"bytes,1,rep,name=game_notification_settings" json:"game_notification_settings,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateNotificationSettings_Request) Reset() {
|
||||
*m = CGameNotifications_UpdateNotificationSettings_Request{}
|
||||
}
|
||||
func (m *CGameNotifications_UpdateNotificationSettings_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_UpdateNotificationSettings_Request) ProtoMessage() {}
|
||||
func (*CGameNotifications_UpdateNotificationSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{15}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateNotificationSettings_Request) GetGameNotificationSettings() []*GameNotificationSettings {
|
||||
if m != nil {
|
||||
return m.GameNotificationSettings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CGameNotifications_UpdateNotificationSettings_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_UpdateNotificationSettings_Response) Reset() {
|
||||
*m = CGameNotifications_UpdateNotificationSettings_Response{}
|
||||
}
|
||||
func (m *CGameNotifications_UpdateNotificationSettings_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_UpdateNotificationSettings_Response) ProtoMessage() {}
|
||||
func (*CGameNotifications_UpdateNotificationSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{16}
|
||||
}
|
||||
|
||||
type CGameNotifications_OnNotificationsRequested_Notification struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnNotificationsRequested_Notification) Reset() {
|
||||
*m = CGameNotifications_OnNotificationsRequested_Notification{}
|
||||
}
|
||||
func (m *CGameNotifications_OnNotificationsRequested_Notification) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_OnNotificationsRequested_Notification) ProtoMessage() {}
|
||||
func (*CGameNotifications_OnNotificationsRequested_Notification) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{17}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnNotificationsRequested_Notification) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnNotificationsRequested_Notification) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CGameNotifications_OnUserStatusChanged_Notification struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
Sessionid *uint64 `protobuf:"varint,2,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,3,opt,name=appid" json:"appid,omitempty"`
|
||||
Status *CGameNotifications_UserStatus `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"`
|
||||
Removed *bool `protobuf:"varint,5,opt,name=removed" json:"removed,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) Reset() {
|
||||
*m = CGameNotifications_OnUserStatusChanged_Notification{}
|
||||
}
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CGameNotifications_OnUserStatusChanged_Notification) ProtoMessage() {}
|
||||
func (*CGameNotifications_OnUserStatusChanged_Notification) Descriptor() ([]byte, []int) {
|
||||
return gamenotifications_fileDescriptor0, []int{18}
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) GetSessionid() uint64 {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) GetStatus() *CGameNotifications_UserStatus {
|
||||
if m != nil {
|
||||
return m.Status
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CGameNotifications_OnUserStatusChanged_Notification) GetRemoved() bool {
|
||||
if m != nil && m.Removed != nil {
|
||||
return *m.Removed
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*CGameNotifications_Variable)(nil), "CGameNotifications_Variable")
|
||||
proto.RegisterType((*CGameNotifications_LocalizedText)(nil), "CGameNotifications_LocalizedText")
|
||||
proto.RegisterType((*CGameNotifications_UserStatus)(nil), "CGameNotifications_UserStatus")
|
||||
proto.RegisterType((*CGameNotifications_CreateSession_Request)(nil), "CGameNotifications_CreateSession_Request")
|
||||
proto.RegisterType((*CGameNotifications_CreateSession_Response)(nil), "CGameNotifications_CreateSession_Response")
|
||||
proto.RegisterType((*CGameNotifications_DeleteSession_Request)(nil), "CGameNotifications_DeleteSession_Request")
|
||||
proto.RegisterType((*CGameNotifications_DeleteSession_Response)(nil), "CGameNotifications_DeleteSession_Response")
|
||||
proto.RegisterType((*CGameNotifications_UpdateSession_Request)(nil), "CGameNotifications_UpdateSession_Request")
|
||||
proto.RegisterType((*CGameNotifications_UpdateSession_Response)(nil), "CGameNotifications_UpdateSession_Response")
|
||||
proto.RegisterType((*CGameNotifications_EnumerateSessions_Request)(nil), "CGameNotifications_EnumerateSessions_Request")
|
||||
proto.RegisterType((*CGameNotifications_Session)(nil), "CGameNotifications_Session")
|
||||
proto.RegisterType((*CGameNotifications_EnumerateSessions_Response)(nil), "CGameNotifications_EnumerateSessions_Response")
|
||||
proto.RegisterType((*CGameNotifications_GetSessionDetails_Request)(nil), "CGameNotifications_GetSessionDetails_Request")
|
||||
proto.RegisterType((*CGameNotifications_GetSessionDetails_Request_RequestedSession)(nil), "CGameNotifications_GetSessionDetails_Request.RequestedSession")
|
||||
proto.RegisterType((*CGameNotifications_GetSessionDetails_Response)(nil), "CGameNotifications_GetSessionDetails_Response")
|
||||
proto.RegisterType((*GameNotificationSettings)(nil), "GameNotificationSettings")
|
||||
proto.RegisterType((*CGameNotifications_UpdateNotificationSettings_Request)(nil), "CGameNotifications_UpdateNotificationSettings_Request")
|
||||
proto.RegisterType((*CGameNotifications_UpdateNotificationSettings_Response)(nil), "CGameNotifications_UpdateNotificationSettings_Response")
|
||||
proto.RegisterType((*CGameNotifications_OnNotificationsRequested_Notification)(nil), "CGameNotifications_OnNotificationsRequested_Notification")
|
||||
proto.RegisterType((*CGameNotifications_OnUserStatusChanged_Notification)(nil), "CGameNotifications_OnUserStatusChanged_Notification")
|
||||
}
|
||||
|
||||
var gamenotifications_fileDescriptor0 = []byte{
|
||||
// 2245 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x8f, 0x1c, 0x47,
|
||||
0x15, 0x57, 0xef, 0xec, 0x7a, 0xd7, 0x65, 0x2c, 0x91, 0x0e, 0x12, 0x93, 0xb1, 0xe3, 0xb4, 0x3b,
|
||||
0x38, 0xde, 0x8d, 0x77, 0xcb, 0x78, 0x43, 0xfc, 0x01, 0x24, 0xc2, 0xbd, 0x8e, 0x4c, 0x24, 0xb3,
|
||||
0x49, 0xbc, 0x9b, 0x60, 0x21, 0xc4, 0xa8, 0xa6, 0xbb, 0x66, 0xa7, 0xb3, 0x3d, 0xdd, 0x43, 0x57,
|
||||
0xf5, 0x6e, 0x36, 0x07, 0x82, 0xcc, 0xd7, 0x09, 0x82, 0x48, 0x22, 0x40, 0x48, 0x91, 0x90, 0x50,
|
||||
0xc4, 0x81, 0x0b, 0x87, 0x1c, 0x41, 0x48, 0x91, 0x38, 0x72, 0xcc, 0x15, 0xce, 0xfc, 0x15, 0xbc,
|
||||
0xfa, 0xec, 0xee, 0x99, 0x1e, 0xef, 0xcc, 0x22, 0x11, 0x71, 0xb1, 0x3c, 0x5d, 0xf5, 0xde, 0xfb,
|
||||
0xd5, 0x7b, 0xbf, 0xf7, 0x51, 0xb5, 0xe8, 0x1a, 0xe3, 0x94, 0x0c, 0x87, 0x94, 0x31, 0xb2, 0x47,
|
||||
0x59, 0x77, 0x8f, 0x0c, 0x69, 0x9a, 0xf1, 0xb8, 0x1f, 0x87, 0x84, 0xc7, 0x59, 0xca, 0xb0, 0x5c,
|
||||
0x0f, 0x93, 0x98, 0xa6, 0x1c, 0x8f, 0xf2, 0x8c, 0x67, 0x9d, 0xf5, 0xba, 0x48, 0x91, 0xc2, 0x6e,
|
||||
0x1a, 0x75, 0x7b, 0x84, 0xd1, 0xc9, 0xdd, 0xfe, 0xbf, 0x16, 0xd0, 0xb9, 0xad, 0xbb, 0xa0, 0x76,
|
||||
0xbb, 0xaa, 0xb6, 0xfb, 0x06, 0xc9, 0x63, 0xd2, 0x4b, 0xa8, 0xfb, 0x91, 0x83, 0x5a, 0xfb, 0xf4,
|
||||
0xa8, 0xed, 0x78, 0xce, 0xea, 0xe9, 0xe0, 0x37, 0xce, 0xc3, 0x8f, 0xdb, 0xef, 0x39, 0xbb, 0x03,
|
||||
0xea, 0xa5, 0x20, 0xe3, 0x65, 0x7d, 0x8f, 0xc3, 0xff, 0x0f, 0xf4, 0x6e, 0x2f, 0x4e, 0xe5, 0xef,
|
||||
0x24, 0x0b, 0x49, 0x12, 0xbf, 0x4d, 0x23, 0x8f, 0xd3, 0xb7, 0xb8, 0xb7, 0xb1, 0xe1, 0x91, 0xf4,
|
||||
0xe8, 0x70, 0x40, 0x73, 0x0a, 0xcb, 0x84, 0x7b, 0x97, 0x8c, 0x80, 0x50, 0x72, 0xc9, 0x8b, 0x99,
|
||||
0xd7, 0xcf, 0x8a, 0x34, 0xf2, 0x0e, 0x63, 0x3e, 0xd0, 0x2a, 0xa4, 0x60, 0xcc, 0xe1, 0x53, 0x92,
|
||||
0x78, 0x3d, 0xea, 0xb1, 0xa2, 0xc7, 0x78, 0xcc, 0x8b, 0x88, 0xaa, 0x6d, 0x72, 0xd3, 0x5e, 0x7c,
|
||||
0x40, 0x53, 0xb0, 0x9e, 0x14, 0xd4, 0xfd, 0xb5, 0x83, 0x96, 0xe4, 0xff, 0xda, 0x0b, 0x12, 0xea,
|
||||
0xcf, 0x04, 0xd4, 0x87, 0x12, 0xaa, 0xfc, 0x3c, 0x81, 0x95, 0x67, 0x56, 0x29, 0x9f, 0x86, 0x1c,
|
||||
0xbe, 0x8e, 0x12, 0x12, 0x5a, 0x61, 0x63, 0x50, 0xa9, 0xc0, 0x9e, 0xb7, 0x45, 0x52, 0x40, 0xc9,
|
||||
0x68, 0xd2, 0x17, 0x20, 0x89, 0x91, 0x97, 0x5e, 0x04, 0x0b, 0xfb, 0x34, 0xc5, 0xfe, 0x4f, 0x5a,
|
||||
0xc8, 0x6b, 0x70, 0xf1, 0x3d, 0x63, 0x6a, 0x17, 0x2c, 0xb9, 0xdf, 0x44, 0x4b, 0x72, 0xbb, 0x76,
|
||||
0xf4, 0x2d, 0x00, 0xff, 0xfc, 0xed, 0x06, 0x75, 0xca, 0x81, 0x43, 0x32, 0x62, 0xe2, 0x00, 0x02,
|
||||
0x53, 0x44, 0x59, 0x9c, 0x03, 0x60, 0xc6, 0xf3, 0x38, 0xdd, 0xc3, 0xee, 0xcf, 0x1d, 0x74, 0xda,
|
||||
0x20, 0x64, 0xe0, 0x8c, 0xd6, 0xea, 0x99, 0xcd, 0xf3, 0xf8, 0x11, 0x31, 0x0e, 0xbe, 0x0b, 0xc6,
|
||||
0x1e, 0x80, 0xb1, 0x98, 0x71, 0x71, 0x50, 0x2b, 0xac, 0x1c, 0xc7, 0x26, 0x3d, 0x05, 0xd1, 0xac,
|
||||
0xec, 0x52, 0xb1, 0x9b, 0x70, 0xa0, 0xc1, 0xf3, 0x53, 0x07, 0x9d, 0xcd, 0x69, 0x1a, 0x41, 0xf4,
|
||||
0xa3, 0xae, 0xf0, 0x6a, 0xbb, 0x25, 0x8f, 0x98, 0x81, 0xd5, 0x7d, 0x71, 0x76, 0xcf, 0xac, 0x1a,
|
||||
0x1d, 0x39, 0xfd, 0x3e, 0x98, 0xe5, 0xf0, 0x21, 0x21, 0xe9, 0x5e, 0x01, 0x34, 0x5e, 0xf7, 0xc2,
|
||||
0x6c, 0x38, 0x4a, 0x28, 0x98, 0x97, 0xc1, 0xb7, 0x41, 0xb4, 0xb8, 0xc4, 0x89, 0xd6, 0xbd, 0xb8,
|
||||
0x2f, 0x62, 0xa0, 0x85, 0xbc, 0x43, 0xc2, 0x3c, 0x36, 0xa2, 0xa1, 0x4c, 0x00, 0xec, 0x7f, 0xb0,
|
||||
0x88, 0x9e, 0x6c, 0x70, 0xc3, 0xeb, 0x8c, 0xe6, 0x3b, 0x9c, 0xf0, 0x82, 0xb9, 0xd7, 0xd0, 0xb2,
|
||||
0xcc, 0x90, 0x38, 0x92, 0x61, 0x38, 0x15, 0x78, 0x80, 0xf1, 0xbc, 0xa0, 0x90, 0x56, 0x13, 0x7a,
|
||||
0x05, 0xec, 0xbe, 0x0c, 0x6a, 0xd5, 0x36, 0xec, 0xfe, 0x01, 0x68, 0xc7, 0x40, 0xda, 0xd0, 0xee,
|
||||
0x7d, 0x41, 0xbb, 0x77, 0x25, 0xed, 0xec, 0x56, 0x58, 0x05, 0xaa, 0xe4, 0x94, 0x44, 0x47, 0x22,
|
||||
0x17, 0xb8, 0x5e, 0x13, 0xbc, 0x57, 0x1f, 0xc1, 0xc1, 0x40, 0xb3, 0x23, 0xd8, 0x74, 0x48, 0x62,
|
||||
0x0e, 0x5e, 0x13, 0xdb, 0x84, 0x0a, 0x91, 0xef, 0x62, 0x9b, 0xf9, 0x9c, 0x09, 0xdf, 0x7b, 0x24,
|
||||
0x94, 0x7c, 0xe8, 0xe7, 0xd9, 0xd0, 0x2a, 0xc3, 0xd6, 0x43, 0xd1, 0xba, 0xa2, 0xaa, 0x16, 0xcd,
|
||||
0x0e, 0x60, 0xd1, 0xfd, 0x31, 0xc0, 0x04, 0x3f, 0x25, 0x54, 0x3a, 0xff, 0xcc, 0xe6, 0x45, 0x7c,
|
||||
0x1c, 0x23, 0x83, 0xfb, 0x70, 0x90, 0xed, 0x5d, 0x21, 0x63, 0xd8, 0xcf, 0xa0, 0xa6, 0x28, 0x22,
|
||||
0x7a, 0x51, 0xcc, 0x04, 0x62, 0xc5, 0x41, 0xb0, 0xa2, 0xce, 0x23, 0xc3, 0x17, 0xe7, 0x96, 0x49,
|
||||
0x02, 0xe8, 0x81, 0x95, 0x63, 0xd8, 0xfd, 0x95, 0x83, 0x96, 0x75, 0x65, 0x6a, 0x2f, 0xce, 0x0a,
|
||||
0xe4, 0x7b, 0x00, 0xe4, 0x3b, 0x3b, 0x45, 0x8f, 0xcf, 0x83, 0x45, 0xfe, 0x53, 0xd6, 0x93, 0x47,
|
||||
0x80, 0xf2, 0xdf, 0x5b, 0x42, 0xab, 0x0d, 0x20, 0xb6, 0x20, 0x36, 0x9c, 0xee, 0xa8, 0x6d, 0xdd,
|
||||
0xfb, 0x8a, 0x93, 0xee, 0x0d, 0xb4, 0x44, 0x46, 0x23, 0x4d, 0x90, 0xb3, 0xc1, 0x2a, 0x60, 0xfb,
|
||||
0x92, 0x88, 0x94, 0xfc, 0x28, 0x20, 0x84, 0x52, 0xac, 0x86, 0xb1, 0x9f, 0x41, 0x04, 0xde, 0x41,
|
||||
0xcb, 0x61, 0x96, 0x4a, 0xfe, 0x0b, 0xa6, 0x2c, 0x06, 0x29, 0x88, 0xbe, 0x29, 0xcc, 0x6e, 0x58,
|
||||
0x8e, 0x7a, 0x7a, 0x87, 0xae, 0x58, 0x36, 0x8c, 0x21, 0x04, 0x1d, 0x0e, 0x24, 0xf5, 0x13, 0xc6,
|
||||
0xb2, 0x30, 0x1e, 0x37, 0x21, 0xb3, 0x82, 0x65, 0xa2, 0x24, 0xf7, 0xde, 0xa4, 0x21, 0x17, 0x4c,
|
||||
0x51, 0xc7, 0xee, 0x91, 0x10, 0xca, 0x06, 0x30, 0xf5, 0x47, 0xf3, 0x53, 0xe0, 0x35, 0x80, 0xf8,
|
||||
0x2d, 0x71, 0xba, 0x69, 0xae, 0x87, 0x9a, 0xa7, 0xbd, 0x4f, 0x6d, 0xf5, 0xa6, 0x24, 0x1c, 0x18,
|
||||
0xee, 0x1b, 0x9f, 0x97, 0x0c, 0x20, 0x68, 0x49, 0xac, 0x31, 0x08, 0xbf, 0x28, 0x4c, 0x17, 0xf0,
|
||||
0x23, 0x33, 0x32, 0xd8, 0x04, 0x04, 0x58, 0x20, 0x88, 0x53, 0xc8, 0x00, 0x92, 0xa8, 0x6c, 0x92,
|
||||
0x61, 0x84, 0xbe, 0x20, 0x35, 0x99, 0xaa, 0xa1, 0x6d, 0x60, 0xf7, 0x13, 0xa7, 0x4c, 0xe3, 0x25,
|
||||
0x99, 0xc6, 0x7f, 0x16, 0x49, 0xf9, 0x27, 0x67, 0xf5, 0x95, 0x91, 0x30, 0x40, 0x92, 0x35, 0x93,
|
||||
0xbf, 0xe2, 0x0c, 0x43, 0xb2, 0x4f, 0xab, 0x65, 0x47, 0xb8, 0xae, 0x47, 0x07, 0x04, 0x4a, 0x3a,
|
||||
0x98, 0x81, 0x44, 0x84, 0xa2, 0x62, 0x23, 0xb4, 0x5e, 0x66, 0xef, 0xb0, 0x80, 0xbd, 0x3d, 0x3a,
|
||||
0x66, 0x1e, 0xf2, 0x33, 0xaa, 0x60, 0xeb, 0x51, 0x91, 0xb6, 0x24, 0x8a, 0x54, 0xf0, 0xaa, 0x1b,
|
||||
0x8d, 0x7c, 0x3f, 0x87, 0x76, 0x1c, 0xb1, 0xb2, 0xab, 0xc9, 0x74, 0xf6, 0x63, 0xb4, 0x36, 0x03,
|
||||
0x29, 0xd9, 0x08, 0xbe, 0x52, 0xf7, 0xeb, 0xe8, 0xb4, 0x56, 0xab, 0x99, 0xb9, 0x18, 0xac, 0xc1,
|
||||
0x91, 0x2f, 0xed, 0x96, 0xf6, 0xe0, 0xb0, 0x3a, 0x7e, 0x8a, 0xa1, 0x91, 0x75, 0x98, 0xff, 0xee,
|
||||
0x42, 0x63, 0x02, 0xdc, 0xa1, 0xa2, 0x9c, 0x8c, 0x27, 0xc0, 0xd5, 0x49, 0x53, 0xe7, 0xc1, 0x54,
|
||||
0xbb, 0x6e, 0x4a, 0xa4, 0xa5, 0x14, 0xc7, 0xee, 0x75, 0x93, 0x31, 0x0b, 0x32, 0x63, 0x2e, 0xc3,
|
||||
0xe6, 0xa7, 0xcb, 0x8c, 0x69, 0x48, 0x67, 0x2d, 0xf7, 0x76, 0x19, 0xc5, 0x96, 0x8c, 0x62, 0x0c,
|
||||
0x92, 0xf4, 0x7f, 0x11, 0x43, 0xec, 0x5f, 0x69, 0x74, 0xfe, 0xb8, 0x43, 0x94, 0xf3, 0xfd, 0xbf,
|
||||
0x34, 0xd7, 0x8f, 0xd7, 0x47, 0x11, 0xf9, 0x2f, 0xdc, 0x57, 0x48, 0xf1, 0xf9, 0xdd, 0x67, 0xe4,
|
||||
0x7e, 0x39, 0x7f, 0xba, 0xcb, 0x42, 0x5b, 0x71, 0xb0, 0x1c, 0xf3, 0xe8, 0x61, 0x63, 0xf6, 0x43,
|
||||
0xaf, 0x7a, 0xb9, 0xef, 0xc1, 0x2c, 0x3a, 0xee, 0x57, 0xb5, 0x59, 0x8e, 0x6d, 0x62, 0x15, 0x9c,
|
||||
0x1b, 0x0e, 0xa0, 0x21, 0x43, 0x03, 0x76, 0xff, 0xe1, 0xcc, 0x97, 0xfc, 0x1f, 0x8a, 0xb4, 0xfd,
|
||||
0x6d, 0x35, 0x6d, 0xcb, 0x21, 0x45, 0xa5, 0xd7, 0xe1, 0x20, 0x63, 0x54, 0xd7, 0x04, 0x33, 0x29,
|
||||
0x2a, 0x07, 0x48, 0x1f, 0xe6, 0xb4, 0x9f, 0x88, 0x62, 0x58, 0x8e, 0x6e, 0xba, 0x19, 0xbf, 0xdc,
|
||||
0xb7, 0x1c, 0x60, 0x1e, 0x81, 0xb1, 0x54, 0x40, 0x25, 0x89, 0xea, 0xc6, 0x75, 0x32, 0xc8, 0x53,
|
||||
0x1d, 0x59, 0xed, 0x36, 0x95, 0x63, 0x5e, 0xaf, 0x34, 0xa7, 0xfe, 0x6f, 0x2b, 0x4d, 0x33, 0xd9,
|
||||
0xc7, 0xe9, 0xab, 0xc9, 0xfe, 0xfb, 0x45, 0xb4, 0xde, 0xb0, 0xfb, 0xa5, 0xb4, 0x18, 0xd2, 0xbc,
|
||||
0x14, 0x60, 0x96, 0xf0, 0x3f, 0xa8, 0x37, 0x4c, 0x35, 0xf5, 0x8d, 0x93, 0xdd, 0x38, 0x24, 0xa2,
|
||||
0x9c, 0xc4, 0x09, 0x93, 0x1d, 0xd3, 0x33, 0x3e, 0xc4, 0x0d, 0x4c, 0x13, 0xe7, 0xe6, 0x95, 0x19,
|
||||
0x4b, 0x5b, 0xb5, 0x61, 0xca, 0x29, 0x2f, 0xf2, 0x54, 0x90, 0xee, 0x17, 0x0e, 0x7a, 0x22, 0x4e,
|
||||
0xc3, 0x04, 0x6e, 0x0e, 0x5d, 0x90, 0xea, 0x0a, 0x89, 0xae, 0xb9, 0x1d, 0xc9, 0xdc, 0x58, 0x09,
|
||||
0xf6, 0x01, 0xd4, 0x5e, 0x25, 0x66, 0x41, 0x96, 0x25, 0x14, 0x7a, 0x2e, 0xc0, 0xa1, 0xf9, 0x10,
|
||||
0x5a, 0x0f, 0x78, 0x16, 0xae, 0x2f, 0x60, 0x30, 0x97, 0x56, 0xb5, 0xb8, 0x80, 0x59, 0x89, 0x00,
|
||||
0x1b, 0x64, 0x45, 0x12, 0xa9, 0x40, 0x49, 0x7b, 0x11, 0xf6, 0xee, 0xd0, 0x3e, 0x29, 0x12, 0x2e,
|
||||
0x67, 0xe8, 0x3e, 0x49, 0xe0, 0x0a, 0xe6, 0xfe, 0xae, 0x0a, 0xa8, 0xe0, 0x83, 0x1a, 0x22, 0x39,
|
||||
0x15, 0xad, 0x04, 0x6f, 0x01, 0x20, 0x7e, 0x42, 0x40, 0xe2, 0xb7, 0xd0, 0x0b, 0x77, 0x3c, 0x11,
|
||||
0x1e, 0xa0, 0x83, 0x24, 0xd1, 0x8c, 0xe8, 0x02, 0xb4, 0x62, 0xe6, 0x67, 0xd9, 0x3c, 0x4f, 0x07,
|
||||
0x5f, 0x06, 0x2c, 0xeb, 0x15, 0x2c, 0xf7, 0xcc, 0x78, 0x0d, 0x42, 0x66, 0xda, 0xaf, 0x5c, 0xd9,
|
||||
0xa0, 0x7a, 0x7e, 0xb2, 0x88, 0x3a, 0x0d, 0x1c, 0xd1, 0xd4, 0x80, 0x8a, 0x36, 0x51, 0x02, 0x9f,
|
||||
0x06, 0x1b, 0x4f, 0xd5, 0x59, 0xa1, 0x8e, 0x12, 0xb3, 0xb2, 0xaf, 0x6f, 0x54, 0x2b, 0xe1, 0x62,
|
||||
0x70, 0x01, 0x64, 0x3a, 0x65, 0x25, 0x34, 0x47, 0xb7, 0xdb, 0x2b, 0x03, 0x57, 0xeb, 0x33, 0x19,
|
||||
0xb8, 0x1e, 0x98, 0x02, 0x3c, 0xf3, 0xa4, 0xfb, 0x0c, 0x20, 0xf4, 0xc5, 0x91, 0xc2, 0x22, 0x87,
|
||||
0x4b, 0x11, 0xd7, 0xc5, 0x74, 0xe2, 0x68, 0x5f, 0x43, 0x9f, 0xe3, 0xf1, 0x90, 0x76, 0x75, 0x27,
|
||||
0x97, 0x81, 0x3a, 0x1b, 0x5c, 0x02, 0xe9, 0x8b, 0x6a, 0x5a, 0x1b, 0x8e, 0x81, 0x85, 0x8b, 0x90,
|
||||
0xde, 0x8b, 0xdd, 0x6f, 0x68, 0x61, 0x5d, 0x27, 0x65, 0xe1, 0x3a, 0x1b, 0x3c, 0x0b, 0xc2, 0xcf,
|
||||
0x08, 0xe1, 0x84, 0x30, 0xde, 0xac, 0x41, 0x0b, 0x60, 0x37, 0x42, 0x67, 0x24, 0x67, 0x99, 0x2c,
|
||||
0xd3, 0xed, 0xe5, 0x99, 0x8a, 0xf9, 0x55, 0x30, 0x70, 0x45, 0x86, 0x58, 0xfe, 0x36, 0x23, 0x5c,
|
||||
0x59, 0x86, 0xc7, 0x7b, 0xf0, 0x43, 0x07, 0x6d, 0xcc, 0x58, 0x69, 0xf4, 0x14, 0xf4, 0x1a, 0x5a,
|
||||
0x31, 0x85, 0x00, 0x78, 0x25, 0x40, 0x9d, 0xc3, 0xd3, 0x79, 0x18, 0xf8, 0x80, 0xe8, 0x42, 0xd9,
|
||||
0x51, 0x1a, 0xca, 0x09, 0xf6, 0x3f, 0x6d, 0x35, 0x96, 0xbb, 0xbb, 0x94, 0x6b, 0x2d, 0x77, 0x54,
|
||||
0xc5, 0xb2, 0xe5, 0xee, 0xd5, 0x09, 0x0c, 0x2f, 0xe2, 0x79, 0x14, 0xe0, 0xfb, 0xe6, 0xf2, 0x6b,
|
||||
0xd2, 0x05, 0xd7, 0x07, 0x80, 0xa7, 0x00, 0xf5, 0xb9, 0xa9, 0xb4, 0x87, 0x09, 0xfb, 0x46, 0x25,
|
||||
0x83, 0xd5, 0x4d, 0x5b, 0x12, 0xe3, 0xd8, 0xb4, 0xed, 0xfc, 0xdb, 0x41, 0x9f, 0x9f, 0xb0, 0x7e,
|
||||
0x73, 0x32, 0x59, 0x2d, 0xcf, 0x6a, 0x25, 0x7c, 0x8f, 0xd6, 0xcb, 0xf7, 0x31, 0x75, 0xae, 0xf5,
|
||||
0xd9, 0xd6, 0x39, 0xff, 0x9d, 0x46, 0x72, 0x35, 0x85, 0x45, 0x93, 0x6b, 0x7b, 0x3e, 0x72, 0xd9,
|
||||
0x30, 0x19, 0x9f, 0x8c, 0x8d, 0x4f, 0xfe, 0x1f, 0x1d, 0xd4, 0x1e, 0x17, 0xdf, 0xa1, 0x5c, 0x5c,
|
||||
0xf3, 0xd9, 0xc9, 0x6f, 0x99, 0x3b, 0xe8, 0x71, 0xc8, 0xaa, 0xec, 0xb0, 0x5b, 0x7b, 0x25, 0x94,
|
||||
0xd4, 0x59, 0x09, 0xae, 0x83, 0x9a, 0xcd, 0x6f, 0x57, 0xdc, 0x29, 0x1d, 0x26, 0xf7, 0x33, 0xaf,
|
||||
0x2a, 0x50, 0x16, 0x5f, 0x30, 0x88, 0xfd, 0x03, 0xf4, 0xfc, 0xd4, 0x01, 0xa1, 0x09, 0xbe, 0x4d,
|
||||
0x86, 0x17, 0x50, 0x47, 0x94, 0xd3, 0x1a, 0x98, 0x2e, 0xd3, 0xbb, 0xb4, 0x17, 0x9f, 0xc0, 0xd3,
|
||||
0xbc, 0xe0, 0xdf, 0x44, 0xd7, 0xe7, 0xb5, 0xab, 0xa7, 0x94, 0xbf, 0x3b, 0xe8, 0x66, 0x83, 0xe8,
|
||||
0x2b, 0x69, 0xed, 0xb7, 0x25, 0x7b, 0xb7, 0xfa, 0x19, 0x22, 0x3d, 0xf6, 0x0a, 0xf4, 0x02, 0xf8,
|
||||
0xed, 0x96, 0x99, 0xe3, 0x2a, 0x95, 0x42, 0x8c, 0x9f, 0x35, 0xbf, 0xc1, 0xfc, 0x21, 0xde, 0x38,
|
||||
0xcb, 0xf7, 0x2b, 0x19, 0x93, 0xaf, 0xd6, 0x13, 0xf8, 0x0a, 0x68, 0xbb, 0x5c, 0x09, 0xa6, 0x78,
|
||||
0xcf, 0x2b, 0x25, 0xea, 0xaf, 0xbb, 0xfe, 0x5f, 0x5b, 0xe8, 0xb9, 0xc6, 0x83, 0x94, 0x95, 0x75,
|
||||
0x4b, 0x8d, 0xd7, 0xf5, 0x33, 0xbc, 0x38, 0x7e, 0x86, 0x0d, 0xb0, 0xba, 0x36, 0xe5, 0x0c, 0xcc,
|
||||
0x16, 0x65, 0x3b, 0xaa, 0x3f, 0xa8, 0xa6, 0xbd, 0xea, 0xb7, 0x2f, 0x81, 0x86, 0xdb, 0x8d, 0x17,
|
||||
0x4a, 0xdb, 0x24, 0xf4, 0x0b, 0x6f, 0xed, 0xe9, 0xab, 0x60, 0xaa, 0xfd, 0x18, 0xcd, 0xf7, 0x8c,
|
||||
0x37, 0x5a, 0xd2, 0x1b, 0xd2, 0xb7, 0x53, 0xef, 0x33, 0xd3, 0x34, 0x5a, 0x6d, 0x6f, 0xa0, 0x53,
|
||||
0xba, 0x0b, 0xa9, 0x26, 0x7b, 0x5c, 0x17, 0x92, 0x1d, 0xb6, 0x52, 0x70, 0xb6, 0xe1, 0x7a, 0x53,
|
||||
0x36, 0x24, 0x3b, 0x13, 0xbb, 0x77, 0xd1, 0x72, 0x4e, 0x87, 0xd9, 0x81, 0x6e, 0xae, 0x3a, 0x77,
|
||||
0x2a, 0x82, 0x42, 0xa7, 0x37, 0x20, 0x62, 0xee, 0x86, 0x6b, 0x85, 0xde, 0x5b, 0x3e, 0xc9, 0x99,
|
||||
0x34, 0xdf, 0xfc, 0x68, 0x05, 0x3d, 0x36, 0x81, 0x48, 0xbc, 0xd1, 0x3e, 0x26, 0x34, 0xd4, 0xae,
|
||||
0xf3, 0xee, 0x1a, 0x9e, 0xf5, 0x19, 0xaa, 0xf3, 0x2c, 0x9e, 0xf9, 0x71, 0xc0, 0xbf, 0x08, 0xd0,
|
||||
0x9f, 0x54, 0x6b, 0x4c, 0x3e, 0x1f, 0xb2, 0xa3, 0x34, 0x54, 0x73, 0x8e, 0x86, 0x69, 0xf1, 0xd4,
|
||||
0x6e, 0xb8, 0xcd, 0x78, 0x1a, 0x5f, 0x05, 0x9a, 0xf1, 0x4c, 0xb9, 0x2f, 0x4b, 0x3c, 0x6a, 0xed,
|
||||
0x38, 0x3c, 0xb5, 0x4b, 0x48, 0x33, 0x9e, 0xc6, 0x6b, 0x76, 0x33, 0x9e, 0x29, 0x57, 0x1a, 0x89,
|
||||
0x47, 0xad, 0x4d, 0xc3, 0xf3, 0x3e, 0xe0, 0x99, 0x18, 0x3c, 0xdc, 0x0d, 0x3c, 0xcf, 0x4d, 0xa8,
|
||||
0x83, 0xf1, 0x5c, 0xe3, 0x8c, 0x2f, 0x1f, 0x9f, 0xed, 0x3a, 0x40, 0x1b, 0x1f, 0x4f, 0xdc, 0x0f,
|
||||
0x01, 0xd6, 0x44, 0xcb, 0x6a, 0x86, 0x35, 0x75, 0xe0, 0x68, 0x86, 0x35, 0xbd, 0x11, 0xfa, 0x72,
|
||||
0x52, 0x84, 0x75, 0xfd, 0xc7, 0x07, 0xdb, 0xf1, 0x01, 0x9f, 0x7d, 0x25, 0x37, 0x7e, 0xfb, 0xd4,
|
||||
0x41, 0x9d, 0xe9, 0xf5, 0xda, 0xbd, 0x8e, 0x4f, 0xd4, 0x57, 0x3a, 0x37, 0xf0, 0x09, 0xfb, 0xc2,
|
||||
0x5d, 0xc0, 0xbe, 0x65, 0x42, 0x6d, 0x06, 0x0b, 0x52, 0xeb, 0x83, 0x32, 0xee, 0xf5, 0xa2, 0x3e,
|
||||
0x76, 0x38, 0xa8, 0x54, 0x9d, 0x57, 0x41, 0xd1, 0xbd, 0xdb, 0x70, 0xce, 0xfc, 0x20, 0x0e, 0xd5,
|
||||
0x3c, 0xd2, 0x2f, 0xd2, 0x50, 0xed, 0xcf, 0x69, 0x62, 0x5e, 0x20, 0xe4, 0x90, 0x22, 0xf8, 0x94,
|
||||
0x67, 0x69, 0x56, 0x34, 0x68, 0x97, 0x2a, 0xa0, 0xe2, 0x6c, 0xfe, 0x73, 0x01, 0x7d, 0x71, 0xe2,
|
||||
0x50, 0x5b, 0xf2, 0x4f, 0x75, 0xee, 0x07, 0x30, 0x2b, 0x4c, 0xeb, 0x5d, 0xee, 0x2d, 0x7c, 0xd2,
|
||||
0x4e, 0xd7, 0x39, 0x83, 0xb7, 0x33, 0xeb, 0x9b, 0x6b, 0x70, 0xa4, 0x0d, 0xbd, 0x91, 0xa9, 0xb6,
|
||||
0x64, 0x9b, 0x44, 0x36, 0x12, 0x23, 0x22, 0x1f, 0xeb, 0x76, 0x22, 0x4d, 0x1f, 0x6f, 0x68, 0x45,
|
||||
0xee, 0x57, 0xf0, 0x09, 0x7a, 0x56, 0x1d, 0xcd, 0x73, 0x80, 0xe6, 0x6a, 0x75, 0xb9, 0x8e, 0xa8,
|
||||
0x6c, 0x05, 0x83, 0xb2, 0xb9, 0x74, 0xc4, 0x4b, 0xda, 0x17, 0x94, 0xcf, 0xea, 0x48, 0xff, 0xf6,
|
||||
0x71, 0x7b, 0x21, 0x68, 0xfd, 0xd0, 0x71, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x81, 0x5e,
|
||||
0xd6, 0x51, 0x1d, 0x00, 0x00,
|
||||
}
|
163
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/offline.pb.go
generated
vendored
163
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/offline.pb.go
generated
vendored
@ -1,163 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_offline.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type COffline_GetOfflineLogonTicket_Request struct {
|
||||
Priority *uint32 `protobuf:"varint,1,opt,name=priority" json:"priority,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *COffline_GetOfflineLogonTicket_Request) Reset() {
|
||||
*m = COffline_GetOfflineLogonTicket_Request{}
|
||||
}
|
||||
func (m *COffline_GetOfflineLogonTicket_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*COffline_GetOfflineLogonTicket_Request) ProtoMessage() {}
|
||||
func (*COffline_GetOfflineLogonTicket_Request) Descriptor() ([]byte, []int) {
|
||||
return offline_fileDescriptor0, []int{0}
|
||||
}
|
||||
|
||||
func (m *COffline_GetOfflineLogonTicket_Request) GetPriority() uint32 {
|
||||
if m != nil && m.Priority != nil {
|
||||
return *m.Priority
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type COffline_GetOfflineLogonTicket_Response struct {
|
||||
SerializedTicket []byte `protobuf:"bytes,1,opt,name=serialized_ticket" json:"serialized_ticket,omitempty"`
|
||||
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *COffline_GetOfflineLogonTicket_Response) Reset() {
|
||||
*m = COffline_GetOfflineLogonTicket_Response{}
|
||||
}
|
||||
func (m *COffline_GetOfflineLogonTicket_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*COffline_GetOfflineLogonTicket_Response) ProtoMessage() {}
|
||||
func (*COffline_GetOfflineLogonTicket_Response) Descriptor() ([]byte, []int) {
|
||||
return offline_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *COffline_GetOfflineLogonTicket_Response) GetSerializedTicket() []byte {
|
||||
if m != nil {
|
||||
return m.SerializedTicket
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *COffline_GetOfflineLogonTicket_Response) GetSignature() []byte {
|
||||
if m != nil {
|
||||
return m.Signature
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type COffline_GetUnsignedOfflineLogonTicket_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *COffline_GetUnsignedOfflineLogonTicket_Request) Reset() {
|
||||
*m = COffline_GetUnsignedOfflineLogonTicket_Request{}
|
||||
}
|
||||
func (m *COffline_GetUnsignedOfflineLogonTicket_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*COffline_GetUnsignedOfflineLogonTicket_Request) ProtoMessage() {}
|
||||
func (*COffline_GetUnsignedOfflineLogonTicket_Request) Descriptor() ([]byte, []int) {
|
||||
return offline_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
type COffline_OfflineLogonTicket struct {
|
||||
Accountid *uint32 `protobuf:"varint,1,opt,name=accountid" json:"accountid,omitempty"`
|
||||
Rtime32CreationTime *uint32 `protobuf:"fixed32,2,opt,name=rtime32_creation_time" json:"rtime32_creation_time,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *COffline_OfflineLogonTicket) Reset() { *m = COffline_OfflineLogonTicket{} }
|
||||
func (m *COffline_OfflineLogonTicket) String() string { return proto.CompactTextString(m) }
|
||||
func (*COffline_OfflineLogonTicket) ProtoMessage() {}
|
||||
func (*COffline_OfflineLogonTicket) Descriptor() ([]byte, []int) { return offline_fileDescriptor0, []int{3} }
|
||||
|
||||
func (m *COffline_OfflineLogonTicket) GetAccountid() uint32 {
|
||||
if m != nil && m.Accountid != nil {
|
||||
return *m.Accountid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *COffline_OfflineLogonTicket) GetRtime32CreationTime() uint32 {
|
||||
if m != nil && m.Rtime32CreationTime != nil {
|
||||
return *m.Rtime32CreationTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type COffline_GetUnsignedOfflineLogonTicket_Response struct {
|
||||
Ticket *COffline_OfflineLogonTicket `protobuf:"bytes,1,opt,name=ticket" json:"ticket,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *COffline_GetUnsignedOfflineLogonTicket_Response) Reset() {
|
||||
*m = COffline_GetUnsignedOfflineLogonTicket_Response{}
|
||||
}
|
||||
func (m *COffline_GetUnsignedOfflineLogonTicket_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*COffline_GetUnsignedOfflineLogonTicket_Response) ProtoMessage() {}
|
||||
func (*COffline_GetUnsignedOfflineLogonTicket_Response) Descriptor() ([]byte, []int) {
|
||||
return offline_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *COffline_GetUnsignedOfflineLogonTicket_Response) GetTicket() *COffline_OfflineLogonTicket {
|
||||
if m != nil {
|
||||
return m.Ticket
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*COffline_GetOfflineLogonTicket_Request)(nil), "COffline_GetOfflineLogonTicket_Request")
|
||||
proto.RegisterType((*COffline_GetOfflineLogonTicket_Response)(nil), "COffline_GetOfflineLogonTicket_Response")
|
||||
proto.RegisterType((*COffline_GetUnsignedOfflineLogonTicket_Request)(nil), "COffline_GetUnsignedOfflineLogonTicket_Request")
|
||||
proto.RegisterType((*COffline_OfflineLogonTicket)(nil), "COffline_OfflineLogonTicket")
|
||||
proto.RegisterType((*COffline_GetUnsignedOfflineLogonTicket_Response)(nil), "COffline_GetUnsignedOfflineLogonTicket_Response")
|
||||
}
|
||||
|
||||
var offline_fileDescriptor0 = []byte{
|
||||
// 377 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x52, 0xcd, 0x4a, 0xf3, 0x40,
|
||||
0x14, 0x25, 0x5f, 0xe1, 0xab, 0x8e, 0x0a, 0x76, 0xa0, 0x10, 0x63, 0x0b, 0x43, 0x16, 0xb6, 0x8b,
|
||||
0x92, 0x96, 0xba, 0x52, 0x70, 0xa3, 0x88, 0x08, 0x42, 0x41, 0x14, 0x97, 0x61, 0x4c, 0x6e, 0xe2,
|
||||
0x60, 0x3a, 0x53, 0x67, 0x6e, 0x04, 0x5d, 0x89, 0xaf, 0xe2, 0x33, 0xf4, 0x01, 0x7c, 0x33, 0xf3,
|
||||
0x87, 0x56, 0xac, 0xb5, 0xdd, 0x25, 0x37, 0xe7, 0xdc, 0x9c, 0x9f, 0x4b, 0x3a, 0x06, 0x81, 0x8f,
|
||||
0xc7, 0x60, 0x0c, 0x8f, 0xc1, 0xf8, 0x2a, 0x8a, 0x12, 0x21, 0xc1, 0x2b, 0xa6, 0x41, 0x22, 0x40,
|
||||
0xa2, 0x37, 0xd1, 0x0a, 0x95, 0xd3, 0xfb, 0x0e, 0x4c, 0xa5, 0x88, 0x04, 0x84, 0xfe, 0x2d, 0x37,
|
||||
0x73, 0xd0, 0xee, 0x21, 0xd9, 0x3b, 0x19, 0x95, 0xbb, 0xfc, 0x33, 0xc0, 0xea, 0xf1, 0x42, 0xc5,
|
||||
0x4a, 0x5e, 0x89, 0xe0, 0x1e, 0xd0, 0xbf, 0x84, 0x87, 0x14, 0x0c, 0xd2, 0x6d, 0xb2, 0x36, 0xd1,
|
||||
0x42, 0x69, 0x81, 0x4f, 0xb6, 0xc5, 0xac, 0xee, 0x96, 0x7b, 0x43, 0x3a, 0x7f, 0x72, 0xcd, 0x44,
|
||||
0x49, 0x03, 0x74, 0x87, 0x34, 0x0c, 0x68, 0xc1, 0x13, 0xf1, 0x9c, 0x69, 0xc1, 0xe2, 0x6b, 0xb1,
|
||||
0x65, 0x93, 0x36, 0xc8, 0xba, 0x11, 0xb1, 0xe4, 0x98, 0x6a, 0xb0, 0xff, 0xe5, 0x23, 0x77, 0x40,
|
||||
0xbc, 0xd9, 0xc5, 0xd7, 0x32, 0x07, 0x40, 0xf8, 0xbb, 0x38, 0x77, 0x44, 0x76, 0x3f, 0x19, 0x3f,
|
||||
0x61, 0xf9, 0x3f, 0x78, 0x10, 0xa8, 0x54, 0xa2, 0x08, 0x4b, 0xf1, 0xb4, 0x4d, 0x9a, 0x1a, 0xc5,
|
||||
0x18, 0xf6, 0x87, 0x7e, 0xa0, 0x81, 0xa3, 0x50, 0xd2, 0xcf, 0xdf, 0x0b, 0x09, 0x75, 0xd7, 0x27,
|
||||
0xfd, 0xa5, 0x25, 0x54, 0x1e, 0x7b, 0xe4, 0xff, 0x8c, 0xb1, 0x8d, 0x61, 0xcb, 0x5b, 0x20, 0x69,
|
||||
0xf8, 0x56, 0x23, 0xf5, 0x6a, 0x4c, 0xa7, 0x16, 0x69, 0xce, 0x0d, 0x90, 0x76, 0xbc, 0xe5, 0xda,
|
||||
0x71, 0xba, 0xde, 0x92, 0x55, 0xb8, 0xe7, 0xaf, 0x53, 0xfb, 0x34, 0xc3, 0x30, 0xce, 0xbe, 0x2a,
|
||||
0x61, 0x5c, 0x86, 0xac, 0xb4, 0xc8, 0xaa, 0xd3, 0x62, 0x49, 0xce, 0x66, 0xa5, 0x25, 0x16, 0x29,
|
||||
0xcd, 0xf0, 0x0e, 0x58, 0x90, 0x6a, 0x9d, 0x5d, 0x0f, 0x4b, 0x33, 0x2e, 0x7d, 0xb7, 0x48, 0x7b,
|
||||
0x61, 0x38, 0xb4, 0xbf, 0x62, 0x91, 0xce, 0xc0, 0x5b, 0x31, 0x76, 0xf7, 0x28, 0xf3, 0x73, 0x50,
|
||||
0xf8, 0x91, 0x2c, 0x95, 0xab, 0x7a, 0x70, 0x5a, 0x19, 0xdd, 0xae, 0xf6, 0x67, 0x81, 0x20, 0x0a,
|
||||
0x19, 0x9b, 0x3c, 0x99, 0x47, 0x11, 0xc0, 0x71, 0xed, 0xc5, 0xb2, 0x3e, 0x02, 0x00, 0x00, 0xff,
|
||||
0xff, 0x90, 0xd3, 0xb5, 0xf7, 0x7b, 0x03, 0x00, 0x00,
|
||||
}
|
791
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/parental.pb.go
generated
vendored
791
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/parental.pb.go
generated
vendored
@ -1,791 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_parental.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type ParentalApp struct {
|
||||
Appid *uint32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
IsAllowed *bool `protobuf:"varint,2,opt,name=is_allowed" json:"is_allowed,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ParentalApp) Reset() { *m = ParentalApp{} }
|
||||
func (m *ParentalApp) String() string { return proto.CompactTextString(m) }
|
||||
func (*ParentalApp) ProtoMessage() {}
|
||||
func (*ParentalApp) Descriptor() ([]byte, []int) { return parental_fileDescriptor0, []int{0} }
|
||||
|
||||
func (m *ParentalApp) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ParentalApp) GetIsAllowed() bool {
|
||||
if m != nil && m.IsAllowed != nil {
|
||||
return *m.IsAllowed
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type ParentalSettings struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,1,opt,name=steamid" json:"steamid,omitempty"`
|
||||
ApplistBaseId *uint32 `protobuf:"varint,2,opt,name=applist_base_id" json:"applist_base_id,omitempty"`
|
||||
ApplistBaseDescription *string `protobuf:"bytes,3,opt,name=applist_base_description" json:"applist_base_description,omitempty"`
|
||||
ApplistBase []*ParentalApp `protobuf:"bytes,4,rep,name=applist_base" json:"applist_base,omitempty"`
|
||||
ApplistCustom []*ParentalApp `protobuf:"bytes,5,rep,name=applist_custom" json:"applist_custom,omitempty"`
|
||||
Passwordhashtype *uint32 `protobuf:"varint,6,opt,name=passwordhashtype" json:"passwordhashtype,omitempty"`
|
||||
Salt []byte `protobuf:"bytes,7,opt,name=salt" json:"salt,omitempty"`
|
||||
Passwordhash []byte `protobuf:"bytes,8,opt,name=passwordhash" json:"passwordhash,omitempty"`
|
||||
IsEnabled *bool `protobuf:"varint,9,opt,name=is_enabled" json:"is_enabled,omitempty"`
|
||||
EnabledFeatures *uint32 `protobuf:"varint,10,opt,name=enabled_features" json:"enabled_features,omitempty"`
|
||||
RecoveryEmail *string `protobuf:"bytes,11,opt,name=recovery_email" json:"recovery_email,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) Reset() { *m = ParentalSettings{} }
|
||||
func (m *ParentalSettings) String() string { return proto.CompactTextString(m) }
|
||||
func (*ParentalSettings) ProtoMessage() {}
|
||||
func (*ParentalSettings) Descriptor() ([]byte, []int) { return parental_fileDescriptor0, []int{1} }
|
||||
|
||||
func (m *ParentalSettings) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetApplistBaseId() uint32 {
|
||||
if m != nil && m.ApplistBaseId != nil {
|
||||
return *m.ApplistBaseId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetApplistBaseDescription() string {
|
||||
if m != nil && m.ApplistBaseDescription != nil {
|
||||
return *m.ApplistBaseDescription
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetApplistBase() []*ParentalApp {
|
||||
if m != nil {
|
||||
return m.ApplistBase
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetApplistCustom() []*ParentalApp {
|
||||
if m != nil {
|
||||
return m.ApplistCustom
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetPasswordhashtype() uint32 {
|
||||
if m != nil && m.Passwordhashtype != nil {
|
||||
return *m.Passwordhashtype
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetSalt() []byte {
|
||||
if m != nil {
|
||||
return m.Salt
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetPasswordhash() []byte {
|
||||
if m != nil {
|
||||
return m.Passwordhash
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetIsEnabled() bool {
|
||||
if m != nil && m.IsEnabled != nil {
|
||||
return *m.IsEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetEnabledFeatures() uint32 {
|
||||
if m != nil && m.EnabledFeatures != nil {
|
||||
return *m.EnabledFeatures
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ParentalSettings) GetRecoveryEmail() string {
|
||||
if m != nil && m.RecoveryEmail != nil {
|
||||
return *m.RecoveryEmail
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_EnableParentalSettings_Request struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
Settings *ParentalSettings `protobuf:"bytes,2,opt,name=settings" json:"settings,omitempty"`
|
||||
Sessionid *string `protobuf:"bytes,3,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Enablecode *uint32 `protobuf:"varint,4,opt,name=enablecode" json:"enablecode,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,10,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) Reset() {
|
||||
*m = CParental_EnableParentalSettings_Request{}
|
||||
}
|
||||
func (m *CParental_EnableParentalSettings_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_EnableParentalSettings_Request) ProtoMessage() {}
|
||||
func (*CParental_EnableParentalSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) GetSettings() *ParentalSettings {
|
||||
if m != nil {
|
||||
return m.Settings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) GetSessionid() string {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) GetEnablecode() uint32 {
|
||||
if m != nil && m.Enablecode != nil {
|
||||
return *m.Enablecode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_EnableParentalSettings_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_EnableParentalSettings_Response) Reset() {
|
||||
*m = CParental_EnableParentalSettings_Response{}
|
||||
}
|
||||
func (m *CParental_EnableParentalSettings_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_EnableParentalSettings_Response) ProtoMessage() {}
|
||||
func (*CParental_EnableParentalSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
type CParental_DisableParentalSettings_Request struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,10,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_DisableParentalSettings_Request) Reset() {
|
||||
*m = CParental_DisableParentalSettings_Request{}
|
||||
}
|
||||
func (m *CParental_DisableParentalSettings_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_DisableParentalSettings_Request) ProtoMessage() {}
|
||||
func (*CParental_DisableParentalSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *CParental_DisableParentalSettings_Request) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_DisableParentalSettings_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_DisableParentalSettings_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_DisableParentalSettings_Response) Reset() {
|
||||
*m = CParental_DisableParentalSettings_Response{}
|
||||
}
|
||||
func (m *CParental_DisableParentalSettings_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CParental_DisableParentalSettings_Response) ProtoMessage() {}
|
||||
func (*CParental_DisableParentalSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{5}
|
||||
}
|
||||
|
||||
type CParental_GetParentalSettings_Request struct {
|
||||
Steamid *uint64 `protobuf:"fixed64,10,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_GetParentalSettings_Request) Reset() { *m = CParental_GetParentalSettings_Request{} }
|
||||
func (m *CParental_GetParentalSettings_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_GetParentalSettings_Request) ProtoMessage() {}
|
||||
func (*CParental_GetParentalSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
func (m *CParental_GetParentalSettings_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_GetParentalSettings_Response struct {
|
||||
Settings *ParentalSettings `protobuf:"bytes,1,opt,name=settings" json:"settings,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_GetParentalSettings_Response) Reset() {
|
||||
*m = CParental_GetParentalSettings_Response{}
|
||||
}
|
||||
func (m *CParental_GetParentalSettings_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_GetParentalSettings_Response) ProtoMessage() {}
|
||||
func (*CParental_GetParentalSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
func (m *CParental_GetParentalSettings_Response) GetSettings() *ParentalSettings {
|
||||
if m != nil {
|
||||
return m.Settings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CParental_GetSignedParentalSettings_Request struct {
|
||||
Priority *uint32 `protobuf:"varint,1,opt,name=priority" json:"priority,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_GetSignedParentalSettings_Request) Reset() {
|
||||
*m = CParental_GetSignedParentalSettings_Request{}
|
||||
}
|
||||
func (m *CParental_GetSignedParentalSettings_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CParental_GetSignedParentalSettings_Request) ProtoMessage() {}
|
||||
func (*CParental_GetSignedParentalSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{8}
|
||||
}
|
||||
|
||||
func (m *CParental_GetSignedParentalSettings_Request) GetPriority() uint32 {
|
||||
if m != nil && m.Priority != nil {
|
||||
return *m.Priority
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_GetSignedParentalSettings_Response struct {
|
||||
SerializedSettings []byte `protobuf:"bytes,1,opt,name=serialized_settings" json:"serialized_settings,omitempty"`
|
||||
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_GetSignedParentalSettings_Response) Reset() {
|
||||
*m = CParental_GetSignedParentalSettings_Response{}
|
||||
}
|
||||
func (m *CParental_GetSignedParentalSettings_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CParental_GetSignedParentalSettings_Response) ProtoMessage() {}
|
||||
func (*CParental_GetSignedParentalSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CParental_GetSignedParentalSettings_Response) GetSerializedSettings() []byte {
|
||||
if m != nil {
|
||||
return m.SerializedSettings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CParental_GetSignedParentalSettings_Response) GetSignature() []byte {
|
||||
if m != nil {
|
||||
return m.Signature
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CParental_SetParentalSettings_Request struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
Settings *ParentalSettings `protobuf:"bytes,2,opt,name=settings" json:"settings,omitempty"`
|
||||
NewPassword *string `protobuf:"bytes,3,opt,name=new_password" json:"new_password,omitempty"`
|
||||
Sessionid *string `protobuf:"bytes,4,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,10,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) Reset() { *m = CParental_SetParentalSettings_Request{} }
|
||||
func (m *CParental_SetParentalSettings_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_SetParentalSettings_Request) ProtoMessage() {}
|
||||
func (*CParental_SetParentalSettings_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{10}
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) GetSettings() *ParentalSettings {
|
||||
if m != nil {
|
||||
return m.Settings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) GetNewPassword() string {
|
||||
if m != nil && m.NewPassword != nil {
|
||||
return *m.NewPassword
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) GetSessionid() string {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_SetParentalSettings_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_SetParentalSettings_Response) Reset() {
|
||||
*m = CParental_SetParentalSettings_Response{}
|
||||
}
|
||||
func (m *CParental_SetParentalSettings_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_SetParentalSettings_Response) ProtoMessage() {}
|
||||
func (*CParental_SetParentalSettings_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{11}
|
||||
}
|
||||
|
||||
type CParental_ValidateToken_Request struct {
|
||||
UnlockToken *string `protobuf:"bytes,1,opt,name=unlock_token" json:"unlock_token,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ValidateToken_Request) Reset() { *m = CParental_ValidateToken_Request{} }
|
||||
func (m *CParental_ValidateToken_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ValidateToken_Request) ProtoMessage() {}
|
||||
func (*CParental_ValidateToken_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{12}
|
||||
}
|
||||
|
||||
func (m *CParental_ValidateToken_Request) GetUnlockToken() string {
|
||||
if m != nil && m.UnlockToken != nil {
|
||||
return *m.UnlockToken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_ValidateToken_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ValidateToken_Response) Reset() { *m = CParental_ValidateToken_Response{} }
|
||||
func (m *CParental_ValidateToken_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ValidateToken_Response) ProtoMessage() {}
|
||||
func (*CParental_ValidateToken_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{13}
|
||||
}
|
||||
|
||||
type CParental_ValidatePassword_Request struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
Session *string `protobuf:"bytes,2,opt,name=session" json:"session,omitempty"`
|
||||
SendUnlockOnSuccess *bool `protobuf:"varint,3,opt,name=send_unlock_on_success" json:"send_unlock_on_success,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Request) Reset() { *m = CParental_ValidatePassword_Request{} }
|
||||
func (m *CParental_ValidatePassword_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ValidatePassword_Request) ProtoMessage() {}
|
||||
func (*CParental_ValidatePassword_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{14}
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Request) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Request) GetSession() string {
|
||||
if m != nil && m.Session != nil {
|
||||
return *m.Session
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Request) GetSendUnlockOnSuccess() bool {
|
||||
if m != nil && m.SendUnlockOnSuccess != nil {
|
||||
return *m.SendUnlockOnSuccess
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CParental_ValidatePassword_Response struct {
|
||||
Token *string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Response) Reset() { *m = CParental_ValidatePassword_Response{} }
|
||||
func (m *CParental_ValidatePassword_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ValidatePassword_Response) ProtoMessage() {}
|
||||
func (*CParental_ValidatePassword_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{15}
|
||||
}
|
||||
|
||||
func (m *CParental_ValidatePassword_Response) GetToken() string {
|
||||
if m != nil && m.Token != nil {
|
||||
return *m.Token
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_LockClient_Request struct {
|
||||
Session *string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_LockClient_Request) Reset() { *m = CParental_LockClient_Request{} }
|
||||
func (m *CParental_LockClient_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_LockClient_Request) ProtoMessage() {}
|
||||
func (*CParental_LockClient_Request) Descriptor() ([]byte, []int) { return parental_fileDescriptor0, []int{16} }
|
||||
|
||||
func (m *CParental_LockClient_Request) GetSession() string {
|
||||
if m != nil && m.Session != nil {
|
||||
return *m.Session
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_LockClient_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_LockClient_Response) Reset() { *m = CParental_LockClient_Response{} }
|
||||
func (m *CParental_LockClient_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_LockClient_Response) ProtoMessage() {}
|
||||
func (*CParental_LockClient_Response) Descriptor() ([]byte, []int) { return parental_fileDescriptor0, []int{17} }
|
||||
|
||||
type CParental_RequestRecoveryCode_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_RequestRecoveryCode_Request) Reset() { *m = CParental_RequestRecoveryCode_Request{} }
|
||||
func (m *CParental_RequestRecoveryCode_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_RequestRecoveryCode_Request) ProtoMessage() {}
|
||||
func (*CParental_RequestRecoveryCode_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{18}
|
||||
}
|
||||
|
||||
type CParental_RequestRecoveryCode_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_RequestRecoveryCode_Response) Reset() {
|
||||
*m = CParental_RequestRecoveryCode_Response{}
|
||||
}
|
||||
func (m *CParental_RequestRecoveryCode_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_RequestRecoveryCode_Response) ProtoMessage() {}
|
||||
func (*CParental_RequestRecoveryCode_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{19}
|
||||
}
|
||||
|
||||
type CParental_DisableWithRecoveryCode_Request struct {
|
||||
RecoveryCode *uint32 `protobuf:"varint,1,opt,name=recovery_code" json:"recovery_code,omitempty"`
|
||||
Steamid *uint64 `protobuf:"fixed64,10,opt,name=steamid" json:"steamid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_DisableWithRecoveryCode_Request) Reset() {
|
||||
*m = CParental_DisableWithRecoveryCode_Request{}
|
||||
}
|
||||
func (m *CParental_DisableWithRecoveryCode_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_DisableWithRecoveryCode_Request) ProtoMessage() {}
|
||||
func (*CParental_DisableWithRecoveryCode_Request) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{20}
|
||||
}
|
||||
|
||||
func (m *CParental_DisableWithRecoveryCode_Request) GetRecoveryCode() uint32 {
|
||||
if m != nil && m.RecoveryCode != nil {
|
||||
return *m.RecoveryCode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CParental_DisableWithRecoveryCode_Request) GetSteamid() uint64 {
|
||||
if m != nil && m.Steamid != nil {
|
||||
return *m.Steamid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CParental_DisableWithRecoveryCode_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_DisableWithRecoveryCode_Response) Reset() {
|
||||
*m = CParental_DisableWithRecoveryCode_Response{}
|
||||
}
|
||||
func (m *CParental_DisableWithRecoveryCode_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CParental_DisableWithRecoveryCode_Response) ProtoMessage() {}
|
||||
func (*CParental_DisableWithRecoveryCode_Response) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{21}
|
||||
}
|
||||
|
||||
type CParental_ParentalSettingsChange_Notification struct {
|
||||
SerializedSettings []byte `protobuf:"bytes,1,opt,name=serialized_settings" json:"serialized_settings,omitempty"`
|
||||
Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
|
||||
Password *string `protobuf:"bytes,3,opt,name=password" json:"password,omitempty"`
|
||||
Sessionid *string `protobuf:"bytes,4,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalSettingsChange_Notification) Reset() {
|
||||
*m = CParental_ParentalSettingsChange_Notification{}
|
||||
}
|
||||
func (m *CParental_ParentalSettingsChange_Notification) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CParental_ParentalSettingsChange_Notification) ProtoMessage() {}
|
||||
func (*CParental_ParentalSettingsChange_Notification) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{22}
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalSettingsChange_Notification) GetSerializedSettings() []byte {
|
||||
if m != nil {
|
||||
return m.SerializedSettings
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalSettingsChange_Notification) GetSignature() []byte {
|
||||
if m != nil {
|
||||
return m.Signature
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalSettingsChange_Notification) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalSettingsChange_Notification) GetSessionid() string {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_ParentalUnlock_Notification struct {
|
||||
Password *string `protobuf:"bytes,1,opt,name=password" json:"password,omitempty"`
|
||||
Sessionid *string `protobuf:"bytes,2,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalUnlock_Notification) Reset() { *m = CParental_ParentalUnlock_Notification{} }
|
||||
func (m *CParental_ParentalUnlock_Notification) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ParentalUnlock_Notification) ProtoMessage() {}
|
||||
func (*CParental_ParentalUnlock_Notification) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{23}
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalUnlock_Notification) GetPassword() string {
|
||||
if m != nil && m.Password != nil {
|
||||
return *m.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalUnlock_Notification) GetSessionid() string {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CParental_ParentalLock_Notification struct {
|
||||
Sessionid *string `protobuf:"bytes,1,opt,name=sessionid" json:"sessionid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalLock_Notification) Reset() { *m = CParental_ParentalLock_Notification{} }
|
||||
func (m *CParental_ParentalLock_Notification) String() string { return proto.CompactTextString(m) }
|
||||
func (*CParental_ParentalLock_Notification) ProtoMessage() {}
|
||||
func (*CParental_ParentalLock_Notification) Descriptor() ([]byte, []int) {
|
||||
return parental_fileDescriptor0, []int{24}
|
||||
}
|
||||
|
||||
func (m *CParental_ParentalLock_Notification) GetSessionid() string {
|
||||
if m != nil && m.Sessionid != nil {
|
||||
return *m.Sessionid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*ParentalApp)(nil), "ParentalApp")
|
||||
proto.RegisterType((*ParentalSettings)(nil), "ParentalSettings")
|
||||
proto.RegisterType((*CParental_EnableParentalSettings_Request)(nil), "CParental_EnableParentalSettings_Request")
|
||||
proto.RegisterType((*CParental_EnableParentalSettings_Response)(nil), "CParental_EnableParentalSettings_Response")
|
||||
proto.RegisterType((*CParental_DisableParentalSettings_Request)(nil), "CParental_DisableParentalSettings_Request")
|
||||
proto.RegisterType((*CParental_DisableParentalSettings_Response)(nil), "CParental_DisableParentalSettings_Response")
|
||||
proto.RegisterType((*CParental_GetParentalSettings_Request)(nil), "CParental_GetParentalSettings_Request")
|
||||
proto.RegisterType((*CParental_GetParentalSettings_Response)(nil), "CParental_GetParentalSettings_Response")
|
||||
proto.RegisterType((*CParental_GetSignedParentalSettings_Request)(nil), "CParental_GetSignedParentalSettings_Request")
|
||||
proto.RegisterType((*CParental_GetSignedParentalSettings_Response)(nil), "CParental_GetSignedParentalSettings_Response")
|
||||
proto.RegisterType((*CParental_SetParentalSettings_Request)(nil), "CParental_SetParentalSettings_Request")
|
||||
proto.RegisterType((*CParental_SetParentalSettings_Response)(nil), "CParental_SetParentalSettings_Response")
|
||||
proto.RegisterType((*CParental_ValidateToken_Request)(nil), "CParental_ValidateToken_Request")
|
||||
proto.RegisterType((*CParental_ValidateToken_Response)(nil), "CParental_ValidateToken_Response")
|
||||
proto.RegisterType((*CParental_ValidatePassword_Request)(nil), "CParental_ValidatePassword_Request")
|
||||
proto.RegisterType((*CParental_ValidatePassword_Response)(nil), "CParental_ValidatePassword_Response")
|
||||
proto.RegisterType((*CParental_LockClient_Request)(nil), "CParental_LockClient_Request")
|
||||
proto.RegisterType((*CParental_LockClient_Response)(nil), "CParental_LockClient_Response")
|
||||
proto.RegisterType((*CParental_RequestRecoveryCode_Request)(nil), "CParental_RequestRecoveryCode_Request")
|
||||
proto.RegisterType((*CParental_RequestRecoveryCode_Response)(nil), "CParental_RequestRecoveryCode_Response")
|
||||
proto.RegisterType((*CParental_DisableWithRecoveryCode_Request)(nil), "CParental_DisableWithRecoveryCode_Request")
|
||||
proto.RegisterType((*CParental_DisableWithRecoveryCode_Response)(nil), "CParental_DisableWithRecoveryCode_Response")
|
||||
proto.RegisterType((*CParental_ParentalSettingsChange_Notification)(nil), "CParental_ParentalSettingsChange_Notification")
|
||||
proto.RegisterType((*CParental_ParentalUnlock_Notification)(nil), "CParental_ParentalUnlock_Notification")
|
||||
proto.RegisterType((*CParental_ParentalLock_Notification)(nil), "CParental_ParentalLock_Notification")
|
||||
}
|
||||
|
||||
var parental_fileDescriptor0 = []byte{
|
||||
// 1337 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x57, 0x41, 0x8f, 0x14, 0xc5,
|
||||
0x17, 0x4f, 0xc3, 0x02, 0xbb, 0xb5, 0xb3, 0xcb, 0x52, 0xf0, 0x87, 0x66, 0xfe, 0x02, 0x65, 0x2f,
|
||||
0xc2, 0x02, 0x4b, 0x6b, 0x56, 0x23, 0x26, 0x26, 0x12, 0x58, 0x0d, 0x26, 0x2e, 0x88, 0x0c, 0x8a,
|
||||
0x09, 0x89, 0x9d, 0xda, 0xee, 0xda, 0xd9, 0x92, 0x9e, 0xaa, 0xb6, 0xab, 0x86, 0x75, 0x3d, 0x19,
|
||||
0x63, 0xbc, 0x19, 0x2f, 0x1e, 0x34, 0xf1, 0x6e, 0xa2, 0x5e, 0x89, 0x57, 0x13, 0xbf, 0x80, 0xf1,
|
||||
0x53, 0xf8, 0x31, 0x7c, 0x5d, 0xd5, 0x3d, 0xd3, 0xbd, 0xd3, 0x33, 0xd3, 0x23, 0xb7, 0x99, 0xaa,
|
||||
0xf7, 0x5e, 0xfd, 0xde, 0x7b, 0xbf, 0x7a, 0xbf, 0x6a, 0xb4, 0xa6, 0x34, 0xa3, 0xbd, 0x1e, 0x53,
|
||||
0x8a, 0x76, 0x99, 0x0a, 0x12, 0x9a, 0x32, 0xa1, 0x69, 0xec, 0x9b, 0xe5, 0x30, 0xe6, 0xf0, 0xcf,
|
||||
0x4f, 0x52, 0xa9, 0x65, 0x7b, 0xbd, 0x6a, 0xd9, 0x17, 0x7c, 0x87, 0xb3, 0x28, 0xd8, 0xa6, 0x8a,
|
||||
0x8d, 0x5a, 0x7b, 0xaf, 0xa0, 0xc5, 0xfb, 0x79, 0xac, 0x5b, 0x49, 0x82, 0x97, 0xd0, 0x11, 0x9a,
|
||||
0x24, 0x3c, 0x72, 0x1d, 0xe2, 0xac, 0x2d, 0x61, 0x8c, 0x10, 0x57, 0x01, 0x8d, 0x63, 0xb9, 0xc7,
|
||||
0x22, 0xf7, 0x10, 0xac, 0xcd, 0x7b, 0xbf, 0x1d, 0x42, 0x2b, 0x85, 0x4b, 0x87, 0x69, 0xcd, 0x45,
|
||||
0x57, 0xe1, 0xe3, 0xe8, 0x98, 0x89, 0x9d, 0x7b, 0x1e, 0xc5, 0x67, 0xd0, 0x71, 0x08, 0x14, 0x73,
|
||||
0xa5, 0xcd, 0xc9, 0x01, 0xb7, 0xee, 0x4b, 0x98, 0x20, 0xb7, 0xb2, 0x11, 0x31, 0x15, 0xa6, 0x3c,
|
||||
0xd1, 0x5c, 0x0a, 0xf7, 0x30, 0x58, 0x2c, 0x60, 0x0f, 0xb5, 0xca, 0x16, 0xee, 0x1c, 0x39, 0xbc,
|
||||
0xb6, 0xb8, 0xd1, 0xf2, 0xcb, 0x38, 0x2f, 0xa2, 0xe5, 0xc2, 0x26, 0xec, 0x2b, 0x2d, 0x7b, 0xee,
|
||||
0x91, 0x1a, 0x2b, 0x17, 0xad, 0x24, 0x54, 0xa9, 0x3d, 0x99, 0x46, 0xbb, 0x54, 0xed, 0xea, 0xfd,
|
||||
0x84, 0xb9, 0x47, 0x0d, 0x8a, 0x16, 0x9a, 0x53, 0x34, 0xd6, 0xee, 0x31, 0xf8, 0xd7, 0xc2, 0xa7,
|
||||
0x50, 0xab, 0x6c, 0xe7, 0xce, 0x9b, 0x55, 0x9b, 0x3c, 0x13, 0x74, 0x3b, 0x86, 0xe4, 0x17, 0xb2,
|
||||
0xe4, 0xb3, 0x88, 0xf9, 0x42, 0xb0, 0xc3, 0xa8, 0xee, 0xa7, 0x4c, 0xb9, 0xc8, 0x44, 0x3c, 0x8d,
|
||||
0x96, 0x53, 0x16, 0xca, 0xa7, 0x2c, 0xdd, 0x0f, 0x58, 0x8f, 0xf2, 0xd8, 0x5d, 0xcc, 0xb2, 0xf1,
|
||||
0x7e, 0x74, 0xd0, 0xda, 0x66, 0x01, 0x2a, 0x78, 0xc7, 0x38, 0x1f, 0x2c, 0x5f, 0xf0, 0x80, 0x7d,
|
||||
0xd6, 0x67, 0x4a, 0xe3, 0x15, 0x34, 0x5f, 0x00, 0x31, 0x75, 0x5c, 0xc0, 0xab, 0x68, 0x5e, 0xe5,
|
||||
0x56, 0xa6, 0x80, 0x8b, 0x1b, 0x27, 0xfc, 0x91, 0xea, 0x9f, 0x40, 0x0b, 0x0a, 0xfa, 0x0d, 0x25,
|
||||
0x84, 0x32, 0xdb, 0x22, 0x02, 0x78, 0x0b, 0x34, 0x94, 0x51, 0x56, 0xc2, 0x0c, 0x62, 0xa9, 0x49,
|
||||
0x19, 0xe6, 0xa3, 0xde, 0x35, 0x74, 0xa5, 0x01, 0x34, 0x95, 0x48, 0xa1, 0x98, 0x77, 0xaf, 0x6c,
|
||||
0xfc, 0x36, 0x57, 0x33, 0x26, 0x32, 0x72, 0xf8, 0x3a, 0xba, 0xda, 0x24, 0x5e, 0x7e, 0xfa, 0x1b,
|
||||
0xe8, 0xa5, 0xa1, 0xf5, 0x1d, 0xa6, 0xc7, 0x9e, 0x3c, 0x72, 0xce, 0x5d, 0x74, 0x69, 0x9a, 0xa7,
|
||||
0x3d, 0xa3, 0x52, 0x6b, 0x67, 0x4c, 0xad, 0xbd, 0x9b, 0xe8, 0x5a, 0x25, 0x5c, 0x87, 0x77, 0x05,
|
||||
0x8b, 0x26, 0x16, 0x22, 0xe5, 0x32, 0xe5, 0x7a, 0xdf, 0xde, 0x29, 0xef, 0x13, 0xb4, 0xde, 0x2c,
|
||||
0x40, 0x8e, 0xea, 0xff, 0xe8, 0xa4, 0x62, 0x29, 0xa7, 0x31, 0xff, 0x02, 0x58, 0x57, 0x01, 0xd8,
|
||||
0x32, 0x9d, 0x07, 0x7f, 0xc3, 0x44, 0xc3, 0x8f, 0x96, 0xf7, 0x83, 0x53, 0x2e, 0x55, 0x67, 0x42,
|
||||
0xa9, 0xfe, 0x23, 0xdb, 0xe0, 0xb6, 0x08, 0xb6, 0x17, 0x0c, 0x5c, 0x2d, 0xe1, 0x2a, 0x1c, 0x9c,
|
||||
0xab, 0x6f, 0xf9, 0x5a, 0xb9, 0x15, 0x9d, 0x09, 0xad, 0xf0, 0x6e, 0xa0, 0x0b, 0x43, 0xcb, 0x8f,
|
||||
0x20, 0xf7, 0x88, 0x6a, 0xf6, 0x50, 0x3e, 0x61, 0x62, 0x80, 0x1e, 0x60, 0xf4, 0x45, 0x2c, 0xc3,
|
||||
0x27, 0x81, 0xce, 0xd6, 0x6d, 0x06, 0x9e, 0x87, 0xc8, 0x78, 0xc7, 0x3c, 0x78, 0x17, 0x79, 0xa3,
|
||||
0x36, 0xf7, 0xf3, 0x74, 0xa6, 0x50, 0xd8, 0xa6, 0x68, 0x8a, 0xb3, 0x80, 0xcf, 0xa3, 0xd3, 0x8a,
|
||||
0x89, 0x28, 0xc8, 0x71, 0x48, 0x11, 0xa8, 0x7e, 0x18, 0x82, 0x89, 0xa9, 0xc9, 0xbc, 0xf7, 0x1a,
|
||||
0x5a, 0x9d, 0x78, 0x50, 0xde, 0x61, 0x18, 0xba, 0xe5, 0x14, 0x5e, 0x46, 0x2f, 0x0c, 0xbd, 0xb6,
|
||||
0x20, 0xf0, 0xa6, 0x19, 0xd8, 0x15, 0x86, 0xe7, 0x30, 0xac, 0xc3, 0x05, 0x74, 0x6e, 0x8c, 0x43,
|
||||
0x9e, 0xf0, 0xe5, 0x32, 0x23, 0xf2, 0x30, 0x0f, 0xf2, 0x61, 0xb5, 0x09, 0xf3, 0xa1, 0x58, 0xab,
|
||||
0x36, 0xa8, 0xde, 0x30, 0x0f, 0xd9, 0xa9, 0x99, 0x06, 0x8f, 0xb8, 0xde, 0xad, 0x0b, 0x8b, 0xff,
|
||||
0x87, 0x96, 0x06, 0xb3, 0xd1, 0xcc, 0x23, 0xa7, 0x7e, 0x1e, 0xd5, 0x8d, 0x84, 0x9a, 0xa0, 0x39,
|
||||
0x84, 0xaf, 0x1d, 0x74, 0x7d, 0x68, 0x7e, 0x90, 0x4b, 0x9b, 0xbb, 0x54, 0x74, 0x59, 0x70, 0x4f,
|
||||
0x6a, 0xd0, 0xbf, 0x90, 0x66, 0xfa, 0x32, 0xeb, 0x55, 0xaa, 0x50, 0x60, 0x1c, 0xcb, 0xbd, 0xad,
|
||||
0x72, 0x71, 0x8b, 0x1f, 0x1f, 0x5a, 0x46, 0x54, 0x4e, 0x1f, 0x25, 0x54, 0x25, 0x9a, 0xa1, 0x14,
|
||||
0xcc, 0xb9, 0xd5, 0xd1, 0x68, 0x5b, 0x23, 0xb1, 0x2a, 0x9e, 0x26, 0xd8, 0xc6, 0xdf, 0xcb, 0x68,
|
||||
0xbe, 0x70, 0xc0, 0x7f, 0x39, 0xe8, 0x74, 0xfd, 0x40, 0xc7, 0x57, 0xfc, 0xa6, 0x72, 0xd4, 0xbe,
|
||||
0xea, 0x37, 0x97, 0x87, 0xe0, 0xab, 0x67, 0xee, 0x63, 0x6b, 0x44, 0x8a, 0xd7, 0x09, 0x29, 0x4a,
|
||||
0x4c, 0x76, 0x64, 0x4a, 0xf4, 0x2e, 0x23, 0xb1, 0xec, 0x76, 0x59, 0x44, 0xb8, 0x20, 0x34, 0x0c,
|
||||
0x65, 0x5f, 0xe8, 0x75, 0x22, 0x8d, 0xf6, 0xc3, 0x1b, 0x63, 0xbf, 0x30, 0x37, 0x96, 0x61, 0x3f,
|
||||
0xcd, 0x82, 0x0c, 0x42, 0xe0, 0x5f, 0x1d, 0x74, 0x66, 0x8c, 0x4c, 0xe0, 0x32, 0xd0, 0x29, 0xd2,
|
||||
0xd4, 0xbe, 0xe6, 0xcf, 0x20, 0x3b, 0x37, 0x20, 0xab, 0x57, 0x73, 0xab, 0x59, 0xd2, 0xc2, 0x3f,
|
||||
0x3b, 0xe8, 0x64, 0x8d, 0xd8, 0xe0, 0x4b, 0x7e, 0x23, 0x19, 0x6b, 0x5f, 0xf6, 0x9b, 0x89, 0x96,
|
||||
0x77, 0x13, 0x10, 0xbe, 0x09, 0x16, 0x95, 0xa2, 0xcd, 0x82, 0xf4, 0x1f, 0x07, 0x9d, 0x1d, 0x2b,
|
||||
0x43, 0x78, 0xdd, 0x9f, 0x41, 0xed, 0xda, 0xd7, 0xfd, 0x59, 0xa4, 0xcd, 0x13, 0x80, 0xfd, 0xd3,
|
||||
0xe7, 0xc0, 0x6e, 0x7e, 0x66, 0xdb, 0x3d, 0xd8, 0xa7, 0x9a, 0x84, 0x54, 0x90, 0xed, 0x7d, 0x02,
|
||||
0xa3, 0xc2, 0xbc, 0x79, 0xb3, 0xdf, 0x99, 0x1f, 0xcc, 0x1e, 0xc6, 0x61, 0xd1, 0x34, 0xa5, 0x33,
|
||||
0xa5, 0x29, 0x9d, 0x86, 0x4d, 0xe9, 0x4c, 0x6d, 0x4a, 0xe7, 0x39, 0x9a, 0x02, 0x48, 0x97, 0x2a,
|
||||
0xea, 0x85, 0x89, 0x3f, 0x45, 0x10, 0xdb, 0x2f, 0xfa, 0x53, 0x95, 0xef, 0x03, 0xc0, 0x75, 0x77,
|
||||
0x73, 0x97, 0x85, 0x4f, 0x08, 0xdf, 0x31, 0x47, 0x77, 0xa1, 0x30, 0x62, 0x08, 0xcd, 0x2a, 0x19,
|
||||
0x31, 0x72, 0x44, 0xb8, 0x22, 0xa1, 0x04, 0xec, 0xa1, 0x9e, 0x80, 0xf4, 0x77, 0x07, 0xad, 0x1c,
|
||||
0x94, 0x36, 0xbc, 0xea, 0x4f, 0x17, 0xd8, 0xf6, 0x45, 0xbf, 0x81, 0x38, 0x7a, 0x1f, 0x03, 0xe4,
|
||||
0x87, 0xc5, 0xb6, 0xc1, 0x90, 0xc4, 0x94, 0x0b, 0xcd, 0x3e, 0xcf, 0x2a, 0x6a, 0xad, 0x27, 0x30,
|
||||
0x84, 0x8a, 0x08, 0xfa, 0x0f, 0x33, 0x1d, 0x96, 0x44, 0x25, 0x3d, 0xfc, 0x9d, 0x83, 0xd0, 0x50,
|
||||
0x2d, 0xf1, 0x39, 0x7f, 0x92, 0xea, 0xb6, 0xcf, 0xfb, 0x93, 0x35, 0xf6, 0x36, 0xe0, 0x7c, 0xcb,
|
||||
0xcc, 0xe8, 0x7d, 0xa8, 0x9a, 0x10, 0x50, 0x35, 0x40, 0x62, 0xbf, 0xb5, 0x94, 0xa5, 0x27, 0x25,
|
||||
0xe6, 0x74, 0xf8, 0xc4, 0x20, 0x32, 0x34, 0xac, 0xb0, 0x50, 0xc9, 0x76, 0x2a, 0xf7, 0x40, 0x98,
|
||||
0xf0, 0x9f, 0xc0, 0xcf, 0x1a, 0xd5, 0xad, 0xf0, 0x73, 0x82, 0x7c, 0x57, 0xf8, 0x39, 0x51, 0xbd,
|
||||
0x1f, 0x03, 0xd8, 0x47, 0xb9, 0x05, 0x9c, 0x5f, 0x88, 0x33, 0xc9, 0xc4, 0x99, 0x6c, 0x33, 0x60,
|
||||
0x28, 0x94, 0x4e, 0xcb, 0xe2, 0xf6, 0xd8, 0x4d, 0xf3, 0x55, 0x43, 0x68, 0x14, 0xc1, 0x47, 0xcf,
|
||||
0x90, 0xbb, 0x2a, 0x61, 0xa1, 0xbd, 0x6d, 0x05, 0x23, 0x7e, 0x19, 0x0e, 0xea, 0x83, 0xe2, 0x5d,
|
||||
0x37, 0xa8, 0xc7, 0xbd, 0x1a, 0xea, 0x06, 0xf5, 0xf8, 0xc7, 0xc0, 0xeb, 0x90, 0xd1, 0xc6, 0x2d,
|
||||
0xad, 0x59, 0x2f, 0xa9, 0x64, 0x94, 0x77, 0x5c, 0x8a, 0x7a, 0xb0, 0xed, 0x73, 0xe0, 0x77, 0xf6,
|
||||
0xfe, 0xc8, 0xcd, 0x84, 0x6e, 0x3c, 0xe5, 0x21, 0xdb, 0xf8, 0x66, 0x0e, 0x2d, 0x17, 0xbb, 0x39,
|
||||
0x4f, 0x7e, 0x72, 0xd0, 0x29, 0xdb, 0xe7, 0xea, 0x53, 0x03, 0xfb, 0xfe, 0x4c, 0xaf, 0x91, 0xf6,
|
||||
0xa2, 0x7f, 0x4f, 0x0e, 0xf0, 0xdf, 0x01, 0x1c, 0x9b, 0xe5, 0x6d, 0xb2, 0x93, 0xca, 0x9e, 0xc1,
|
||||
0xc1, 0xd2, 0xac, 0x15, 0x96, 0x49, 0x44, 0xee, 0x40, 0x76, 0xa1, 0x89, 0x96, 0x71, 0x67, 0x64,
|
||||
0xa6, 0xe0, 0xef, 0x1d, 0xd4, 0xb2, 0xf0, 0xec, 0x1b, 0xa4, 0x42, 0x9e, 0x09, 0xcf, 0x93, 0x2a,
|
||||
0x9c, 0xf7, 0x01, 0xce, 0x7b, 0x0d, 0xe0, 0x58, 0x5e, 0x0f, 0x2e, 0xd6, 0x78, 0x6a, 0x7f, 0x0b,
|
||||
0x97, 0xcd, 0xc2, 0xca, 0x2e, 0x0f, 0xbe, 0xe8, 0x37, 0x78, 0xe5, 0x54, 0x21, 0x6d, 0x01, 0xa4,
|
||||
0x77, 0x1b, 0x43, 0x9a, 0x72, 0xd5, 0xda, 0x3e, 0x44, 0xbb, 0x34, 0xda, 0xf7, 0x3c, 0x86, 0x28,
|
||||
0x1d, 0xa3, 0xfe, 0x78, 0xe6, 0x1e, 0xba, 0x7d, 0xf8, 0x4b, 0xc7, 0xf9, 0x37, 0x00, 0x00, 0xff,
|
||||
0xff, 0xc4, 0x79, 0x5c, 0x8e, 0x85, 0x11, 0x00, 0x00,
|
||||
}
|
456
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/partnerapps.pb.go
generated
vendored
456
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/partnerapps.pb.go
generated
vendored
@ -1,456 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_partnerapps.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type CPartnerApps_RequestUploadToken_Request struct {
|
||||
Filename *string `protobuf:"bytes,1,opt,name=filename" json:"filename,omitempty"`
|
||||
Appid *uint32 `protobuf:"varint,2,opt,name=appid" json:"appid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Request) Reset() {
|
||||
*m = CPartnerApps_RequestUploadToken_Request{}
|
||||
}
|
||||
func (m *CPartnerApps_RequestUploadToken_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_RequestUploadToken_Request) ProtoMessage() {}
|
||||
func (*CPartnerApps_RequestUploadToken_Request) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{0}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Request) GetFilename() string {
|
||||
if m != nil && m.Filename != nil {
|
||||
return *m.Filename
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPartnerApps_RequestUploadToken_Response struct {
|
||||
UploadToken *uint64 `protobuf:"varint,1,opt,name=upload_token" json:"upload_token,omitempty"`
|
||||
Location *string `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"`
|
||||
RoutingId *uint64 `protobuf:"varint,3,opt,name=routing_id" json:"routing_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Response) Reset() {
|
||||
*m = CPartnerApps_RequestUploadToken_Response{}
|
||||
}
|
||||
func (m *CPartnerApps_RequestUploadToken_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_RequestUploadToken_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_RequestUploadToken_Response) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Response) GetUploadToken() uint64 {
|
||||
if m != nil && m.UploadToken != nil {
|
||||
return *m.UploadToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Response) GetLocation() string {
|
||||
if m != nil && m.Location != nil {
|
||||
return *m.Location
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_RequestUploadToken_Response) GetRoutingId() uint64 {
|
||||
if m != nil && m.RoutingId != nil {
|
||||
return *m.RoutingId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPartnerApps_FinishUpload_Request struct {
|
||||
UploadToken *uint64 `protobuf:"varint,1,opt,name=upload_token" json:"upload_token,omitempty"`
|
||||
RoutingId *uint64 `protobuf:"varint,2,opt,name=routing_id" json:"routing_id,omitempty"`
|
||||
AppId *uint32 `protobuf:"varint,3,opt,name=app_id" json:"app_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUpload_Request) Reset() { *m = CPartnerApps_FinishUpload_Request{} }
|
||||
func (m *CPartnerApps_FinishUpload_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_FinishUpload_Request) ProtoMessage() {}
|
||||
func (*CPartnerApps_FinishUpload_Request) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUpload_Request) GetUploadToken() uint64 {
|
||||
if m != nil && m.UploadToken != nil {
|
||||
return *m.UploadToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUpload_Request) GetRoutingId() uint64 {
|
||||
if m != nil && m.RoutingId != nil {
|
||||
return *m.RoutingId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUpload_Request) GetAppId() uint32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPartnerApps_FinishUploadKVSign_Response struct {
|
||||
SignedInstallscript *string `protobuf:"bytes,1,opt,name=signed_installscript" json:"signed_installscript,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadKVSign_Response) Reset() {
|
||||
*m = CPartnerApps_FinishUploadKVSign_Response{}
|
||||
}
|
||||
func (m *CPartnerApps_FinishUploadKVSign_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_FinishUploadKVSign_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_FinishUploadKVSign_Response) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadKVSign_Response) GetSignedInstallscript() string {
|
||||
if m != nil && m.SignedInstallscript != nil {
|
||||
return *m.SignedInstallscript
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CPartnerApps_FinishUploadLegacyDRM_Request struct {
|
||||
UploadToken *uint64 `protobuf:"varint,1,opt,name=upload_token" json:"upload_token,omitempty"`
|
||||
RoutingId *uint64 `protobuf:"varint,2,opt,name=routing_id" json:"routing_id,omitempty"`
|
||||
AppId *uint32 `protobuf:"varint,3,opt,name=app_id" json:"app_id,omitempty"`
|
||||
Flags *uint32 `protobuf:"varint,4,opt,name=flags" json:"flags,omitempty"`
|
||||
ToolName *string `protobuf:"bytes,5,opt,name=tool_name" json:"tool_name,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) Reset() {
|
||||
*m = CPartnerApps_FinishUploadLegacyDRM_Request{}
|
||||
}
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CPartnerApps_FinishUploadLegacyDRM_Request) ProtoMessage() {}
|
||||
func (*CPartnerApps_FinishUploadLegacyDRM_Request) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{4}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) GetUploadToken() uint64 {
|
||||
if m != nil && m.UploadToken != nil {
|
||||
return *m.UploadToken
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) GetRoutingId() uint64 {
|
||||
if m != nil && m.RoutingId != nil {
|
||||
return *m.RoutingId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) GetAppId() uint32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) GetFlags() uint32 {
|
||||
if m != nil && m.Flags != nil {
|
||||
return *m.Flags
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Request) GetToolName() string {
|
||||
if m != nil && m.ToolName != nil {
|
||||
return *m.ToolName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CPartnerApps_FinishUploadLegacyDRM_Response struct {
|
||||
FileId *string `protobuf:"bytes,1,opt,name=file_id" json:"file_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Response) Reset() {
|
||||
*m = CPartnerApps_FinishUploadLegacyDRM_Response{}
|
||||
}
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CPartnerApps_FinishUploadLegacyDRM_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_FinishUploadLegacyDRM_Response) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{5}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUploadLegacyDRM_Response) GetFileId() string {
|
||||
if m != nil && m.FileId != nil {
|
||||
return *m.FileId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CPartnerApps_FinishUpload_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FinishUpload_Response) Reset() { *m = CPartnerApps_FinishUpload_Response{} }
|
||||
func (m *CPartnerApps_FinishUpload_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_FinishUpload_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_FinishUpload_Response) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
type CPartnerApps_FindDRMUploads_Request struct {
|
||||
AppId *int32 `protobuf:"varint,1,opt,name=app_id" json:"app_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FindDRMUploads_Request) Reset() { *m = CPartnerApps_FindDRMUploads_Request{} }
|
||||
func (m *CPartnerApps_FindDRMUploads_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_FindDRMUploads_Request) ProtoMessage() {}
|
||||
func (*CPartnerApps_FindDRMUploads_Request) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FindDRMUploads_Request) GetAppId() int32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPartnerApps_ExistingDRMUpload struct {
|
||||
FileId *string `protobuf:"bytes,1,opt,name=file_id" json:"file_id,omitempty"`
|
||||
AppId *uint32 `protobuf:"varint,2,opt,name=app_id" json:"app_id,omitempty"`
|
||||
ActorId *int32 `protobuf:"varint,3,opt,name=actor_id" json:"actor_id,omitempty"`
|
||||
SuppliedName *string `protobuf:"bytes,5,opt,name=supplied_name" json:"supplied_name,omitempty"`
|
||||
Flags *uint32 `protobuf:"varint,6,opt,name=flags" json:"flags,omitempty"`
|
||||
ModType *string `protobuf:"bytes,7,opt,name=mod_type" json:"mod_type,omitempty"`
|
||||
Timestamp *uint32 `protobuf:"fixed32,8,opt,name=timestamp" json:"timestamp,omitempty"`
|
||||
OrigFileId *string `protobuf:"bytes,9,opt,name=orig_file_id" json:"orig_file_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) Reset() { *m = CPartnerApps_ExistingDRMUpload{} }
|
||||
func (m *CPartnerApps_ExistingDRMUpload) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_ExistingDRMUpload) ProtoMessage() {}
|
||||
func (*CPartnerApps_ExistingDRMUpload) Descriptor() ([]byte, []int) { return partnerapps_fileDescriptor0, []int{8} }
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetFileId() string {
|
||||
if m != nil && m.FileId != nil {
|
||||
return *m.FileId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetAppId() uint32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetActorId() int32 {
|
||||
if m != nil && m.ActorId != nil {
|
||||
return *m.ActorId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetSuppliedName() string {
|
||||
if m != nil && m.SuppliedName != nil {
|
||||
return *m.SuppliedName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetFlags() uint32 {
|
||||
if m != nil && m.Flags != nil {
|
||||
return *m.Flags
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetModType() string {
|
||||
if m != nil && m.ModType != nil {
|
||||
return *m.ModType
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetTimestamp() uint32 {
|
||||
if m != nil && m.Timestamp != nil {
|
||||
return *m.Timestamp
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_ExistingDRMUpload) GetOrigFileId() string {
|
||||
if m != nil && m.OrigFileId != nil {
|
||||
return *m.OrigFileId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CPartnerApps_FindDRMUploads_Response struct {
|
||||
Uploads []*CPartnerApps_ExistingDRMUpload `protobuf:"bytes,1,rep,name=uploads" json:"uploads,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FindDRMUploads_Response) Reset() { *m = CPartnerApps_FindDRMUploads_Response{} }
|
||||
func (m *CPartnerApps_FindDRMUploads_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_FindDRMUploads_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_FindDRMUploads_Response) Descriptor() ([]byte, []int) {
|
||||
return partnerapps_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_FindDRMUploads_Response) GetUploads() []*CPartnerApps_ExistingDRMUpload {
|
||||
if m != nil {
|
||||
return m.Uploads
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CPartnerApps_Download_Request struct {
|
||||
FileId *string `protobuf:"bytes,1,opt,name=file_id" json:"file_id,omitempty"`
|
||||
AppId *int32 `protobuf:"varint,2,opt,name=app_id" json:"app_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_Download_Request) Reset() { *m = CPartnerApps_Download_Request{} }
|
||||
func (m *CPartnerApps_Download_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_Download_Request) ProtoMessage() {}
|
||||
func (*CPartnerApps_Download_Request) Descriptor() ([]byte, []int) { return partnerapps_fileDescriptor0, []int{10} }
|
||||
|
||||
func (m *CPartnerApps_Download_Request) GetFileId() string {
|
||||
if m != nil && m.FileId != nil {
|
||||
return *m.FileId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_Download_Request) GetAppId() int32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPartnerApps_Download_Response struct {
|
||||
DownloadUrl *string `protobuf:"bytes,1,opt,name=download_url" json:"download_url,omitempty"`
|
||||
AppId *int32 `protobuf:"varint,2,opt,name=app_id" json:"app_id,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_Download_Response) Reset() { *m = CPartnerApps_Download_Response{} }
|
||||
func (m *CPartnerApps_Download_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPartnerApps_Download_Response) ProtoMessage() {}
|
||||
func (*CPartnerApps_Download_Response) Descriptor() ([]byte, []int) { return partnerapps_fileDescriptor0, []int{11} }
|
||||
|
||||
func (m *CPartnerApps_Download_Response) GetDownloadUrl() string {
|
||||
if m != nil && m.DownloadUrl != nil {
|
||||
return *m.DownloadUrl
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CPartnerApps_Download_Response) GetAppId() int32 {
|
||||
if m != nil && m.AppId != nil {
|
||||
return *m.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*CPartnerApps_RequestUploadToken_Request)(nil), "CPartnerApps_RequestUploadToken_Request")
|
||||
proto.RegisterType((*CPartnerApps_RequestUploadToken_Response)(nil), "CPartnerApps_RequestUploadToken_Response")
|
||||
proto.RegisterType((*CPartnerApps_FinishUpload_Request)(nil), "CPartnerApps_FinishUpload_Request")
|
||||
proto.RegisterType((*CPartnerApps_FinishUploadKVSign_Response)(nil), "CPartnerApps_FinishUploadKVSign_Response")
|
||||
proto.RegisterType((*CPartnerApps_FinishUploadLegacyDRM_Request)(nil), "CPartnerApps_FinishUploadLegacyDRM_Request")
|
||||
proto.RegisterType((*CPartnerApps_FinishUploadLegacyDRM_Response)(nil), "CPartnerApps_FinishUploadLegacyDRM_Response")
|
||||
proto.RegisterType((*CPartnerApps_FinishUpload_Response)(nil), "CPartnerApps_FinishUpload_Response")
|
||||
proto.RegisterType((*CPartnerApps_FindDRMUploads_Request)(nil), "CPartnerApps_FindDRMUploads_Request")
|
||||
proto.RegisterType((*CPartnerApps_ExistingDRMUpload)(nil), "CPartnerApps_ExistingDRMUpload")
|
||||
proto.RegisterType((*CPartnerApps_FindDRMUploads_Response)(nil), "CPartnerApps_FindDRMUploads_Response")
|
||||
proto.RegisterType((*CPartnerApps_Download_Request)(nil), "CPartnerApps_Download_Request")
|
||||
proto.RegisterType((*CPartnerApps_Download_Response)(nil), "CPartnerApps_Download_Response")
|
||||
}
|
||||
|
||||
var partnerapps_fileDescriptor0 = []byte{
|
||||
// 809 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x96, 0x4f, 0x6f, 0xd3, 0x4a,
|
||||
0x14, 0xc5, 0xe5, 0xb6, 0x69, 0x9a, 0xe9, 0x4b, 0xdf, 0x7b, 0x56, 0x2b, 0x45, 0x11, 0xb4, 0xc6,
|
||||
0x2d, 0x22, 0xb4, 0xd5, 0x50, 0x15, 0x21, 0x36, 0x08, 0x95, 0xa6, 0x7f, 0x10, 0x05, 0x84, 0x5a,
|
||||
0x40, 0x6c, 0x50, 0x34, 0x75, 0x26, 0xe9, 0x08, 0xdb, 0x63, 0x3c, 0x63, 0x68, 0x77, 0x88, 0x15,
|
||||
0x1b, 0x3e, 0x00, 0x7b, 0x76, 0x20, 0x24, 0x24, 0xfa, 0xfd, 0xb8, 0x33, 0xb6, 0x13, 0x3b, 0x69,
|
||||
0x53, 0x23, 0x84, 0x58, 0x66, 0x7c, 0x7d, 0xee, 0x6f, 0xce, 0xdc, 0x39, 0x31, 0x5a, 0x11, 0x92,
|
||||
0x12, 0xcf, 0xa3, 0x42, 0x90, 0x2e, 0x15, 0xad, 0x80, 0x84, 0xd2, 0xa7, 0x21, 0x09, 0x02, 0x81,
|
||||
0xf5, 0x13, 0xc7, 0x65, 0xd4, 0x97, 0x38, 0x08, 0xb9, 0xe4, 0xf5, 0xd5, 0x7c, 0x71, 0xe4, 0xb3,
|
||||
0x0e, 0xa3, 0xed, 0xd6, 0x21, 0x11, 0x74, 0xb8, 0xda, 0x7e, 0x80, 0xae, 0x35, 0x9f, 0xc4, 0x7a,
|
||||
0xf7, 0x40, 0xaf, 0xb5, 0x4f, 0x5f, 0x47, 0x54, 0xc8, 0x67, 0x81, 0xcb, 0x49, 0xfb, 0x29, 0x7f,
|
||||
0x45, 0xfd, 0x74, 0xc9, 0xfc, 0x0f, 0x4d, 0x75, 0x98, 0x4b, 0x7d, 0xe2, 0xd1, 0x9a, 0x61, 0x19,
|
||||
0x8d, 0x8a, 0x59, 0x45, 0x25, 0x80, 0x60, 0xed, 0xda, 0x18, 0xfc, 0xac, 0xda, 0x1d, 0xd4, 0xb8,
|
||||
0x58, 0x4b, 0x04, 0xdc, 0x17, 0xd4, 0x9c, 0x45, 0xff, 0x44, 0x7a, 0xbd, 0x25, 0xd5, 0x03, 0x2d,
|
||||
0x38, 0xa1, 0x5a, 0xb8, 0xdc, 0x21, 0x92, 0x71, 0x5f, 0x6b, 0x56, 0x4c, 0x13, 0xa1, 0x90, 0x47,
|
||||
0x92, 0xf9, 0xdd, 0x16, 0xf4, 0x19, 0x57, 0x55, 0xf6, 0x4b, 0x74, 0x25, 0xd7, 0x67, 0x87, 0xf9,
|
||||
0x4c, 0x1c, 0xc5, 0x6d, 0x7a, 0xb4, 0x67, 0x37, 0xc8, 0xcb, 0x8d, 0xe9, 0xb5, 0x19, 0x34, 0x09,
|
||||
0xbb, 0x48, 0xe5, 0xab, 0xf6, 0xfd, 0x81, 0x6d, 0x64, 0xe5, 0xf7, 0x9e, 0x1f, 0xb0, 0x6e, 0x66,
|
||||
0x1b, 0x97, 0xd0, 0xac, 0x80, 0x05, 0xf0, 0x97, 0xf9, 0x42, 0x12, 0xd7, 0x15, 0x4e, 0xc8, 0x02,
|
||||
0x19, 0xfb, 0x63, 0x7f, 0x30, 0xd0, 0xf2, 0xb9, 0x52, 0x0f, 0x69, 0x97, 0x38, 0x27, 0x5b, 0xfb,
|
||||
0x8f, 0x7e, 0x1f, 0x59, 0x1d, 0x44, 0xc7, 0x25, 0x5d, 0x51, 0x9b, 0xd0, 0x3f, 0xff, 0x47, 0x15,
|
||||
0xc9, 0xb9, 0xdb, 0xd2, 0x47, 0x55, 0xd2, 0x28, 0x77, 0xd1, 0x4a, 0x21, 0x92, 0x64, 0x5f, 0xff,
|
||||
0xa2, 0xb2, 0x3a, 0x6b, 0xd5, 0x21, 0xde, 0xca, 0x12, 0xb2, 0x47, 0x79, 0x1e, 0xbf, 0x66, 0xdf,
|
||||
0x42, 0x8b, 0x83, 0x55, 0x6d, 0xd0, 0x8d, 0xcb, 0x7a, 0x03, 0x91, 0xc1, 0x57, 0xe2, 0x25, 0xfb,
|
||||
0x87, 0x81, 0xe6, 0x73, 0xef, 0x6d, 0x1f, 0x33, 0xa1, 0x76, 0xdc, 0x7b, 0x77, 0x08, 0x28, 0xa3,
|
||||
0xa1, 0x87, 0x4f, 0x8d, 0x0e, 0x71, 0x24, 0x0f, 0x53, 0x53, 0x4a, 0xe6, 0x1c, 0xaa, 0x8a, 0x28,
|
||||
0x08, 0x5c, 0x35, 0xfd, 0x7d, 0x27, 0xfa, 0x5e, 0x4d, 0xa6, 0xef, 0x79, 0x1c, 0x1c, 0x3f, 0x09,
|
||||
0x68, 0xad, 0xac, 0x0b, 0x94, 0x7b, 0x0c, 0xee, 0x8f, 0x24, 0x5e, 0x50, 0x9b, 0x82, 0xa5, 0xb2,
|
||||
0x3a, 0x19, 0x1e, 0xb2, 0x6e, 0x2b, 0x45, 0xa8, 0x68, 0x4f, 0x5e, 0xa0, 0xa5, 0xd1, 0xbb, 0x4d,
|
||||
0xcc, 0x5c, 0x43, 0xe5, 0xf8, 0x5c, 0x05, 0xb0, 0x8f, 0x37, 0xa6, 0xd7, 0x17, 0xf0, 0xe8, 0xdd,
|
||||
0xda, 0x1b, 0xe8, 0x72, 0xae, 0x62, 0x8b, 0xbf, 0xf5, 0x73, 0xd3, 0x7d, 0x81, 0x1d, 0x25, 0x7b,
|
||||
0x67, 0xc0, 0xd1, 0x8c, 0x42, 0xff, 0x06, 0xb6, 0xd3, 0xc5, 0x28, 0x74, 0xcf, 0xd6, 0x59, 0xff,
|
||||
0x8a, 0xd0, 0x74, 0x46, 0xc7, 0xfc, 0x6e, 0xa0, 0x5a, 0x02, 0x11, 0xdf, 0x85, 0xcc, 0xed, 0x36,
|
||||
0x1b, 0xb8, 0x60, 0x96, 0xd4, 0xaf, 0xe3, 0xa2, 0x49, 0x61, 0x6f, 0xbc, 0x3f, 0xad, 0xdd, 0x49,
|
||||
0x0a, 0xac, 0xd8, 0x47, 0x4b, 0xdf, 0x0f, 0xab, 0xc3, 0x43, 0x2b, 0x77, 0xed, 0x2c, 0xe5, 0x49,
|
||||
0x5a, 0x73, 0xc3, 0x52, 0x37, 0x13, 0x6c, 0x35, 0xbf, 0x19, 0x68, 0x2e, 0x11, 0xe8, 0x59, 0xfc,
|
||||
0xd7, 0x80, 0xe9, 0x31, 0x75, 0x22, 0x49, 0x0e, 0x01, 0x34, 0x4f, 0x0b, 0x79, 0xec, 0x40, 0x68,
|
||||
0x2b, 0xe0, 0xd3, 0x3e, 0x70, 0x73, 0x7b, 0xf7, 0x8f, 0x03, 0xef, 0x02, 0x70, 0xf3, 0x5c, 0x60,
|
||||
0x27, 0x12, 0x92, 0x7b, 0x85, 0xb8, 0xbf, 0x18, 0xc8, 0x1c, 0x4e, 0x4b, 0xd3, 0xc6, 0x17, 0xc6,
|
||||
0xf5, 0x20, 0xee, 0x88, 0xcc, 0xb5, 0x77, 0x00, 0x77, 0xb3, 0xc9, 0x3d, 0x8f, 0x49, 0xcb, 0xa3,
|
||||
0xf2, 0x88, 0x2b, 0x5a, 0x7d, 0xd8, 0x16, 0xf1, 0x07, 0x06, 0x82, 0x74, 0x24, 0x0d, 0xd5, 0x72,
|
||||
0x82, 0xcb, 0x84, 0xe5, 0x70, 0x2f, 0x70, 0xa9, 0xa4, 0xe6, 0x67, 0x70, 0x39, 0xdb, 0xa7, 0x1f,
|
||||
0x36, 0x2b, 0xb8, 0x78, 0x6a, 0xd7, 0x57, 0xf1, 0x2f, 0x04, 0xab, 0xbd, 0x06, 0xf0, 0xab, 0x79,
|
||||
0xf8, 0xb3, 0xa6, 0x22, 0x63, 0xea, 0xa7, 0x01, 0xcc, 0xde, 0x44, 0x14, 0xf2, 0x75, 0x11, 0x17,
|
||||
0x88, 0xed, 0xdb, 0x00, 0x75, 0x73, 0x18, 0xea, 0x9c, 0x93, 0xcf, 0xb0, 0x7d, 0x34, 0xd0, 0x4c,
|
||||
0x3e, 0xf5, 0xcc, 0x25, 0x5c, 0xe0, 0x1f, 0xa0, 0x7e, 0x15, 0x17, 0x49, 0x4e, 0x1b, 0x03, 0xd8,
|
||||
0xb2, 0x7a, 0x28, 0xac, 0xc7, 0x96, 0xc7, 0x61, 0x3c, 0x43, 0xea, 0xc0, 0xc7, 0x0b, 0x30, 0x30,
|
||||
0x00, 0x4c, 0x52, 0xd5, 0x3a, 0x3c, 0xb1, 0xf4, 0x77, 0x88, 0xb9, 0x87, 0xa6, 0xd2, 0xa0, 0x33,
|
||||
0xe7, 0xf1, 0xc8, 0x08, 0xad, 0x2f, 0xe0, 0xd1, 0x01, 0x59, 0x5f, 0x87, 0xe6, 0xf8, 0x80, 0x86,
|
||||
0x6f, 0x98, 0x43, 0x13, 0x5b, 0x84, 0xf6, 0x05, 0x7a, 0x59, 0x1e, 0xf1, 0xe1, 0xf3, 0xca, 0x53,
|
||||
0x2c, 0xd0, 0x3d, 0xf9, 0x22, 0x13, 0x9b, 0xe3, 0xef, 0x0c, 0xe3, 0x67, 0x00, 0x00, 0x00, 0xff,
|
||||
0xff, 0xec, 0x20, 0xc0, 0x4b, 0xaf, 0x09, 0x00, 0x00,
|
||||
}
|
@ -1,586 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: steammessages_player.steamclient.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package unified
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type CPlayer_GetGameBadgeLevels_Request struct {
|
||||
Appid *uint32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Request) Reset() { *m = CPlayer_GetGameBadgeLevels_Request{} }
|
||||
func (m *CPlayer_GetGameBadgeLevels_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetGameBadgeLevels_Request) ProtoMessage() {}
|
||||
func (*CPlayer_GetGameBadgeLevels_Request) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{0}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Request) GetAppid() uint32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPlayer_GetGameBadgeLevels_Response struct {
|
||||
PlayerLevel *uint32 `protobuf:"varint,1,opt,name=player_level" json:"player_level,omitempty"`
|
||||
Badges []*CPlayer_GetGameBadgeLevels_Response_Badge `protobuf:"bytes,2,rep,name=badges" json:"badges,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response) Reset() { *m = CPlayer_GetGameBadgeLevels_Response{} }
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetGameBadgeLevels_Response) ProtoMessage() {}
|
||||
func (*CPlayer_GetGameBadgeLevels_Response) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{1}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response) GetPlayerLevel() uint32 {
|
||||
if m != nil && m.PlayerLevel != nil {
|
||||
return *m.PlayerLevel
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response) GetBadges() []*CPlayer_GetGameBadgeLevels_Response_Badge {
|
||||
if m != nil {
|
||||
return m.Badges
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CPlayer_GetGameBadgeLevels_Response_Badge struct {
|
||||
Level *int32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"`
|
||||
Series *int32 `protobuf:"varint,2,opt,name=series" json:"series,omitempty"`
|
||||
BorderColor *uint32 `protobuf:"varint,3,opt,name=border_color" json:"border_color,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response_Badge) Reset() {
|
||||
*m = CPlayer_GetGameBadgeLevels_Response_Badge{}
|
||||
}
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response_Badge) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetGameBadgeLevels_Response_Badge) ProtoMessage() {}
|
||||
func (*CPlayer_GetGameBadgeLevels_Response_Badge) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{1, 0}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response_Badge) GetLevel() int32 {
|
||||
if m != nil && m.Level != nil {
|
||||
return *m.Level
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response_Badge) GetSeries() int32 {
|
||||
if m != nil && m.Series != nil {
|
||||
return *m.Series
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetGameBadgeLevels_Response_Badge) GetBorderColor() uint32 {
|
||||
if m != nil && m.BorderColor != nil {
|
||||
return *m.BorderColor
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPlayer_GetLastPlayedTimes_Request struct {
|
||||
MinLastPlayed *uint32 `protobuf:"varint,1,opt,name=min_last_played" json:"min_last_played,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Request) Reset() { *m = CPlayer_GetLastPlayedTimes_Request{} }
|
||||
func (m *CPlayer_GetLastPlayedTimes_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetLastPlayedTimes_Request) ProtoMessage() {}
|
||||
func (*CPlayer_GetLastPlayedTimes_Request) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{2}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Request) GetMinLastPlayed() uint32 {
|
||||
if m != nil && m.MinLastPlayed != nil {
|
||||
return *m.MinLastPlayed
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPlayer_GetLastPlayedTimes_Response struct {
|
||||
Games []*CPlayer_GetLastPlayedTimes_Response_Game `protobuf:"bytes,1,rep,name=games" json:"games,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response) Reset() { *m = CPlayer_GetLastPlayedTimes_Response{} }
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetLastPlayedTimes_Response) ProtoMessage() {}
|
||||
func (*CPlayer_GetLastPlayedTimes_Response) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{3}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response) GetGames() []*CPlayer_GetLastPlayedTimes_Response_Game {
|
||||
if m != nil {
|
||||
return m.Games
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CPlayer_GetLastPlayedTimes_Response_Game struct {
|
||||
Appid *int32 `protobuf:"varint,1,opt,name=appid" json:"appid,omitempty"`
|
||||
LastPlaytime *uint32 `protobuf:"varint,2,opt,name=last_playtime" json:"last_playtime,omitempty"`
|
||||
Playtime_2Weeks *int32 `protobuf:"varint,3,opt,name=playtime_2weeks" json:"playtime_2weeks,omitempty"`
|
||||
PlaytimeForever *int32 `protobuf:"varint,4,opt,name=playtime_forever" json:"playtime_forever,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) Reset() {
|
||||
*m = CPlayer_GetLastPlayedTimes_Response_Game{}
|
||||
}
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_GetLastPlayedTimes_Response_Game) ProtoMessage() {}
|
||||
func (*CPlayer_GetLastPlayedTimes_Response_Game) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{3, 0}
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) GetAppid() int32 {
|
||||
if m != nil && m.Appid != nil {
|
||||
return *m.Appid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) GetLastPlaytime() uint32 {
|
||||
if m != nil && m.LastPlaytime != nil {
|
||||
return *m.LastPlaytime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) GetPlaytime_2Weeks() int32 {
|
||||
if m != nil && m.Playtime_2Weeks != nil {
|
||||
return *m.Playtime_2Weeks
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CPlayer_GetLastPlayedTimes_Response_Game) GetPlaytimeForever() int32 {
|
||||
if m != nil && m.PlaytimeForever != nil {
|
||||
return *m.PlaytimeForever
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPlayer_AcceptSSA_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_AcceptSSA_Request) Reset() { *m = CPlayer_AcceptSSA_Request{} }
|
||||
func (m *CPlayer_AcceptSSA_Request) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_AcceptSSA_Request) ProtoMessage() {}
|
||||
func (*CPlayer_AcceptSSA_Request) Descriptor() ([]byte, []int) { return player_fileDescriptor0, []int{4} }
|
||||
|
||||
type CPlayer_AcceptSSA_Response struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_AcceptSSA_Response) Reset() { *m = CPlayer_AcceptSSA_Response{} }
|
||||
func (m *CPlayer_AcceptSSA_Response) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_AcceptSSA_Response) ProtoMessage() {}
|
||||
func (*CPlayer_AcceptSSA_Response) Descriptor() ([]byte, []int) { return player_fileDescriptor0, []int{5} }
|
||||
|
||||
type CPlayer_LastPlayedTimes_Notification struct {
|
||||
Games []*CPlayer_GetLastPlayedTimes_Response_Game `protobuf:"bytes,1,rep,name=games" json:"games,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayer_LastPlayedTimes_Notification) Reset() { *m = CPlayer_LastPlayedTimes_Notification{} }
|
||||
func (m *CPlayer_LastPlayedTimes_Notification) String() string { return proto.CompactTextString(m) }
|
||||
func (*CPlayer_LastPlayedTimes_Notification) ProtoMessage() {}
|
||||
func (*CPlayer_LastPlayedTimes_Notification) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{6}
|
||||
}
|
||||
|
||||
func (m *CPlayer_LastPlayedTimes_Notification) GetGames() []*CPlayer_GetLastPlayedTimes_Response_Game {
|
||||
if m != nil {
|
||||
return m.Games
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CPlayerClient_GetSystemInformation_Request struct {
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayerClient_GetSystemInformation_Request) Reset() {
|
||||
*m = CPlayerClient_GetSystemInformation_Request{}
|
||||
}
|
||||
func (m *CPlayerClient_GetSystemInformation_Request) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CPlayerClient_GetSystemInformation_Request) ProtoMessage() {}
|
||||
func (*CPlayerClient_GetSystemInformation_Request) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{7}
|
||||
}
|
||||
|
||||
type CClientSystemInfo struct {
|
||||
Cpu *CClientSystemInfo_CPU `protobuf:"bytes,1,opt,name=cpu" json:"cpu,omitempty"`
|
||||
VideoCard *CClientSystemInfo_VideoCard `protobuf:"bytes,2,opt,name=video_card" json:"video_card,omitempty"`
|
||||
OperatingSystem *string `protobuf:"bytes,3,opt,name=operating_system" json:"operating_system,omitempty"`
|
||||
Os_64Bit *bool `protobuf:"varint,4,opt,name=os_64bit" json:"os_64bit,omitempty"`
|
||||
SystemRamMb *int32 `protobuf:"varint,5,opt,name=system_ram_mb" json:"system_ram_mb,omitempty"`
|
||||
AudioDevice *string `protobuf:"bytes,6,opt,name=audio_device" json:"audio_device,omitempty"`
|
||||
AudioDriverVersion *string `protobuf:"bytes,7,opt,name=audio_driver_version" json:"audio_driver_version,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) Reset() { *m = CClientSystemInfo{} }
|
||||
func (m *CClientSystemInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*CClientSystemInfo) ProtoMessage() {}
|
||||
func (*CClientSystemInfo) Descriptor() ([]byte, []int) { return player_fileDescriptor0, []int{8} }
|
||||
|
||||
func (m *CClientSystemInfo) GetCpu() *CClientSystemInfo_CPU {
|
||||
if m != nil {
|
||||
return m.Cpu
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetVideoCard() *CClientSystemInfo_VideoCard {
|
||||
if m != nil {
|
||||
return m.VideoCard
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetOperatingSystem() string {
|
||||
if m != nil && m.OperatingSystem != nil {
|
||||
return *m.OperatingSystem
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetOs_64Bit() bool {
|
||||
if m != nil && m.Os_64Bit != nil {
|
||||
return *m.Os_64Bit
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetSystemRamMb() int32 {
|
||||
if m != nil && m.SystemRamMb != nil {
|
||||
return *m.SystemRamMb
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetAudioDevice() string {
|
||||
if m != nil && m.AudioDevice != nil {
|
||||
return *m.AudioDevice
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo) GetAudioDriverVersion() string {
|
||||
if m != nil && m.AudioDriverVersion != nil {
|
||||
return *m.AudioDriverVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CClientSystemInfo_CPU struct {
|
||||
SpeedMhz *int32 `protobuf:"varint,1,opt,name=speed_mhz" json:"speed_mhz,omitempty"`
|
||||
Vendor *string `protobuf:"bytes,2,opt,name=vendor" json:"vendor,omitempty"`
|
||||
LogicalProcessors *int32 `protobuf:"varint,3,opt,name=logical_processors" json:"logical_processors,omitempty"`
|
||||
PhysicalProcessors *int32 `protobuf:"varint,4,opt,name=physical_processors" json:"physical_processors,omitempty"`
|
||||
Hyperthreading *bool `protobuf:"varint,5,opt,name=hyperthreading" json:"hyperthreading,omitempty"`
|
||||
Fcmov *bool `protobuf:"varint,6,opt,name=fcmov" json:"fcmov,omitempty"`
|
||||
Sse2 *bool `protobuf:"varint,7,opt,name=sse2" json:"sse2,omitempty"`
|
||||
Sse3 *bool `protobuf:"varint,8,opt,name=sse3" json:"sse3,omitempty"`
|
||||
Ssse3 *bool `protobuf:"varint,9,opt,name=ssse3" json:"ssse3,omitempty"`
|
||||
Sse4A *bool `protobuf:"varint,10,opt,name=sse4a" json:"sse4a,omitempty"`
|
||||
Sse41 *bool `protobuf:"varint,11,opt,name=sse41" json:"sse41,omitempty"`
|
||||
Sse42 *bool `protobuf:"varint,12,opt,name=sse42" json:"sse42,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) Reset() { *m = CClientSystemInfo_CPU{} }
|
||||
func (m *CClientSystemInfo_CPU) String() string { return proto.CompactTextString(m) }
|
||||
func (*CClientSystemInfo_CPU) ProtoMessage() {}
|
||||
func (*CClientSystemInfo_CPU) Descriptor() ([]byte, []int) { return player_fileDescriptor0, []int{8, 0} }
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSpeedMhz() int32 {
|
||||
if m != nil && m.SpeedMhz != nil {
|
||||
return *m.SpeedMhz
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetVendor() string {
|
||||
if m != nil && m.Vendor != nil {
|
||||
return *m.Vendor
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetLogicalProcessors() int32 {
|
||||
if m != nil && m.LogicalProcessors != nil {
|
||||
return *m.LogicalProcessors
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetPhysicalProcessors() int32 {
|
||||
if m != nil && m.PhysicalProcessors != nil {
|
||||
return *m.PhysicalProcessors
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetHyperthreading() bool {
|
||||
if m != nil && m.Hyperthreading != nil {
|
||||
return *m.Hyperthreading
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetFcmov() bool {
|
||||
if m != nil && m.Fcmov != nil {
|
||||
return *m.Fcmov
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSse2() bool {
|
||||
if m != nil && m.Sse2 != nil {
|
||||
return *m.Sse2
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSse3() bool {
|
||||
if m != nil && m.Sse3 != nil {
|
||||
return *m.Sse3
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSsse3() bool {
|
||||
if m != nil && m.Ssse3 != nil {
|
||||
return *m.Ssse3
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSse4A() bool {
|
||||
if m != nil && m.Sse4A != nil {
|
||||
return *m.Sse4A
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSse41() bool {
|
||||
if m != nil && m.Sse41 != nil {
|
||||
return *m.Sse41
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_CPU) GetSse42() bool {
|
||||
if m != nil && m.Sse42 != nil {
|
||||
return *m.Sse42
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type CClientSystemInfo_VideoCard struct {
|
||||
Driver *string `protobuf:"bytes,1,opt,name=driver" json:"driver,omitempty"`
|
||||
DriverVersion *string `protobuf:"bytes,2,opt,name=driver_version" json:"driver_version,omitempty"`
|
||||
DriverDate *uint32 `protobuf:"varint,3,opt,name=driver_date" json:"driver_date,omitempty"`
|
||||
DirectxVersion *string `protobuf:"bytes,4,opt,name=directx_version" json:"directx_version,omitempty"`
|
||||
OpenglVersion *string `protobuf:"bytes,5,opt,name=opengl_version" json:"opengl_version,omitempty"`
|
||||
Vendorid *int32 `protobuf:"varint,6,opt,name=vendorid" json:"vendorid,omitempty"`
|
||||
Deviceid *int32 `protobuf:"varint,7,opt,name=deviceid" json:"deviceid,omitempty"`
|
||||
VramMb *int32 `protobuf:"varint,8,opt,name=vram_mb" json:"vram_mb,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) Reset() { *m = CClientSystemInfo_VideoCard{} }
|
||||
func (m *CClientSystemInfo_VideoCard) String() string { return proto.CompactTextString(m) }
|
||||
func (*CClientSystemInfo_VideoCard) ProtoMessage() {}
|
||||
func (*CClientSystemInfo_VideoCard) Descriptor() ([]byte, []int) { return player_fileDescriptor0, []int{8, 1} }
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetDriver() string {
|
||||
if m != nil && m.Driver != nil {
|
||||
return *m.Driver
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetDriverVersion() string {
|
||||
if m != nil && m.DriverVersion != nil {
|
||||
return *m.DriverVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetDriverDate() uint32 {
|
||||
if m != nil && m.DriverDate != nil {
|
||||
return *m.DriverDate
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetDirectxVersion() string {
|
||||
if m != nil && m.DirectxVersion != nil {
|
||||
return *m.DirectxVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetOpenglVersion() string {
|
||||
if m != nil && m.OpenglVersion != nil {
|
||||
return *m.OpenglVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetVendorid() int32 {
|
||||
if m != nil && m.Vendorid != nil {
|
||||
return *m.Vendorid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetDeviceid() int32 {
|
||||
if m != nil && m.Deviceid != nil {
|
||||
return *m.Deviceid
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *CClientSystemInfo_VideoCard) GetVramMb() int32 {
|
||||
if m != nil && m.VramMb != nil {
|
||||
return *m.VramMb
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type CPlayerClient_GetSystemInformation_Response struct {
|
||||
SystemInfo *CClientSystemInfo `protobuf:"bytes,1,opt,name=system_info" json:"system_info,omitempty"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
}
|
||||
|
||||
func (m *CPlayerClient_GetSystemInformation_Response) Reset() {
|
||||
*m = CPlayerClient_GetSystemInformation_Response{}
|
||||
}
|
||||
func (m *CPlayerClient_GetSystemInformation_Response) String() string {
|
||||
return proto.CompactTextString(m)
|
||||
}
|
||||
func (*CPlayerClient_GetSystemInformation_Response) ProtoMessage() {}
|
||||
func (*CPlayerClient_GetSystemInformation_Response) Descriptor() ([]byte, []int) {
|
||||
return player_fileDescriptor0, []int{9}
|
||||
}
|
||||
|
||||
func (m *CPlayerClient_GetSystemInformation_Response) GetSystemInfo() *CClientSystemInfo {
|
||||
if m != nil {
|
||||
return m.SystemInfo
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*CPlayer_GetGameBadgeLevels_Request)(nil), "CPlayer_GetGameBadgeLevels_Request")
|
||||
proto.RegisterType((*CPlayer_GetGameBadgeLevels_Response)(nil), "CPlayer_GetGameBadgeLevels_Response")
|
||||
proto.RegisterType((*CPlayer_GetGameBadgeLevels_Response_Badge)(nil), "CPlayer_GetGameBadgeLevels_Response.Badge")
|
||||
proto.RegisterType((*CPlayer_GetLastPlayedTimes_Request)(nil), "CPlayer_GetLastPlayedTimes_Request")
|
||||
proto.RegisterType((*CPlayer_GetLastPlayedTimes_Response)(nil), "CPlayer_GetLastPlayedTimes_Response")
|
||||
proto.RegisterType((*CPlayer_GetLastPlayedTimes_Response_Game)(nil), "CPlayer_GetLastPlayedTimes_Response.Game")
|
||||
proto.RegisterType((*CPlayer_AcceptSSA_Request)(nil), "CPlayer_AcceptSSA_Request")
|
||||
proto.RegisterType((*CPlayer_AcceptSSA_Response)(nil), "CPlayer_AcceptSSA_Response")
|
||||
proto.RegisterType((*CPlayer_LastPlayedTimes_Notification)(nil), "CPlayer_LastPlayedTimes_Notification")
|
||||
proto.RegisterType((*CPlayerClient_GetSystemInformation_Request)(nil), "CPlayerClient_GetSystemInformation_Request")
|
||||
proto.RegisterType((*CClientSystemInfo)(nil), "CClientSystemInfo")
|
||||
proto.RegisterType((*CClientSystemInfo_CPU)(nil), "CClientSystemInfo.CPU")
|
||||
proto.RegisterType((*CClientSystemInfo_VideoCard)(nil), "CClientSystemInfo.VideoCard")
|
||||
proto.RegisterType((*CPlayerClient_GetSystemInformation_Response)(nil), "CPlayerClient_GetSystemInformation_Response")
|
||||
}
|
||||
|
||||
var player_fileDescriptor0 = []byte{
|
||||
// 1067 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x55, 0x4d, 0x6f, 0xdb, 0x46,
|
||||
0x10, 0x05, 0x2d, 0xcb, 0x96, 0x46, 0x76, 0x9c, 0x6c, 0x9c, 0x94, 0xa1, 0x5d, 0x60, 0x41, 0xa7,
|
||||
0xf9, 0x70, 0x1c, 0xa2, 0x55, 0x82, 0xa2, 0x68, 0x0b, 0x04, 0xb6, 0x0f, 0x41, 0x01, 0x23, 0x48,
|
||||
0xe3, 0x38, 0xa7, 0x02, 0xec, 0x8a, 0x5c, 0xc9, 0x44, 0x48, 0xae, 0xca, 0x5d, 0x29, 0x55, 0x4f,
|
||||
0x45, 0xce, 0xbd, 0x15, 0xfd, 0x1b, 0xbd, 0xb9, 0xe7, 0x00, 0xfd, 0x23, 0xfd, 0x03, 0x3d, 0xf6,
|
||||
0xde, 0xd9, 0x5d, 0x52, 0x1f, 0x96, 0x9d, 0xaa, 0x39, 0x18, 0xd6, 0xee, 0xbc, 0x1d, 0xbe, 0x79,
|
||||
0x3b, 0xf3, 0x16, 0xee, 0x48, 0xc5, 0x59, 0x96, 0x71, 0x29, 0x59, 0x8f, 0xcb, 0xb0, 0x9f, 0xb2,
|
||||
0x11, 0x2f, 0x02, 0xb3, 0x19, 0xa5, 0x09, 0xcf, 0x55, 0xd0, 0x2f, 0x84, 0x12, 0xde, 0xde, 0x2c,
|
||||
0x6e, 0x90, 0x27, 0xdd, 0x84, 0xc7, 0x61, 0x87, 0x49, 0x3e, 0x8f, 0xf6, 0x1f, 0x81, 0x7f, 0xf8,
|
||||
0xdc, 0xa4, 0x0a, 0x9f, 0x72, 0xf5, 0x94, 0x65, 0xfc, 0x80, 0xc5, 0x3d, 0x7e, 0xc4, 0x87, 0x3c,
|
||||
0x95, 0xe1, 0x0b, 0xfe, 0xc3, 0x80, 0x4b, 0x45, 0xd6, 0xa1, 0xce, 0xfa, 0xfd, 0x24, 0x76, 0x1d,
|
||||
0xea, 0xdc, 0x5b, 0xf7, 0xcf, 0x1c, 0xd8, 0x79, 0xef, 0x29, 0xd9, 0x17, 0xb9, 0xe4, 0x64, 0x13,
|
||||
0xd6, 0x2c, 0xcd, 0x30, 0xd5, 0x11, 0x7b, 0x9a, 0x7c, 0x09, 0x2b, 0x1d, 0x8d, 0x96, 0xee, 0x12,
|
||||
0xad, 0xdd, 0x6b, 0xb5, 0x77, 0x83, 0x05, 0x72, 0x05, 0x66, 0xd3, 0xfb, 0x1a, 0xea, 0xe6, 0x87,
|
||||
0x66, 0x34, 0xc9, 0x59, 0x27, 0x57, 0x60, 0x45, 0xf2, 0x22, 0x31, 0x39, 0xf5, 0x1a, 0xbf, 0xdc,
|
||||
0x11, 0x45, 0x8c, 0x39, 0x23, 0x91, 0x8a, 0xc2, 0xad, 0x19, 0xde, 0x6f, 0x9d, 0x99, 0x6a, 0x8f,
|
||||
0x98, 0x54, 0x66, 0x15, 0xbf, 0x4c, 0x50, 0xaf, 0x71, 0xb5, 0xdf, 0xc1, 0x46, 0x96, 0xe4, 0x61,
|
||||
0x8a, 0x61, 0x2b, 0x73, 0x59, 0xf7, 0xc1, 0xe1, 0xdb, 0x33, 0xf7, 0xc9, 0xcb, 0x53, 0x4e, 0x33,
|
||||
0x21, 0x15, 0x2d, 0x78, 0x84, 0x3a, 0x52, 0x0d, 0x7b, 0x68, 0x61, 0x54, 0x61, 0x1e, 0xaa, 0x10,
|
||||
0x60, 0x35, 0xa6, 0x2c, 0x2d, 0x38, 0x8b, 0x47, 0xf4, 0x75, 0x2e, 0xde, 0x48, 0xca, 0x3a, 0x62,
|
||||
0xa0, 0xfc, 0x77, 0xb3, 0xe2, 0xcd, 0x93, 0x28, 0xc5, 0xfb, 0x02, 0xea, 0x3d, 0x14, 0x43, 0xe2,
|
||||
0xb7, 0xb5, 0x4a, 0xf7, 0x83, 0x05, 0x0e, 0x05, 0x5a, 0x3e, 0x2f, 0x84, 0x65, 0xfd, 0x7f, 0xf6,
|
||||
0xd6, 0xea, 0xe4, 0x06, 0xac, 0x8f, 0x4b, 0xd2, 0x44, 0x8d, 0x54, 0xeb, 0xe4, 0x23, 0xd8, 0xa8,
|
||||
0x76, 0xc2, 0xf6, 0x1b, 0xce, 0x5f, 0x4b, 0xa3, 0x56, 0x9d, 0xb8, 0x70, 0x75, 0x1c, 0xe8, 0x8a,
|
||||
0x02, 0xd5, 0x2e, 0xdc, 0x65, 0x1d, 0xf1, 0xb7, 0xe0, 0x56, 0x45, 0x66, 0x3f, 0x8a, 0x78, 0x5f,
|
||||
0x1d, 0x1f, 0xef, 0x57, 0xea, 0xf9, 0xdb, 0xe0, 0x5d, 0x14, 0xb4, 0x04, 0xfd, 0xef, 0xe1, 0x76,
|
||||
0x15, 0x3d, 0x5f, 0xc4, 0x33, 0xa1, 0xb0, 0x55, 0x23, 0xa6, 0x12, 0x91, 0x7f, 0x78, 0xf5, 0xfe,
|
||||
0x1e, 0xec, 0x96, 0xd8, 0x43, 0x73, 0x09, 0xfa, 0xc4, 0xf1, 0x08, 0x3b, 0x3f, 0xfb, 0x26, 0xc7,
|
||||
0x32, 0x32, 0x93, 0x7f, 0xcc, 0xf6, 0x9f, 0x65, 0xb8, 0x76, 0x68, 0x81, 0x13, 0x10, 0xd9, 0x81,
|
||||
0x5a, 0xd4, 0x1f, 0x18, 0xdd, 0x5a, 0xed, 0x9b, 0xc1, 0x1c, 0x00, 0xd9, 0x9c, 0x90, 0x4f, 0x01,
|
||||
0x86, 0x49, 0xcc, 0x45, 0x18, 0xb1, 0x22, 0x36, 0x62, 0xb6, 0xda, 0xdb, 0x17, 0x60, 0x5f, 0x69,
|
||||
0xd0, 0x21, 0x62, 0xb4, 0xa2, 0xa2, 0xcf, 0x0b, 0x64, 0x90, 0xf7, 0x42, 0x69, 0x10, 0x46, 0xeb,
|
||||
0x26, 0xb9, 0x0a, 0x0d, 0x21, 0xc3, 0xcf, 0x1f, 0x77, 0x12, 0x65, 0x34, 0x6e, 0xe8, 0xdb, 0xb2,
|
||||
0x88, 0xb0, 0x60, 0x59, 0x98, 0x75, 0xdc, 0x7a, 0xd5, 0xd8, 0x6c, 0x10, 0x27, 0x22, 0x8c, 0xf9,
|
||||
0x30, 0x89, 0xb8, 0xbb, 0x62, 0x8e, 0x6f, 0xc3, 0x66, 0xb9, 0x5b, 0x24, 0x78, 0x4d, 0x21, 0xfe,
|
||||
0x49, 0xac, 0xd2, 0x5d, 0xd5, 0x51, 0xef, 0x2f, 0x07, 0x6a, 0x9a, 0xf0, 0x35, 0x68, 0xca, 0x3e,
|
||||
0x47, 0x2f, 0xc8, 0x4e, 0x7f, 0x9a, 0xcc, 0xcd, 0x90, 0xe7, 0x31, 0x4e, 0xc8, 0x92, 0x49, 0xe4,
|
||||
0x01, 0x49, 0x45, 0x0f, 0x2f, 0x21, 0x0d, 0xd1, 0x1f, 0x22, 0x34, 0x11, 0x51, 0x54, 0xfd, 0xb0,
|
||||
0x05, 0xd7, 0xfb, 0xa7, 0x23, 0x79, 0x3e, 0x68, 0x5a, 0x82, 0xdc, 0x84, 0x2b, 0xa7, 0x23, 0xac,
|
||||
0x4d, 0x9d, 0xea, 0x8e, 0xc7, 0xfa, 0x0c, 0xdf, 0x86, 0xee, 0xc1, 0x6e, 0x94, 0x89, 0xa1, 0x21,
|
||||
0xda, 0x20, 0x6b, 0xb0, 0x2c, 0x25, 0x6f, 0x1b, 0x62, 0xd5, 0xea, 0x91, 0xdb, 0xa8, 0xa0, 0xd2,
|
||||
0x2c, 0x9b, 0x93, 0x25, 0x7f, 0xcc, 0x5c, 0x98, 0x5e, 0x7e, 0xe6, 0xb6, 0xa6, 0x97, 0x6d, 0x77,
|
||||
0x4d, 0x2f, 0xbd, 0xdf, 0x1d, 0x68, 0x4e, 0x74, 0xc6, 0xaa, 0xac, 0x10, 0xa6, 0xca, 0xa6, 0x26,
|
||||
0x77, 0x4e, 0x18, 0x5b, 0xed, 0x75, 0x68, 0x95, 0xfb, 0x31, 0x53, 0xdc, 0x9a, 0x84, 0x9e, 0x87,
|
||||
0x38, 0xc1, 0xd9, 0x56, 0x3f, 0x8e, 0xd1, 0xcb, 0x55, 0x16, 0xbc, 0xbd, 0xbc, 0x97, 0x8e, 0xf7,
|
||||
0xeb, 0xd5, 0xdd, 0x59, 0x0d, 0x71, 0xd2, 0x56, 0x8c, 0x18, 0xb8, 0x63, 0xaf, 0x07, 0x77, 0x56,
|
||||
0xcd, 0xce, 0x06, 0xac, 0x0e, 0xcb, 0x7b, 0x6c, 0x98, 0x11, 0x7a, 0x05, 0x0f, 0x16, 0xea, 0xd2,
|
||||
0xd2, 0x0c, 0xee, 0x42, 0xab, 0xec, 0x86, 0x04, 0xc3, 0x65, 0x63, 0x92, 0xf9, 0x66, 0x6b, 0xff,
|
||||
0x5d, 0x83, 0x15, 0x9b, 0x97, 0xfc, 0xe1, 0x00, 0x99, 0x77, 0x54, 0xb2, 0x13, 0xfc, 0xb7, 0xe1,
|
||||
0x7b, 0xb7, 0x17, 0xf1, 0x64, 0xff, 0x04, 0xfd, 0xf0, 0xdb, 0x17, 0x5c, 0x0d, 0x8a, 0x5c, 0x1a,
|
||||
0xdb, 0x3b, 0xd6, 0xef, 0x0b, 0x35, 0x30, 0x2a, 0xba, 0x94, 0xd1, 0x01, 0xba, 0xf2, 0x9e, 0x09,
|
||||
0x99, 0x04, 0xd4, 0x78, 0x36, 0xc5, 0x02, 0xcd, 0x9e, 0x9e, 0xf0, 0x3d, 0xca, 0xf2, 0x98, 0x26,
|
||||
0x5d, 0x9a, 0xa8, 0xbb, 0x12, 0x23, 0x49, 0x4a, 0x7e, 0x73, 0xc0, 0xb5, 0x85, 0xcd, 0x0f, 0xfb,
|
||||
0x2c, 0xfd, 0x4b, 0x1c, 0x7c, 0x96, 0xfe, 0x65, 0x76, 0xe1, 0x07, 0x48, 0x7f, 0x17, 0x01, 0x96,
|
||||
0xfb, 0x79, 0x1f, 0x97, 0x63, 0x9a, 0x2c, 0x8a, 0xc4, 0x20, 0x57, 0x24, 0x82, 0xe6, 0xd8, 0xd1,
|
||||
0x88, 0x17, 0x5c, 0x6a, 0x81, 0xde, 0x56, 0xf0, 0x1e, 0x07, 0xfc, 0x18, 0xbf, 0x7a, 0xeb, 0x04,
|
||||
0x75, 0xa1, 0x89, 0xd4, 0xa9, 0x31, 0x8e, 0xe3, 0x62, 0xe5, 0x3b, 0xde, 0xf7, 0x1e, 0x62, 0xf8,
|
||||
0xfe, 0x3e, 0xc5, 0xb8, 0x6e, 0x20, 0xc3, 0x41, 0x83, 0xa4, 0xd4, 0x20, 0xab, 0xaf, 0x7d, 0x53,
|
||||
0x29, 0xf6, 0x2c, 0x6b, 0xff, 0x5a, 0x83, 0xb5, 0xe9, 0x3e, 0x22, 0xbf, 0x38, 0x70, 0xc3, 0x38,
|
||||
0xe9, 0xe8, 0xbc, 0x72, 0x9f, 0x04, 0x8b, 0x38, 0xaf, 0xd7, 0x0a, 0x9e, 0x89, 0x31, 0xd9, 0x27,
|
||||
0xc8, 0xe6, 0xab, 0xe9, 0x30, 0xed, 0x16, 0x22, 0x33, 0xec, 0x90, 0x81, 0x12, 0xd5, 0x43, 0x87,
|
||||
0x97, 0x9d, 0xe1, 0x13, 0x51, 0xbd, 0x89, 0x9a, 0xa1, 0x11, 0x91, 0xfc, 0xe9, 0xc0, 0xe6, 0x45,
|
||||
0xad, 0x4d, 0x1e, 0x04, 0x8b, 0xbb, 0xb4, 0xb7, 0x17, 0xfc, 0x8f, 0x61, 0xf1, 0x9f, 0x23, 0xe9,
|
||||
0xa3, 0xf2, 0xa8, 0xe5, 0xab, 0xc5, 0x9d, 0x70, 0x9e, 0x7a, 0xa0, 0xb5, 0xbc, 0xc9, 0x24, 0x87,
|
||||
0x7d, 0xa2, 0x0d, 0x40, 0x77, 0xae, 0xa4, 0x76, 0xe8, 0x3c, 0xdd, 0x29, 0x77, 0xe6, 0xc4, 0xaf,
|
||||
0x92, 0xe4, 0x53, 0xfa, 0xc8, 0x77, 0x67, 0xee, 0xd2, 0x41, 0xed, 0x67, 0xc7, 0xf9, 0x37, 0x00,
|
||||
0x00, 0xff, 0xff, 0x9e, 0xe2, 0xe2, 0x67, 0xb1, 0x09, 0x00, 0x00,
|
||||
}
|
2702
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/publishedfile.pb.go
generated
vendored
2702
vendor/github.com/Philipp15b/go-steam/protocol/protobuf/unified/publishedfile.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
@ -1,51 +0,0 @@
|
||||
package protocol
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"io"
|
||||
)
|
||||
|
||||
type MsgGCSetItemPosition struct {
|
||||
AssetId, Position uint64
|
||||
}
|
||||
|
||||
func (m *MsgGCSetItemPosition) Serialize(w io.Writer) error {
|
||||
return binary.Write(w, binary.LittleEndian, m)
|
||||
}
|
||||
|
||||
type MsgGCCraft struct {
|
||||
Recipe int16 // -2 = wildcard
|
||||
numItems int16
|
||||
Items []uint64
|
||||
}
|
||||
|
||||
func (m *MsgGCCraft) Serialize(w io.Writer) error {
|
||||
m.numItems = int16(len(m.Items))
|
||||
return binary.Write(w, binary.LittleEndian, m)
|
||||
}
|
||||
|
||||
type MsgGCDeleteItem struct {
|
||||
ItemId uint64
|
||||
}
|
||||
|
||||
func (m *MsgGCDeleteItem) Serialize(w io.Writer) error {
|
||||
return binary.Write(w, binary.LittleEndian, m.ItemId)
|
||||
}
|
||||
|
||||
type MsgGCNameItem struct {
|
||||
Tool, Target uint64
|
||||
Name string
|
||||
}
|
||||
|
||||
func (m *MsgGCNameItem) Serialize(w io.Writer) error {
|
||||
err := binary.Write(w, binary.LittleEndian, m.Tool)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = binary.Write(w, binary.LittleEndian, m.Target)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = w.Write([]byte(m.Name))
|
||||
return err
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,545 +0,0 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// source: gcsystemmsgs.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package protobuf
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
type EGCSystemMsg int32
|
||||
|
||||
const (
|
||||
EGCSystemMsg_k_EGCMsgInvalid EGCSystemMsg = 0
|
||||
EGCSystemMsg_k_EGCMsgMulti EGCSystemMsg = 1
|
||||
EGCSystemMsg_k_EGCMsgGenericReply EGCSystemMsg = 10
|
||||
EGCSystemMsg_k_EGCMsgSystemBase EGCSystemMsg = 50
|
||||
EGCSystemMsg_k_EGCMsgAchievementAwarded EGCSystemMsg = 51
|
||||
EGCSystemMsg_k_EGCMsgConCommand EGCSystemMsg = 52
|
||||
EGCSystemMsg_k_EGCMsgStartPlaying EGCSystemMsg = 53
|
||||
EGCSystemMsg_k_EGCMsgStopPlaying EGCSystemMsg = 54
|
||||
EGCSystemMsg_k_EGCMsgStartGameserver EGCSystemMsg = 55
|
||||
EGCSystemMsg_k_EGCMsgStopGameserver EGCSystemMsg = 56
|
||||
EGCSystemMsg_k_EGCMsgWGRequest EGCSystemMsg = 57
|
||||
EGCSystemMsg_k_EGCMsgWGResponse EGCSystemMsg = 58
|
||||
EGCSystemMsg_k_EGCMsgGetUserGameStatsSchema EGCSystemMsg = 59
|
||||
EGCSystemMsg_k_EGCMsgGetUserGameStatsSchemaResponse EGCSystemMsg = 60
|
||||
EGCSystemMsg_k_EGCMsgGetUserStatsDEPRECATED EGCSystemMsg = 61
|
||||
EGCSystemMsg_k_EGCMsgGetUserStatsResponse EGCSystemMsg = 62
|
||||
EGCSystemMsg_k_EGCMsgAppInfoUpdated EGCSystemMsg = 63
|
||||
EGCSystemMsg_k_EGCMsgValidateSession EGCSystemMsg = 64
|
||||
EGCSystemMsg_k_EGCMsgValidateSessionResponse EGCSystemMsg = 65
|
||||
EGCSystemMsg_k_EGCMsgLookupAccountFromInput EGCSystemMsg = 66
|
||||
EGCSystemMsg_k_EGCMsgSendHTTPRequest EGCSystemMsg = 67
|
||||
EGCSystemMsg_k_EGCMsgSendHTTPRequestResponse EGCSystemMsg = 68
|
||||
EGCSystemMsg_k_EGCMsgPreTestSetup EGCSystemMsg = 69
|
||||
EGCSystemMsg_k_EGCMsgRecordSupportAction EGCSystemMsg = 70
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetails_DEPRECATED EGCSystemMsg = 71
|
||||
EGCSystemMsg_k_EGCMsgReceiveInterAppMessage EGCSystemMsg = 73
|
||||
EGCSystemMsg_k_EGCMsgFindAccounts EGCSystemMsg = 74
|
||||
EGCSystemMsg_k_EGCMsgPostAlert EGCSystemMsg = 75
|
||||
EGCSystemMsg_k_EGCMsgGetLicenses EGCSystemMsg = 76
|
||||
EGCSystemMsg_k_EGCMsgGetUserStats EGCSystemMsg = 77
|
||||
EGCSystemMsg_k_EGCMsgGetCommands EGCSystemMsg = 78
|
||||
EGCSystemMsg_k_EGCMsgGetCommandsResponse EGCSystemMsg = 79
|
||||
EGCSystemMsg_k_EGCMsgAddFreeLicense EGCSystemMsg = 80
|
||||
EGCSystemMsg_k_EGCMsgAddFreeLicenseResponse EGCSystemMsg = 81
|
||||
EGCSystemMsg_k_EGCMsgGetIPLocation EGCSystemMsg = 82
|
||||
EGCSystemMsg_k_EGCMsgGetIPLocationResponse EGCSystemMsg = 83
|
||||
EGCSystemMsg_k_EGCMsgSystemStatsSchema EGCSystemMsg = 84
|
||||
EGCSystemMsg_k_EGCMsgGetSystemStats EGCSystemMsg = 85
|
||||
EGCSystemMsg_k_EGCMsgGetSystemStatsResponse EGCSystemMsg = 86
|
||||
EGCSystemMsg_k_EGCMsgSendEmail EGCSystemMsg = 87
|
||||
EGCSystemMsg_k_EGCMsgSendEmailResponse EGCSystemMsg = 88
|
||||
EGCSystemMsg_k_EGCMsgGetEmailTemplate EGCSystemMsg = 89
|
||||
EGCSystemMsg_k_EGCMsgGetEmailTemplateResponse EGCSystemMsg = 90
|
||||
EGCSystemMsg_k_EGCMsgGrantGuestPass EGCSystemMsg = 91
|
||||
EGCSystemMsg_k_EGCMsgGrantGuestPassResponse EGCSystemMsg = 92
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetails EGCSystemMsg = 93
|
||||
EGCSystemMsg_k_EGCMsgGetAccountDetailsResponse EGCSystemMsg = 94
|
||||
EGCSystemMsg_k_EGCMsgGetPersonaNames EGCSystemMsg = 95
|
||||
EGCSystemMsg_k_EGCMsgGetPersonaNamesResponse EGCSystemMsg = 96
|
||||
EGCSystemMsg_k_EGCMsgMultiplexMsg EGCSystemMsg = 97
|
||||
EGCSystemMsg_k_EGCMsgWebAPIRegisterInterfaces EGCSystemMsg = 101
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequest EGCSystemMsg = 102
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequestHttpResponse EGCSystemMsg = 104
|
||||
EGCSystemMsg_k_EGCMsgWebAPIJobRequestForwardResponse EGCSystemMsg = 105
|
||||
EGCSystemMsg_k_EGCMsgMemCachedGet EGCSystemMsg = 200
|
||||
EGCSystemMsg_k_EGCMsgMemCachedGetResponse EGCSystemMsg = 201
|
||||
EGCSystemMsg_k_EGCMsgMemCachedSet EGCSystemMsg = 202
|
||||
EGCSystemMsg_k_EGCMsgMemCachedDelete EGCSystemMsg = 203
|
||||
EGCSystemMsg_k_EGCMsgMemCachedStats EGCSystemMsg = 204
|
||||
EGCSystemMsg_k_EGCMsgMemCachedStatsResponse EGCSystemMsg = 205
|
||||
EGCSystemMsg_k_EGCMsgSQLStats EGCSystemMsg = 210
|
||||
EGCSystemMsg_k_EGCMsgSQLStatsResponse EGCSystemMsg = 211
|
||||
EGCSystemMsg_k_EGCMsgMasterSetDirectory EGCSystemMsg = 220
|
||||
EGCSystemMsg_k_EGCMsgMasterSetDirectoryResponse EGCSystemMsg = 221
|
||||
EGCSystemMsg_k_EGCMsgMasterSetWebAPIRouting EGCSystemMsg = 222
|
||||
EGCSystemMsg_k_EGCMsgMasterSetWebAPIRoutingResponse EGCSystemMsg = 223
|
||||
EGCSystemMsg_k_EGCMsgMasterSetClientMsgRouting EGCSystemMsg = 224
|
||||
EGCSystemMsg_k_EGCMsgMasterSetClientMsgRoutingResponse EGCSystemMsg = 225
|
||||
EGCSystemMsg_k_EGCMsgSetOptions EGCSystemMsg = 226
|
||||
EGCSystemMsg_k_EGCMsgSetOptionsResponse EGCSystemMsg = 227
|
||||
EGCSystemMsg_k_EGCMsgSystemBase2 EGCSystemMsg = 500
|
||||
EGCSystemMsg_k_EGCMsgGetPurchaseTrustStatus EGCSystemMsg = 501
|
||||
EGCSystemMsg_k_EGCMsgGetPurchaseTrustStatusResponse EGCSystemMsg = 502
|
||||
EGCSystemMsg_k_EGCMsgUpdateSession EGCSystemMsg = 503
|
||||
EGCSystemMsg_k_EGCMsgGCAccountVacStatusChange EGCSystemMsg = 504
|
||||
EGCSystemMsg_k_EGCMsgCheckFriendship EGCSystemMsg = 505
|
||||
EGCSystemMsg_k_EGCMsgCheckFriendshipResponse EGCSystemMsg = 506
|
||||
EGCSystemMsg_k_EGCMsgGetPartnerAccountLink EGCSystemMsg = 507
|
||||
EGCSystemMsg_k_EGCMsgGetPartnerAccountLinkResponse EGCSystemMsg = 508
|
||||
EGCSystemMsg_k_EGCMsgVSReportedSuspiciousActivity EGCSystemMsg = 509
|
||||
)
|
||||
|
||||
var EGCSystemMsg_name = map[int32]string{
|
||||
0: "k_EGCMsgInvalid",
|
||||
1: "k_EGCMsgMulti",
|
||||
10: "k_EGCMsgGenericReply",
|
||||
50: "k_EGCMsgSystemBase",
|
||||
51: "k_EGCMsgAchievementAwarded",
|
||||
52: "k_EGCMsgConCommand",
|
||||
53: "k_EGCMsgStartPlaying",
|
||||
54: "k_EGCMsgStopPlaying",
|
||||
55: "k_EGCMsgStartGameserver",
|
||||
56: "k_EGCMsgStopGameserver",
|
||||
57: "k_EGCMsgWGRequest",
|
||||
58: "k_EGCMsgWGResponse",
|
||||
59: "k_EGCMsgGetUserGameStatsSchema",
|
||||
60: "k_EGCMsgGetUserGameStatsSchemaResponse",
|
||||
61: "k_EGCMsgGetUserStatsDEPRECATED",
|
||||
62: "k_EGCMsgGetUserStatsResponse",
|
||||
63: "k_EGCMsgAppInfoUpdated",
|
||||
64: "k_EGCMsgValidateSession",
|
||||
65: "k_EGCMsgValidateSessionResponse",
|
||||
66: "k_EGCMsgLookupAccountFromInput",
|
||||
67: "k_EGCMsgSendHTTPRequest",
|
||||
68: "k_EGCMsgSendHTTPRequestResponse",
|
||||
69: "k_EGCMsgPreTestSetup",
|
||||
70: "k_EGCMsgRecordSupportAction",
|
||||
71: "k_EGCMsgGetAccountDetails_DEPRECATED",
|
||||
73: "k_EGCMsgReceiveInterAppMessage",
|
||||
74: "k_EGCMsgFindAccounts",
|
||||
75: "k_EGCMsgPostAlert",
|
||||
76: "k_EGCMsgGetLicenses",
|
||||
77: "k_EGCMsgGetUserStats",
|
||||
78: "k_EGCMsgGetCommands",
|
||||
79: "k_EGCMsgGetCommandsResponse",
|
||||
80: "k_EGCMsgAddFreeLicense",
|
||||
81: "k_EGCMsgAddFreeLicenseResponse",
|
||||
82: "k_EGCMsgGetIPLocation",
|
||||
83: "k_EGCMsgGetIPLocationResponse",
|
||||
84: "k_EGCMsgSystemStatsSchema",
|
||||
85: "k_EGCMsgGetSystemStats",
|
||||
86: "k_EGCMsgGetSystemStatsResponse",
|
||||
87: "k_EGCMsgSendEmail",
|
||||
88: "k_EGCMsgSendEmailResponse",
|
||||
89: "k_EGCMsgGetEmailTemplate",
|
||||
90: "k_EGCMsgGetEmailTemplateResponse",
|
||||
91: "k_EGCMsgGrantGuestPass",
|
||||
92: "k_EGCMsgGrantGuestPassResponse",
|
||||
93: "k_EGCMsgGetAccountDetails",
|
||||
94: "k_EGCMsgGetAccountDetailsResponse",
|
||||
95: "k_EGCMsgGetPersonaNames",
|
||||
96: "k_EGCMsgGetPersonaNamesResponse",
|
||||
97: "k_EGCMsgMultiplexMsg",
|
||||
101: "k_EGCMsgWebAPIRegisterInterfaces",
|
||||
102: "k_EGCMsgWebAPIJobRequest",
|
||||
104: "k_EGCMsgWebAPIJobRequestHttpResponse",
|
||||
105: "k_EGCMsgWebAPIJobRequestForwardResponse",
|
||||
200: "k_EGCMsgMemCachedGet",
|
||||
201: "k_EGCMsgMemCachedGetResponse",
|
||||
202: "k_EGCMsgMemCachedSet",
|
||||
203: "k_EGCMsgMemCachedDelete",
|
||||
204: "k_EGCMsgMemCachedStats",
|
||||
205: "k_EGCMsgMemCachedStatsResponse",
|
||||
210: "k_EGCMsgSQLStats",
|
||||
211: "k_EGCMsgSQLStatsResponse",
|
||||
220: "k_EGCMsgMasterSetDirectory",
|
||||
221: "k_EGCMsgMasterSetDirectoryResponse",
|
||||
222: "k_EGCMsgMasterSetWebAPIRouting",
|
||||
223: "k_EGCMsgMasterSetWebAPIRoutingResponse",
|
||||
224: "k_EGCMsgMasterSetClientMsgRouting",
|
||||
225: "k_EGCMsgMasterSetClientMsgRoutingResponse",
|
||||
226: "k_EGCMsgSetOptions",
|
||||
227: "k_EGCMsgSetOptionsResponse",
|
||||
500: "k_EGCMsgSystemBase2",
|
||||
501: "k_EGCMsgGetPurchaseTrustStatus",
|
||||
502: "k_EGCMsgGetPurchaseTrustStatusResponse",
|
||||
503: "k_EGCMsgUpdateSession",
|
||||
504: "k_EGCMsgGCAccountVacStatusChange",
|
||||
505: "k_EGCMsgCheckFriendship",
|
||||
506: "k_EGCMsgCheckFriendshipResponse",
|
||||
507: "k_EGCMsgGetPartnerAccountLink",
|
||||
508: "k_EGCMsgGetPartnerAccountLinkResponse",
|
||||
509: "k_EGCMsgVSReportedSuspiciousActivity",
|
||||
}
|
||||
var EGCSystemMsg_value = map[string]int32{
|
||||
"k_EGCMsgInvalid": 0,
|
||||
"k_EGCMsgMulti": 1,
|
||||
"k_EGCMsgGenericReply": 10,
|
||||
"k_EGCMsgSystemBase": 50,
|
||||
"k_EGCMsgAchievementAwarded": 51,
|
||||
"k_EGCMsgConCommand": 52,
|
||||
"k_EGCMsgStartPlaying": 53,
|
||||
"k_EGCMsgStopPlaying": 54,
|
||||
"k_EGCMsgStartGameserver": 55,
|
||||
"k_EGCMsgStopGameserver": 56,
|
||||
"k_EGCMsgWGRequest": 57,
|
||||
"k_EGCMsgWGResponse": 58,
|
||||
"k_EGCMsgGetUserGameStatsSchema": 59,
|
||||
"k_EGCMsgGetUserGameStatsSchemaResponse": 60,
|
||||
"k_EGCMsgGetUserStatsDEPRECATED": 61,
|
||||
"k_EGCMsgGetUserStatsResponse": 62,
|
||||
"k_EGCMsgAppInfoUpdated": 63,
|
||||
"k_EGCMsgValidateSession": 64,
|
||||
"k_EGCMsgValidateSessionResponse": 65,
|
||||
"k_EGCMsgLookupAccountFromInput": 66,
|
||||
"k_EGCMsgSendHTTPRequest": 67,
|
||||
"k_EGCMsgSendHTTPRequestResponse": 68,
|
||||
"k_EGCMsgPreTestSetup": 69,
|
||||
"k_EGCMsgRecordSupportAction": 70,
|
||||
"k_EGCMsgGetAccountDetails_DEPRECATED": 71,
|
||||
"k_EGCMsgReceiveInterAppMessage": 73,
|
||||
"k_EGCMsgFindAccounts": 74,
|
||||
"k_EGCMsgPostAlert": 75,
|
||||
"k_EGCMsgGetLicenses": 76,
|
||||
"k_EGCMsgGetUserStats": 77,
|
||||
"k_EGCMsgGetCommands": 78,
|
||||
"k_EGCMsgGetCommandsResponse": 79,
|
||||
"k_EGCMsgAddFreeLicense": 80,
|
||||
"k_EGCMsgAddFreeLicenseResponse": 81,
|
||||
"k_EGCMsgGetIPLocation": 82,
|
||||
"k_EGCMsgGetIPLocationResponse": 83,
|
||||
"k_EGCMsgSystemStatsSchema": 84,
|
||||
"k_EGCMsgGetSystemStats": 85,
|
||||
"k_EGCMsgGetSystemStatsResponse": 86,
|
||||
"k_EGCMsgSendEmail": 87,
|
||||
"k_EGCMsgSendEmailResponse": 88,
|
||||
"k_EGCMsgGetEmailTemplate": 89,
|
||||
"k_EGCMsgGetEmailTemplateResponse": 90,
|
||||
"k_EGCMsgGrantGuestPass": 91,
|
||||
"k_EGCMsgGrantGuestPassResponse": 92,
|
||||
"k_EGCMsgGetAccountDetails": 93,
|
||||
"k_EGCMsgGetAccountDetailsResponse": 94,
|
||||
"k_EGCMsgGetPersonaNames": 95,
|
||||
"k_EGCMsgGetPersonaNamesResponse": 96,
|
||||
"k_EGCMsgMultiplexMsg": 97,
|
||||
"k_EGCMsgWebAPIRegisterInterfaces": 101,
|
||||
"k_EGCMsgWebAPIJobRequest": 102,
|
||||
"k_EGCMsgWebAPIJobRequestHttpResponse": 104,
|
||||
"k_EGCMsgWebAPIJobRequestForwardResponse": 105,
|
||||
"k_EGCMsgMemCachedGet": 200,
|
||||
"k_EGCMsgMemCachedGetResponse": 201,
|
||||
"k_EGCMsgMemCachedSet": 202,
|
||||
"k_EGCMsgMemCachedDelete": 203,
|
||||
"k_EGCMsgMemCachedStats": 204,
|
||||
"k_EGCMsgMemCachedStatsResponse": 205,
|
||||
"k_EGCMsgSQLStats": 210,
|
||||
"k_EGCMsgSQLStatsResponse": 211,
|
||||
"k_EGCMsgMasterSetDirectory": 220,
|
||||
"k_EGCMsgMasterSetDirectoryResponse": 221,
|
||||
"k_EGCMsgMasterSetWebAPIRouting": 222,
|
||||
"k_EGCMsgMasterSetWebAPIRoutingResponse": 223,
|
||||
"k_EGCMsgMasterSetClientMsgRouting": 224,
|
||||
"k_EGCMsgMasterSetClientMsgRoutingResponse": 225,
|
||||
"k_EGCMsgSetOptions": 226,
|
||||
"k_EGCMsgSetOptionsResponse": 227,
|
||||
"k_EGCMsgSystemBase2": 500,
|
||||
"k_EGCMsgGetPurchaseTrustStatus": 501,
|
||||
"k_EGCMsgGetPurchaseTrustStatusResponse": 502,
|
||||
"k_EGCMsgUpdateSession": 503,
|
||||
"k_EGCMsgGCAccountVacStatusChange": 504,
|
||||
"k_EGCMsgCheckFriendship": 505,
|
||||
"k_EGCMsgCheckFriendshipResponse": 506,
|
||||
"k_EGCMsgGetPartnerAccountLink": 507,
|
||||
"k_EGCMsgGetPartnerAccountLinkResponse": 508,
|
||||
"k_EGCMsgVSReportedSuspiciousActivity": 509,
|
||||
}
|
||||
|
||||
func (x EGCSystemMsg) Enum() *EGCSystemMsg {
|
||||
p := new(EGCSystemMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCSystemMsg) String() string {
|
||||
return proto.EnumName(EGCSystemMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCSystemMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCSystemMsg_value, data, "EGCSystemMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCSystemMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCSystemMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{0} }
|
||||
|
||||
type ESOMsg int32
|
||||
|
||||
const (
|
||||
ESOMsg_k_ESOMsg_Create ESOMsg = 21
|
||||
ESOMsg_k_ESOMsg_Update ESOMsg = 22
|
||||
ESOMsg_k_ESOMsg_Destroy ESOMsg = 23
|
||||
ESOMsg_k_ESOMsg_CacheSubscribed ESOMsg = 24
|
||||
ESOMsg_k_ESOMsg_CacheUnsubscribed ESOMsg = 25
|
||||
ESOMsg_k_ESOMsg_UpdateMultiple ESOMsg = 26
|
||||
ESOMsg_k_ESOMsg_CacheSubscriptionCheck ESOMsg = 27
|
||||
ESOMsg_k_ESOMsg_CacheSubscriptionRefresh ESOMsg = 28
|
||||
ESOMsg_k_ESOMsg_CacheSubscribedUpToDate ESOMsg = 29
|
||||
)
|
||||
|
||||
var ESOMsg_name = map[int32]string{
|
||||
21: "k_ESOMsg_Create",
|
||||
22: "k_ESOMsg_Update",
|
||||
23: "k_ESOMsg_Destroy",
|
||||
24: "k_ESOMsg_CacheSubscribed",
|
||||
25: "k_ESOMsg_CacheUnsubscribed",
|
||||
26: "k_ESOMsg_UpdateMultiple",
|
||||
27: "k_ESOMsg_CacheSubscriptionCheck",
|
||||
28: "k_ESOMsg_CacheSubscriptionRefresh",
|
||||
29: "k_ESOMsg_CacheSubscribedUpToDate",
|
||||
}
|
||||
var ESOMsg_value = map[string]int32{
|
||||
"k_ESOMsg_Create": 21,
|
||||
"k_ESOMsg_Update": 22,
|
||||
"k_ESOMsg_Destroy": 23,
|
||||
"k_ESOMsg_CacheSubscribed": 24,
|
||||
"k_ESOMsg_CacheUnsubscribed": 25,
|
||||
"k_ESOMsg_UpdateMultiple": 26,
|
||||
"k_ESOMsg_CacheSubscriptionCheck": 27,
|
||||
"k_ESOMsg_CacheSubscriptionRefresh": 28,
|
||||
"k_ESOMsg_CacheSubscribedUpToDate": 29,
|
||||
}
|
||||
|
||||
func (x ESOMsg) Enum() *ESOMsg {
|
||||
p := new(ESOMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x ESOMsg) String() string {
|
||||
return proto.EnumName(ESOMsg_name, int32(x))
|
||||
}
|
||||
func (x *ESOMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(ESOMsg_value, data, "ESOMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = ESOMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (ESOMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{1} }
|
||||
|
||||
type EGCBaseClientMsg int32
|
||||
|
||||
const (
|
||||
EGCBaseClientMsg_k_EMsgGCPingRequest EGCBaseClientMsg = 3001
|
||||
EGCBaseClientMsg_k_EMsgGCPingResponse EGCBaseClientMsg = 3002
|
||||
EGCBaseClientMsg_k_EMsgGCClientWelcome EGCBaseClientMsg = 4004
|
||||
EGCBaseClientMsg_k_EMsgGCServerWelcome EGCBaseClientMsg = 4005
|
||||
EGCBaseClientMsg_k_EMsgGCClientHello EGCBaseClientMsg = 4006
|
||||
EGCBaseClientMsg_k_EMsgGCServerHello EGCBaseClientMsg = 4007
|
||||
EGCBaseClientMsg_k_EMsgGCClientGoodbye EGCBaseClientMsg = 4008
|
||||
EGCBaseClientMsg_k_EMsgGCServerGoodbye EGCBaseClientMsg = 4009
|
||||
)
|
||||
|
||||
var EGCBaseClientMsg_name = map[int32]string{
|
||||
3001: "k_EMsgGCPingRequest",
|
||||
3002: "k_EMsgGCPingResponse",
|
||||
4004: "k_EMsgGCClientWelcome",
|
||||
4005: "k_EMsgGCServerWelcome",
|
||||
4006: "k_EMsgGCClientHello",
|
||||
4007: "k_EMsgGCServerHello",
|
||||
4008: "k_EMsgGCClientGoodbye",
|
||||
4009: "k_EMsgGCServerGoodbye",
|
||||
}
|
||||
var EGCBaseClientMsg_value = map[string]int32{
|
||||
"k_EMsgGCPingRequest": 3001,
|
||||
"k_EMsgGCPingResponse": 3002,
|
||||
"k_EMsgGCClientWelcome": 4004,
|
||||
"k_EMsgGCServerWelcome": 4005,
|
||||
"k_EMsgGCClientHello": 4006,
|
||||
"k_EMsgGCServerHello": 4007,
|
||||
"k_EMsgGCClientGoodbye": 4008,
|
||||
"k_EMsgGCServerGoodbye": 4009,
|
||||
}
|
||||
|
||||
func (x EGCBaseClientMsg) Enum() *EGCBaseClientMsg {
|
||||
p := new(EGCBaseClientMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCBaseClientMsg) String() string {
|
||||
return proto.EnumName(EGCBaseClientMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCBaseClientMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCBaseClientMsg_value, data, "EGCBaseClientMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCBaseClientMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCBaseClientMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{2} }
|
||||
|
||||
type EGCToGCMsg int32
|
||||
|
||||
const (
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterAck EGCToGCMsg = 150
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterAckResponse EGCToGCMsg = 151
|
||||
EGCToGCMsg_k_EGCToGCMsgRouted EGCToGCMsg = 152
|
||||
EGCToGCMsg_k_EGCToGCMsgRoutedReply EGCToGCMsg = 153
|
||||
EGCToGCMsg_k_EMsgGCUpdateSubGCSessionInfo EGCToGCMsg = 154
|
||||
EGCToGCMsg_k_EMsgGCRequestSubGCSessionInfo EGCToGCMsg = 155
|
||||
EGCToGCMsg_k_EMsgGCRequestSubGCSessionInfoResponse EGCToGCMsg = 156
|
||||
EGCToGCMsg_k_EGCToGCMsgMasterStartupComplete EGCToGCMsg = 157
|
||||
EGCToGCMsg_k_EMsgGCToGCSOCacheSubscribe EGCToGCMsg = 158
|
||||
EGCToGCMsg_k_EMsgGCToGCSOCacheUnsubscribe EGCToGCMsg = 159
|
||||
)
|
||||
|
||||
var EGCToGCMsg_name = map[int32]string{
|
||||
150: "k_EGCToGCMsgMasterAck",
|
||||
151: "k_EGCToGCMsgMasterAckResponse",
|
||||
152: "k_EGCToGCMsgRouted",
|
||||
153: "k_EGCToGCMsgRoutedReply",
|
||||
154: "k_EMsgGCUpdateSubGCSessionInfo",
|
||||
155: "k_EMsgGCRequestSubGCSessionInfo",
|
||||
156: "k_EMsgGCRequestSubGCSessionInfoResponse",
|
||||
157: "k_EGCToGCMsgMasterStartupComplete",
|
||||
158: "k_EMsgGCToGCSOCacheSubscribe",
|
||||
159: "k_EMsgGCToGCSOCacheUnsubscribe",
|
||||
}
|
||||
var EGCToGCMsg_value = map[string]int32{
|
||||
"k_EGCToGCMsgMasterAck": 150,
|
||||
"k_EGCToGCMsgMasterAckResponse": 151,
|
||||
"k_EGCToGCMsgRouted": 152,
|
||||
"k_EGCToGCMsgRoutedReply": 153,
|
||||
"k_EMsgGCUpdateSubGCSessionInfo": 154,
|
||||
"k_EMsgGCRequestSubGCSessionInfo": 155,
|
||||
"k_EMsgGCRequestSubGCSessionInfoResponse": 156,
|
||||
"k_EGCToGCMsgMasterStartupComplete": 157,
|
||||
"k_EMsgGCToGCSOCacheSubscribe": 158,
|
||||
"k_EMsgGCToGCSOCacheUnsubscribe": 159,
|
||||
}
|
||||
|
||||
func (x EGCToGCMsg) Enum() *EGCToGCMsg {
|
||||
p := new(EGCToGCMsg)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
func (x EGCToGCMsg) String() string {
|
||||
return proto.EnumName(EGCToGCMsg_name, int32(x))
|
||||
}
|
||||
func (x *EGCToGCMsg) UnmarshalJSON(data []byte) error {
|
||||
value, err := proto.UnmarshalJSONEnum(EGCToGCMsg_value, data, "EGCToGCMsg")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*x = EGCToGCMsg(value)
|
||||
return nil
|
||||
}
|
||||
func (EGCToGCMsg) EnumDescriptor() ([]byte, []int) { return system_fileDescriptor0, []int{3} }
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("EGCSystemMsg", EGCSystemMsg_name, EGCSystemMsg_value)
|
||||
proto.RegisterEnum("ESOMsg", ESOMsg_name, ESOMsg_value)
|
||||
proto.RegisterEnum("EGCBaseClientMsg", EGCBaseClientMsg_name, EGCBaseClientMsg_value)
|
||||
proto.RegisterEnum("EGCToGCMsg", EGCToGCMsg_name, EGCToGCMsg_value)
|
||||
}
|
||||
|
||||
var system_fileDescriptor0 = []byte{
|
||||
// 1379 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x57, 0x49, 0x73, 0x1b, 0x45,
|
||||
0x14, 0xce, 0x44, 0x05, 0x87, 0x2e, 0x28, 0x5e, 0x3a, 0x89, 0xed, 0x24, 0x4e, 0x94, 0x84, 0x2c,
|
||||
0xc4, 0x50, 0x39, 0x84, 0x7d, 0x47, 0x91, 0x64, 0x59, 0xc1, 0x8e, 0x15, 0x49, 0xb6, 0xd9, 0xcd,
|
||||
0x78, 0xd4, 0xb6, 0xa6, 0x2c, 0x4d, 0x0f, 0xdd, 0x3d, 0x06, 0xdd, 0xf8, 0x13, 0xac, 0x61, 0xb9,
|
||||
0xb0, 0xfe, 0x04, 0xf8, 0x05, 0xac, 0x17, 0xb8, 0xb2, 0x73, 0x84, 0x23, 0xfb, 0x52, 0xc5, 0x9b,
|
||||
0xad, 0xa7, 0x47, 0x8b, 0xb9, 0x8d, 0xfa, 0x7b, 0x7b, 0x7f, 0xef, 0xf5, 0x13, 0xa1, 0x5b, 0x8e,
|
||||
0x1c, 0x48, 0xc5, 0xfa, 0x7d, 0xb9, 0x25, 0xcf, 0xfb, 0x82, 0x2b, 0x3e, 0x77, 0xf5, 0x00, 0xb9,
|
||||
0xae, 0x5a, 0x2b, 0xb7, 0xa2, 0xf3, 0x25, 0xb9, 0x45, 0xf7, 0x93, 0x1b, 0xb6, 0xd7, 0xf1, 0x04,
|
||||
0xbf, 0xeb, 0xde, 0x8e, 0xdd, 0x73, 0x3b, 0xb0, 0x87, 0xee, 0x23, 0xd7, 0xa7, 0x87, 0x4b, 0x41,
|
||||
0x4f, 0xb9, 0x60, 0xd1, 0x19, 0x72, 0x20, 0x3d, 0xaa, 0x31, 0x8f, 0x09, 0xd7, 0x69, 0x32, 0xbf,
|
||||
0x37, 0x00, 0x42, 0xa7, 0x08, 0x4d, 0x91, 0xd8, 0xec, 0x45, 0x5b, 0x32, 0xb8, 0x40, 0x8f, 0x91,
|
||||
0xc3, 0xe9, 0x79, 0xc9, 0xe9, 0xba, 0x6c, 0x87, 0xf5, 0x99, 0xa7, 0x4a, 0xcf, 0xda, 0xa2, 0xc3,
|
||||
0x3a, 0x70, 0xab, 0xa9, 0x57, 0xe6, 0x5e, 0x99, 0xf7, 0xfb, 0xb6, 0xd7, 0x81, 0xdb, 0x4c, 0x4f,
|
||||
0x2d, 0x65, 0x0b, 0xd5, 0xe8, 0xd9, 0x03, 0xd7, 0xdb, 0x82, 0xdb, 0xe9, 0x34, 0xd9, 0x9f, 0x21,
|
||||
0xdc, 0x4f, 0x81, 0x3b, 0xe8, 0x11, 0x32, 0x9d, 0x53, 0xa9, 0xd9, 0x7d, 0x26, 0x99, 0xd8, 0x61,
|
||||
0x02, 0xee, 0xa4, 0x87, 0xc9, 0x94, 0xa9, 0x65, 0x60, 0x77, 0xd1, 0x83, 0x64, 0x5f, 0x8a, 0xad,
|
||||
0xd5, 0x9a, 0xec, 0x99, 0x80, 0x49, 0x05, 0x77, 0x9b, 0xa1, 0x85, 0xc7, 0xd2, 0xe7, 0x1e, 0xa6,
|
||||
0x74, 0x0f, 0x3d, 0x49, 0x8e, 0x65, 0x45, 0x50, 0x2b, 0x68, 0x26, 0xb4, 0x86, 0x2e, 0x95, 0x6c,
|
||||
0x39, 0x5d, 0xd6, 0xb7, 0xe1, 0x5e, 0x3a, 0x47, 0xce, 0xec, 0x2e, 0xa3, 0xed, 0xdd, 0x37, 0xc6,
|
||||
0x5e, 0x24, 0x57, 0xa9, 0x36, 0x9a, 0xd5, 0x72, 0xa9, 0x5d, 0xad, 0xc0, 0xfd, 0xf4, 0x38, 0x99,
|
||||
0x1d, 0x27, 0xa3, 0xad, 0x3c, 0x60, 0x26, 0x58, 0xf2, 0xfd, 0xba, 0xb7, 0xc9, 0x57, 0xfc, 0x8e,
|
||||
0xad, 0xb0, 0xc8, 0x0f, 0x9a, 0x95, 0x59, 0x0d, 0x2f, 0x17, 0x8f, 0x5b, 0x4c, 0x4a, 0x97, 0x7b,
|
||||
0xf0, 0x10, 0xbd, 0x91, 0x14, 0x27, 0x80, 0xda, 0x7a, 0xc9, 0x8c, 0x71, 0x91, 0xf3, 0xed, 0xc0,
|
||||
0x2f, 0x39, 0x0e, 0x0f, 0x3c, 0x35, 0x2f, 0x78, 0xbf, 0xee, 0xf9, 0x81, 0x82, 0x8b, 0xb9, 0xfa,
|
||||
0x33, 0xaf, 0xb3, 0xd0, 0x6e, 0x37, 0xd2, 0x62, 0x96, 0x4d, 0x2f, 0x43, 0xa0, 0xf6, 0x52, 0x31,
|
||||
0x2f, 0xbd, 0x21, 0x58, 0x1b, 0xc1, 0x16, 0x53, 0x81, 0x0f, 0x55, 0x5a, 0x24, 0x47, 0x52, 0xa4,
|
||||
0xc9, 0x1c, 0x2e, 0x3a, 0xad, 0xc0, 0xf7, 0xb9, 0x50, 0x25, 0x47, 0x85, 0x59, 0xcc, 0xd3, 0x9b,
|
||||
0xc8, 0x29, 0xa3, 0x40, 0x49, 0x74, 0x15, 0xa6, 0x6c, 0xb7, 0x27, 0xd7, 0x8d, 0x52, 0xd6, 0xcc,
|
||||
0x54, 0xd0, 0x14, 0x73, 0x77, 0x58, 0xdd, 0x53, 0x4c, 0x60, 0xd1, 0x96, 0x30, 0x6d, 0x7b, 0x8b,
|
||||
0x41, 0xdd, 0x0c, 0x64, 0xde, 0xf5, 0x3a, 0x89, 0x39, 0x09, 0x97, 0x4c, 0xae, 0x34, 0xb8, 0x54,
|
||||
0xa5, 0x1e, 0x13, 0x0a, 0x1e, 0x36, 0x49, 0x89, 0xee, 0x17, 0x5d, 0x87, 0x61, 0x46, 0x12, 0x16,
|
||||
0xf3, 0x1d, 0x93, 0x5d, 0x1c, 0x2c, 0x0d, 0xa9, 0x24, 0xcc, 0x97, 0x70, 0xd9, 0xcc, 0xd5, 0x00,
|
||||
0x74, 0x99, 0x96, 0x73, 0x57, 0xdd, 0xe9, 0xcc, 0x0b, 0xc6, 0x12, 0x87, 0xd0, 0x30, 0xb3, 0xcb,
|
||||
0x63, 0x5a, 0xff, 0x0a, 0x3d, 0x44, 0x0e, 0x1a, 0x0e, 0xea, 0x8d, 0x45, 0xee, 0xd8, 0x51, 0x19,
|
||||
0x9b, 0xf4, 0x04, 0x39, 0x3a, 0x16, 0xd2, 0xda, 0x2d, 0x7a, 0x94, 0x1c, 0xca, 0x77, 0xba, 0xc9,
|
||||
0xfc, 0xb6, 0x19, 0x1c, 0x5a, 0x30, 0x24, 0x60, 0x65, 0x88, 0xe9, 0x06, 0xa6, 0xcd, 0xaf, 0x9a,
|
||||
0x05, 0x0e, 0x89, 0x52, 0xed, 0xe3, 0x0d, 0xc2, 0x5a, 0xce, 0x6b, 0x7a, 0xac, 0xb5, 0x1e, 0xa1,
|
||||
0xb3, 0x64, 0xc6, 0xb0, 0x1c, 0xa1, 0x6d, 0xd6, 0xf7, 0x7b, 0x48, 0x66, 0x78, 0x94, 0x9e, 0x22,
|
||||
0xc7, 0x27, 0xa1, 0xda, 0xc6, 0x63, 0xb9, 0xc8, 0x85, 0xed, 0xa9, 0x5a, 0xc8, 0xce, 0x86, 0x2d,
|
||||
0x25, 0x3c, 0x9e, 0x8b, 0x3c, 0x87, 0x69, 0xfd, 0x27, 0xcc, 0x10, 0x47, 0x28, 0x08, 0x4f, 0xd2,
|
||||
0xd3, 0xe4, 0xc4, 0x44, 0x58, 0x5b, 0x79, 0xca, 0xec, 0x22, 0x14, 0x6b, 0x30, 0x21, 0xb9, 0x67,
|
||||
0x5f, 0x0e, 0xc7, 0x15, 0xac, 0x9b, 0x5d, 0x34, 0x04, 0x6a, 0x0b, 0x4f, 0x9b, 0x94, 0x8b, 0xe6,
|
||||
0xb6, 0xdf, 0x63, 0xcf, 0xe1, 0x37, 0xd8, 0x66, 0x1d, 0xd6, 0xd8, 0x46, 0xa9, 0x51, 0x6f, 0xb2,
|
||||
0x2d, 0x17, 0x2f, 0x41, 0x44, 0x1d, 0xb0, 0x69, 0x3b, 0xe8, 0x84, 0x99, 0xb5, 0x8c, 0xa5, 0x2e,
|
||||
0xf1, 0x8d, 0xb4, 0x91, 0x37, 0xcd, 0x46, 0x1b, 0x46, 0x17, 0x94, 0xf2, 0x75, 0x1c, 0x5d, 0x7a,
|
||||
0x33, 0x39, 0x3b, 0x49, 0x72, 0x9e, 0x8b, 0xf0, 0x05, 0xd0, 0xc2, 0x2e, 0x72, 0x32, 0x0b, 0x9a,
|
||||
0xf5, 0xcb, 0x36, 0xd2, 0xa9, 0x83, 0x29, 0xc2, 0x47, 0x16, 0x72, 0x72, 0x76, 0x1c, 0xa4, 0x95,
|
||||
0x3f, 0xb6, 0xc6, 0x6a, 0xe3, 0xe8, 0x80, 0x4f, 0x2c, 0xcc, 0x66, 0x7a, 0x04, 0xaa, 0xb0, 0x1e,
|
||||
0x43, 0x62, 0x7c, 0x6a, 0x61, 0xb5, 0xa7, 0x46, 0x15, 0x23, 0xb6, 0x7e, 0x66, 0x61, 0xb5, 0x8f,
|
||||
0x8d, 0x07, 0xb5, 0xeb, 0xcf, 0x2d, 0xe4, 0x2b, 0x68, 0x62, 0x5e, 0x59, 0x8c, 0x75, 0xbf, 0xb0,
|
||||
0x90, 0x0c, 0x33, 0xc3, 0xc7, 0x5a, 0xeb, 0x4b, 0x0b, 0x7b, 0x5c, 0x3f, 0x8b, 0x4b, 0x76, 0x78,
|
||||
0x03, 0x18, 0x6d, 0xc5, 0x15, 0xcc, 0x51, 0x5c, 0x0c, 0xe0, 0x2b, 0x8b, 0x9e, 0x25, 0x27, 0x27,
|
||||
0x0b, 0x68, 0x4b, 0x5f, 0xe7, 0x83, 0x4c, 0x05, 0x93, 0xcb, 0xe5, 0x81, 0x0a, 0x5f, 0xc6, 0x6f,
|
||||
0x2c, 0xbc, 0x8a, 0x33, 0xbb, 0x0b, 0x69, 0x8b, 0xdf, 0x5a, 0xf4, 0x4c, 0x46, 0x54, 0x2d, 0x5c,
|
||||
0xee, 0xb9, 0xf8, 0x6c, 0x87, 0x23, 0x33, 0x31, 0xfa, 0x9d, 0x45, 0xcf, 0x93, 0x73, 0xff, 0x2b,
|
||||
0xa7, 0xed, 0x7e, 0x6f, 0xe1, 0xc0, 0xcb, 0x56, 0x04, 0xa6, 0x96, 0xfd, 0x70, 0xae, 0x48, 0xf8,
|
||||
0x21, 0x57, 0x8c, 0x0c, 0xd0, 0x9a, 0x3f, 0x86, 0x6b, 0xc7, 0xfe, 0xd1, 0xe5, 0xe2, 0x02, 0xfc,
|
||||
0x52, 0x30, 0xb3, 0x0f, 0x1b, 0x22, 0x10, 0x4e, 0x17, 0xa1, 0xb6, 0x08, 0xf0, 0xe9, 0xc0, 0x9a,
|
||||
0x07, 0x12, 0x7e, 0x2d, 0x98, 0xd9, 0x8f, 0x17, 0xd2, 0xbe, 0x7e, 0x2b, 0xe0, 0x14, 0xd0, 0xc3,
|
||||
0x31, 0x7e, 0x40, 0xd3, 0x97, 0xf2, 0xf7, 0x02, 0xb6, 0x70, 0x36, 0x47, 0xca, 0x49, 0x07, 0xaf,
|
||||
0xda, 0x4e, 0x6c, 0xa4, 0xdc, 0xb5, 0x3d, 0x7c, 0x3c, 0xfe, 0x28, 0x98, 0x94, 0x2b, 0x77, 0x99,
|
||||
0xb3, 0x3d, 0x2f, 0xb0, 0x28, 0x1d, 0xd9, 0x75, 0x7d, 0xf8, 0xb3, 0x80, 0x4d, 0x58, 0x9c, 0x80,
|
||||
0xea, 0x30, 0xfe, 0x2a, 0xe0, 0xc0, 0x31, 0x07, 0x71, 0x03, 0xd7, 0x19, 0x5c, 0xb7, 0x12, 0x97,
|
||||
0x8b, 0xae, 0xb7, 0x0d, 0x7f, 0x17, 0x70, 0xc9, 0x38, 0xbd, 0xab, 0x8c, 0xb6, 0xf7, 0x4f, 0x81,
|
||||
0x9e, 0xcb, 0xda, 0x76, 0xb5, 0x85, 0x4b, 0x1b, 0xbe, 0x9d, 0x48, 0xe6, 0x40, 0xfa, 0xae, 0xe3,
|
||||
0xf2, 0x40, 0x86, 0xef, 0xe8, 0x8e, 0xab, 0x06, 0xf0, 0x6f, 0x61, 0xee, 0x85, 0xbd, 0xe4, 0xda,
|
||||
0x6a, 0x6b, 0x39, 0xdb, 0x0b, 0xa3, 0xef, 0xf5, 0xb2, 0x60, 0xe1, 0x34, 0x3d, 0x98, 0x3b, 0x8c,
|
||||
0x4b, 0x04, 0x53, 0xf4, 0x40, 0xd4, 0x06, 0xf1, 0x61, 0x05, 0x3b, 0x5c, 0xf0, 0x01, 0x4c, 0x27,
|
||||
0xa3, 0x24, 0xd1, 0x0f, 0xfb, 0xa7, 0x15, 0x6c, 0x48, 0x47, 0xb8, 0x1b, 0xb8, 0x96, 0xcc, 0x24,
|
||||
0xbb, 0xa1, 0x81, 0xae, 0x78, 0x32, 0xc3, 0x0f, 0x25, 0xa3, 0xd0, 0x74, 0x94, 0xce, 0x33, 0x38,
|
||||
0x9c, 0x8c, 0xc2, 0x51, 0xd3, 0x11, 0x7b, 0xa2, 0xc2, 0xc2, 0x91, 0x64, 0xe6, 0x4e, 0x10, 0x6a,
|
||||
0xb2, 0x4d, 0xc1, 0x64, 0x17, 0x66, 0x93, 0xb9, 0x38, 0x36, 0xcc, 0x15, 0xbf, 0xcd, 0x2b, 0x61,
|
||||
0x8a, 0x47, 0xe7, 0x7e, 0xb2, 0x08, 0x60, 0x05, 0x43, 0xee, 0x69, 0x9a, 0x27, 0xd4, 0x8c, 0x08,
|
||||
0xd1, 0x88, 0xf8, 0x1e, 0xcf, 0xc9, 0x0f, 0xa6, 0x93, 0x99, 0x64, 0x20, 0xc9, 0x65, 0x7c, 0x38,
|
||||
0x9d, 0x70, 0x2c, 0x82, 0x62, 0x4b, 0x6b, 0xac, 0xe7, 0xf0, 0x3e, 0x83, 0xb7, 0x8a, 0x26, 0xd6,
|
||||
0x8a, 0x16, 0xd4, 0x14, 0x7b, 0xbb, 0x68, 0x3a, 0x8b, 0xf5, 0x16, 0x58, 0xaf, 0xc7, 0xe1, 0x9d,
|
||||
0x1c, 0x12, 0x6b, 0xc5, 0xc8, 0xbb, 0xc5, 0x51, 0x5f, 0x35, 0xce, 0x3b, 0x1b, 0x03, 0x06, 0xef,
|
||||
0x8d, 0xf1, 0x95, 0x62, 0xef, 0x17, 0xe7, 0x7e, 0xde, 0x4b, 0x08, 0x66, 0xdb, 0xe6, 0x11, 0x67,
|
||||
0x74, 0x5b, 0x24, 0xbf, 0xe3, 0x86, 0x2f, 0x61, 0x91, 0x5f, 0xb4, 0x34, 0x57, 0x87, 0x31, 0x9d,
|
||||
0xf2, 0x4b, 0x59, 0xf3, 0x27, 0x32, 0xe1, 0x78, 0xc0, 0x3b, 0x7e, 0x39, 0x9b, 0xcf, 0x39, 0x20,
|
||||
0xfe, 0x57, 0xf1, 0x4a, 0x3a, 0xdd, 0xa2, 0x08, 0x93, 0x6e, 0x0c, 0x36, 0xc2, 0x60, 0xa3, 0x96,
|
||||
0x0c, 0x97, 0x5c, 0x78, 0xd5, 0x4a, 0x3a, 0x2a, 0x12, 0x4a, 0xea, 0x3f, 0x22, 0x75, 0xd5, 0xa2,
|
||||
0xb7, 0x44, 0xcf, 0xd1, 0x6e, 0x52, 0x3a, 0xde, 0xd7, 0xb2, 0x21, 0x98, 0xcb, 0x29, 0xfa, 0x5b,
|
||||
0x11, 0xf8, 0xb8, 0x92, 0xf9, 0xd1, 0x03, 0xf2, 0x7a, 0xfa, 0x38, 0x45, 0x56, 0x43, 0xd1, 0xd6,
|
||||
0x72, 0x9e, 0x3f, 0xf0, 0x46, 0x2e, 0x07, 0x43, 0xc4, 0xe0, 0x3a, 0xbc, 0x69, 0x5d, 0xbc, 0x66,
|
||||
0xc1, 0x7a, 0xde, 0xda, 0xf3, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xd8, 0x05, 0xd1, 0xae,
|
||||
0x0d, 0x00, 0x00,
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,75 +0,0 @@
|
||||
/*
|
||||
Provides access to TF2 Game Coordinator functionality.
|
||||
*/
|
||||
package tf2
|
||||
|
||||
import (
|
||||
"github.com/Philipp15b/go-steam"
|
||||
. "github.com/Philipp15b/go-steam/protocol/gamecoordinator"
|
||||
. "github.com/Philipp15b/go-steam/tf2/protocol"
|
||||
"github.com/Philipp15b/go-steam/tf2/protocol/protobuf"
|
||||
)
|
||||
|
||||
const AppId = 440
|
||||
|
||||
// To use any methods of this, you'll need to SetPlaying(true) and wait for
|
||||
// the GCReadyEvent.
|
||||
type TF2 struct {
|
||||
client *steam.Client
|
||||
}
|
||||
|
||||
// Creates a new TF2 instance and registers it as a packet handler
|
||||
func New(client *steam.Client) *TF2 {
|
||||
t := &TF2{client}
|
||||
client.GC.RegisterPacketHandler(t)
|
||||
return t
|
||||
}
|
||||
|
||||
func (t *TF2) SetPlaying(playing bool) {
|
||||
if playing {
|
||||
t.client.GC.SetGamesPlayed(AppId)
|
||||
} else {
|
||||
t.client.GC.SetGamesPlayed()
|
||||
}
|
||||
}
|
||||
|
||||
func (t *TF2) SetItemPosition(itemId, position uint64) {
|
||||
t.client.GC.Write(NewGCMsg(AppId, uint32(protobuf.EGCItemMsg_k_EMsgGCSetSingleItemPosition), &MsgGCSetItemPosition{
|
||||
itemId, position,
|
||||
}))
|
||||
}
|
||||
|
||||
// recipe -2 = wildcard
|
||||
func (t *TF2) CraftItems(items []uint64, recipe int16) {
|
||||
t.client.GC.Write(NewGCMsg(AppId, uint32(protobuf.EGCItemMsg_k_EMsgGCCraft), &MsgGCCraft{
|
||||
Recipe: recipe,
|
||||
Items: items,
|
||||
}))
|
||||
}
|
||||
|
||||
func (t *TF2) DeleteItem(itemId uint64) {
|
||||
t.client.GC.Write(NewGCMsg(AppId, uint32(protobuf.EGCItemMsg_k_EMsgGCDelete), &MsgGCDeleteItem{itemId}))
|
||||
}
|
||||
|
||||
func (t *TF2) NameItem(toolId, target uint64, name string) {
|
||||
t.client.GC.Write(NewGCMsg(AppId, uint32(protobuf.EGCItemMsg_k_EMsgGCNameItem), &MsgGCNameItem{
|
||||
toolId, target, name,
|
||||
}))
|
||||
}
|
||||
|
||||
type GCReadyEvent struct{}
|
||||
|
||||
func (t *TF2) HandleGCPacket(packet *GCPacket) {
|
||||
if packet.AppId != AppId {
|
||||
return
|
||||
}
|
||||
switch protobuf.EGCBaseClientMsg(packet.MsgType) {
|
||||
case protobuf.EGCBaseClientMsg_k_EMsgGCClientWelcome:
|
||||
t.handleWelcome(packet)
|
||||
}
|
||||
}
|
||||
|
||||
func (t *TF2) handleWelcome(packet *GCPacket) {
|
||||
// the packet's body is pretty useless
|
||||
t.client.Emit(&GCReadyEvent{})
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
package trade
|
||||
|
||||
import (
|
||||
"github.com/Philipp15b/go-steam/economy/inventory"
|
||||
"github.com/Philipp15b/go-steam/trade/tradeapi"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Slot uint
|
||||
|
||||
func (t *Trade) action(status *tradeapi.Status, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
t.onStatus(status)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Returns the next batch of events to process. These can be queued from calls to methods
|
||||
// like `AddItem` or, if there are no queued events, from a new HTTP request to Steam's API (blocking!).
|
||||
// If the latter is the case, this method may also sleep before the request
|
||||
// to conform to the polling interval of the official Steam client.
|
||||
func (t *Trade) Poll() ([]interface{}, error) {
|
||||
if t.queuedEvents != nil {
|
||||
return t.Events(), nil
|
||||
}
|
||||
|
||||
if d := time.Since(t.lastPoll); d < pollTimeout {
|
||||
time.Sleep(pollTimeout - d)
|
||||
}
|
||||
t.lastPoll = time.Now()
|
||||
|
||||
err := t.action(t.api.GetStatus())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return t.Events(), nil
|
||||
}
|
||||
|
||||
func (t *Trade) GetTheirInventory(contextId uint64, appId uint32) (*inventory.Inventory, error) {
|
||||
return inventory.GetFullInventory(func() (*inventory.PartialInventory, error) {
|
||||
return t.api.GetForeignInventory(contextId, appId, nil)
|
||||
}, func(start uint) (*inventory.PartialInventory, error) {
|
||||
return t.api.GetForeignInventory(contextId, appId, &start)
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) GetOwnInventory(contextId uint64, appId uint32) (*inventory.Inventory, error) {
|
||||
return t.api.GetOwnInventory(contextId, appId)
|
||||
}
|
||||
|
||||
func (t *Trade) GetMain() (*tradeapi.Main, error) {
|
||||
return t.api.GetMain()
|
||||
}
|
||||
|
||||
func (t *Trade) AddItem(slot Slot, item *Item) error {
|
||||
return t.action(t.api.AddItem(uint(slot), item.AssetId, item.ContextId, item.AppId))
|
||||
}
|
||||
|
||||
func (t *Trade) RemoveItem(slot Slot, item *Item) error {
|
||||
return t.action(t.api.RemoveItem(uint(slot), item.AssetId, item.ContextId, item.AppId))
|
||||
}
|
||||
|
||||
func (t *Trade) Chat(message string) error {
|
||||
return t.action(t.api.Chat(message))
|
||||
}
|
||||
|
||||
func (t *Trade) SetCurrency(amount uint, currency *Currency) error {
|
||||
return t.action(t.api.SetCurrency(amount, currency.CurrencyId, currency.ContextId, currency.AppId))
|
||||
}
|
||||
|
||||
func (t *Trade) SetReady(ready bool) error {
|
||||
return t.action(t.api.SetReady(ready))
|
||||
}
|
||||
|
||||
// This may only be called after a successful `SetReady(true)`.
|
||||
func (t *Trade) Confirm() error {
|
||||
return t.action(t.api.Confirm())
|
||||
}
|
||||
|
||||
func (t *Trade) Cancel() error {
|
||||
return t.action(t.api.Cancel())
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
/*
|
||||
Allows automation of Steam Trading.
|
||||
|
||||
Usage
|
||||
|
||||
Like go-steam, this package is event-based. Call Poll() until the trade has ended, that is until the TradeEndedEvent is emitted.
|
||||
|
||||
// After receiving the steam.TradeSessionStartEvent
|
||||
t := trade.New(sessionIdCookie, steamLoginCookie, steamLoginSecure, event.Other)
|
||||
for {
|
||||
eventList, err := t.Poll()
|
||||
if err != nil {
|
||||
// error handling here
|
||||
continue
|
||||
}
|
||||
for _, event := range eventList {
|
||||
switch e := event.(type) {
|
||||
case *trade.ChatEvent:
|
||||
// respond to any chat message
|
||||
t.Chat("Trading is awesome!")
|
||||
case *trade.TradeEndedEvent:
|
||||
return
|
||||
// other event handlers here
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
You can either log into steamcommunity.com and use the values of the `sessionId` and `steamLogin` cookies,
|
||||
or use go-steam and after logging in with client.Web.LogOn() and receiving the WebLoggedOnEvent use the `SessionId`
|
||||
and `SteamLogin` fields of steam.Web for the respective cookies.
|
||||
|
||||
It is important that there is no delay between the Poll() calls greater than the timeout of the Steam client
|
||||
(currently five seconds before the trade partner sees a warning) or the trade will be closed automatically by Steam.
|
||||
|
||||
Notes
|
||||
|
||||
All method calls to Steam APIs are blocking. This packages' and its subpackages' types are not thread-safe and no calls to any method of the same
|
||||
trade instance may be done concurrently except when otherwise noted.
|
||||
*/
|
||||
package trade
|
@ -1,122 +0,0 @@
|
||||
package trade
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
"github.com/Philipp15b/go-steam/trade/tradeapi"
|
||||
)
|
||||
|
||||
const pollTimeout = time.Second
|
||||
|
||||
type Trade struct {
|
||||
ThemId steamid.SteamId
|
||||
|
||||
MeReady, ThemReady bool
|
||||
|
||||
lastPoll time.Time
|
||||
queuedEvents []interface{}
|
||||
api *tradeapi.Trade
|
||||
}
|
||||
|
||||
func New(sessionId, steamLogin, steamLoginSecure string, other steamid.SteamId) *Trade {
|
||||
return &Trade{
|
||||
other,
|
||||
false, false,
|
||||
time.Unix(0, 0),
|
||||
nil,
|
||||
tradeapi.New(sessionId, steamLogin, steamLoginSecure, other),
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Trade) Version() uint {
|
||||
return t.api.Version
|
||||
}
|
||||
|
||||
// Returns all queued events and removes them from the queue without performing a HTTP request, like Poll() would.
|
||||
func (t *Trade) Events() []interface{} {
|
||||
qe := t.queuedEvents
|
||||
t.queuedEvents = nil
|
||||
return qe
|
||||
}
|
||||
|
||||
func (t *Trade) onStatus(status *tradeapi.Status) error {
|
||||
if !status.Success {
|
||||
return errors.New("trade: returned status not successful! error message: " + status.Error)
|
||||
}
|
||||
|
||||
if status.NewVersion {
|
||||
t.api.Version = status.Version
|
||||
|
||||
t.MeReady = status.Me.Ready == true
|
||||
t.ThemReady = status.Them.Ready == true
|
||||
}
|
||||
|
||||
switch status.TradeStatus {
|
||||
case tradeapi.TradeStatus_Complete:
|
||||
t.addEvent(&TradeEndedEvent{TradeEndReason_Complete})
|
||||
case tradeapi.TradeStatus_Cancelled:
|
||||
t.addEvent(&TradeEndedEvent{TradeEndReason_Cancelled})
|
||||
case tradeapi.TradeStatus_Timeout:
|
||||
t.addEvent(&TradeEndedEvent{TradeEndReason_Timeout})
|
||||
case tradeapi.TradeStatus_Failed:
|
||||
t.addEvent(&TradeEndedEvent{TradeEndReason_Failed})
|
||||
case tradeapi.TradeStatus_Open:
|
||||
// nothing
|
||||
default:
|
||||
// ignore too
|
||||
}
|
||||
|
||||
t.updateEvents(status.Events)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *Trade) updateEvents(events tradeapi.EventList) {
|
||||
if len(events) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
var lastLogPos uint
|
||||
for i, event := range events {
|
||||
if i < t.api.LogPos {
|
||||
continue
|
||||
}
|
||||
if event.SteamId != t.ThemId {
|
||||
continue
|
||||
}
|
||||
|
||||
if lastLogPos < i {
|
||||
lastLogPos = i
|
||||
}
|
||||
|
||||
switch event.Action {
|
||||
case tradeapi.Action_AddItem:
|
||||
t.addEvent(&ItemAddedEvent{newItem(event)})
|
||||
case tradeapi.Action_RemoveItem:
|
||||
t.addEvent(&ItemRemovedEvent{newItem(event)})
|
||||
case tradeapi.Action_Ready:
|
||||
t.ThemReady = true
|
||||
t.addEvent(new(ReadyEvent))
|
||||
case tradeapi.Action_Unready:
|
||||
t.ThemReady = false
|
||||
t.addEvent(new(UnreadyEvent))
|
||||
case tradeapi.Action_SetCurrency:
|
||||
t.addEvent(&SetCurrencyEvent{
|
||||
newCurrency(event),
|
||||
event.OldAmount,
|
||||
event.NewAmount,
|
||||
})
|
||||
case tradeapi.Action_ChatMessage:
|
||||
t.addEvent(&ChatEvent{
|
||||
event.Text,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
t.api.LogPos = uint(lastLogPos) + 1
|
||||
}
|
||||
|
||||
func (t *Trade) addEvent(event interface{}) {
|
||||
t.queuedEvents = append(t.queuedEvents, event)
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
package tradeapi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/Philipp15b/go-steam/jsont"
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Status struct {
|
||||
Success bool
|
||||
Error string
|
||||
NewVersion bool `json:"newversion"`
|
||||
TradeStatus TradeStatus `json:"trade_status"`
|
||||
Version uint
|
||||
LogPos int
|
||||
Me User
|
||||
Them User
|
||||
Events EventList
|
||||
}
|
||||
|
||||
type TradeStatus uint
|
||||
|
||||
const (
|
||||
TradeStatus_Open TradeStatus = 0
|
||||
TradeStatus_Complete = 1
|
||||
TradeStatus_Empty = 2 // when both parties trade no items
|
||||
TradeStatus_Cancelled = 3
|
||||
TradeStatus_Timeout = 4 // the partner timed out
|
||||
TradeStatus_Failed = 5
|
||||
)
|
||||
|
||||
type EventList map[uint]*Event
|
||||
|
||||
// The EventList can either be an array or an object of id -> event
|
||||
func (e *EventList) UnmarshalJSON(data []byte) error {
|
||||
// initialize the map if it's nil
|
||||
if *e == nil {
|
||||
*e = make(EventList)
|
||||
}
|
||||
|
||||
o := make(map[string]*Event)
|
||||
err := json.Unmarshal(data, &o)
|
||||
// it's an object
|
||||
if err == nil {
|
||||
for is, event := range o {
|
||||
i, err := strconv.ParseUint(is, 10, 32)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
(*e)[uint(i)] = event
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// it's an array
|
||||
var a []*Event
|
||||
err = json.Unmarshal(data, &a)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for i, event := range a {
|
||||
(*e)[uint(i)] = event
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type Event struct {
|
||||
SteamId steamid.SteamId `json:",string"`
|
||||
Action Action `json:",string"`
|
||||
Timestamp uint64
|
||||
|
||||
AppId uint32
|
||||
ContextId uint64 `json:",string"`
|
||||
AssetId uint64 `json:",string"`
|
||||
|
||||
Text string // only used for chat messages
|
||||
|
||||
// The following is used for SetCurrency
|
||||
CurrencyId uint64 `json:",string"`
|
||||
OldAmount uint64 `json:"old_amount,string"`
|
||||
NewAmount uint64 `json:"amount,string"`
|
||||
}
|
||||
|
||||
type Action uint
|
||||
|
||||
const (
|
||||
Action_AddItem Action = 0
|
||||
Action_RemoveItem = 1
|
||||
Action_Ready = 2
|
||||
Action_Unready = 3
|
||||
Action_Accept = 4
|
||||
Action_SetCurrency = 6
|
||||
Action_ChatMessage = 7
|
||||
)
|
||||
|
||||
type User struct {
|
||||
Ready jsont.UintBool
|
||||
Confirmed jsont.UintBool
|
||||
SecSinceTouch int `json:"sec_since_touch"`
|
||||
ConnectionPending bool `json:"connection_pending"`
|
||||
Assets interface{}
|
||||
Currency interface{} // either []*Currency or empty string
|
||||
}
|
||||
|
||||
type Currency struct {
|
||||
AppId uint64 `json:",string"`
|
||||
ContextId uint64 `json:",string"`
|
||||
CurrencyId uint64 `json:",string"`
|
||||
Amount uint64 `json:",string"`
|
||||
}
|
@ -1,200 +0,0 @@
|
||||
/*
|
||||
Wrapper around the HTTP trading API for type safety 'n' stuff.
|
||||
*/
|
||||
package tradeapi
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/Philipp15b/go-steam/community"
|
||||
"github.com/Philipp15b/go-steam/economy/inventory"
|
||||
"github.com/Philipp15b/go-steam/netutil"
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
const tradeUrl = "https://steamcommunity.com/trade/%d/"
|
||||
|
||||
type Trade struct {
|
||||
client *http.Client
|
||||
other steamid.SteamId
|
||||
|
||||
LogPos uint // not automatically updated
|
||||
Version uint // Incremented for each item change by Steam; not automatically updated.
|
||||
|
||||
// the `sessionid` cookie is sent as a parameter/POST data for CSRF protection.
|
||||
sessionId string
|
||||
baseUrl string
|
||||
}
|
||||
|
||||
// Creates a new Trade based on the given cookies `sessionid`, `steamLogin`, `steamLoginSecure` and the trade partner's Steam ID.
|
||||
func New(sessionId, steamLogin, steamLoginSecure string, other steamid.SteamId) *Trade {
|
||||
client := new(http.Client)
|
||||
client.Timeout = 10 * time.Second
|
||||
|
||||
t := &Trade{
|
||||
client: client,
|
||||
other: other,
|
||||
sessionId: sessionId,
|
||||
baseUrl: fmt.Sprintf(tradeUrl, other),
|
||||
Version: 1,
|
||||
}
|
||||
community.SetCookies(t.client, sessionId, steamLogin, steamLoginSecure)
|
||||
return t
|
||||
}
|
||||
|
||||
type Main struct {
|
||||
PartnerOnProbation bool
|
||||
}
|
||||
|
||||
var onProbationRegex = regexp.MustCompile(`var g_bTradePartnerProbation = (\w+);`)
|
||||
|
||||
// Fetches the main HTML page and parses it. Thread-safe.
|
||||
func (t *Trade) GetMain() (*Main, error) {
|
||||
resp, err := t.client.Get(t.baseUrl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
match := onProbationRegex.FindSubmatch(body)
|
||||
if len(match) == 0 {
|
||||
return nil, errors.New("tradeapi.GetMain: Could not find probation info")
|
||||
}
|
||||
|
||||
return &Main{
|
||||
string(match[1]) == "true",
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Ajax POSTs to an API endpoint that should return a status
|
||||
func (t *Trade) postWithStatus(url string, data map[string]string) (*Status, error) {
|
||||
status := new(Status)
|
||||
|
||||
req := netutil.NewPostForm(url, netutil.ToUrlValues(data))
|
||||
// Tales of Madness and Pain, Episode 1: If you forget this, Steam will return an error
|
||||
// saying "missing required parameter", even though they are all there. IT WAS JUST THE HEADER, ARGH!
|
||||
req.Header.Add("Referer", t.baseUrl)
|
||||
|
||||
resp, err := t.client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
err = json.NewDecoder(resp.Body).Decode(status)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return status, nil
|
||||
}
|
||||
|
||||
func (t *Trade) GetStatus() (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"tradestatus/", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"logpos": strconv.FormatUint(uint64(t.LogPos), 10),
|
||||
"version": strconv.FormatUint(uint64(t.Version), 10),
|
||||
})
|
||||
}
|
||||
|
||||
// Thread-safe.
|
||||
func (t *Trade) GetForeignInventory(contextId uint64, appId uint32, start *uint) (*inventory.PartialInventory, error) {
|
||||
data := map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"steamid": fmt.Sprintf("%d", t.other),
|
||||
"contextid": strconv.FormatUint(contextId, 10),
|
||||
"appid": strconv.FormatUint(uint64(appId), 10),
|
||||
}
|
||||
if start != nil {
|
||||
data["start"] = strconv.FormatUint(uint64(*start), 10)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", t.baseUrl+"foreigninventory?"+netutil.ToUrlValues(data).Encode(), nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
req.Header.Add("Referer", t.baseUrl)
|
||||
|
||||
return inventory.DoInventoryRequest(t.client, req)
|
||||
}
|
||||
|
||||
// Thread-safe.
|
||||
func (t *Trade) GetOwnInventory(contextId uint64, appId uint32) (*inventory.Inventory, error) {
|
||||
return inventory.GetOwnInventory(t.client, contextId, appId)
|
||||
}
|
||||
|
||||
func (t *Trade) Chat(message string) (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"chat", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"logpos": strconv.FormatUint(uint64(t.LogPos), 10),
|
||||
"version": strconv.FormatUint(uint64(t.Version), 10),
|
||||
"message": message,
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) AddItem(slot uint, itemId, contextId uint64, appId uint32) (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"additem", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"slot": strconv.FormatUint(uint64(slot), 10),
|
||||
"itemid": strconv.FormatUint(itemId, 10),
|
||||
"contextid": strconv.FormatUint(contextId, 10),
|
||||
"appid": strconv.FormatUint(uint64(appId), 10),
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) RemoveItem(slot uint, itemId, contextId uint64, appId uint32) (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"removeitem", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"slot": strconv.FormatUint(uint64(slot), 10),
|
||||
"itemid": strconv.FormatUint(itemId, 10),
|
||||
"contextid": strconv.FormatUint(contextId, 10),
|
||||
"appid": strconv.FormatUint(uint64(appId), 10),
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) SetCurrency(amount uint, currencyId, contextId uint64, appId uint32) (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"setcurrency", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"amount": strconv.FormatUint(uint64(amount), 10),
|
||||
"currencyid": strconv.FormatUint(uint64(currencyId), 10),
|
||||
"contextid": strconv.FormatUint(contextId, 10),
|
||||
"appid": strconv.FormatUint(uint64(appId), 10),
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) SetReady(ready bool) (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"toggleready", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"version": strconv.FormatUint(uint64(t.Version), 10),
|
||||
"ready": fmt.Sprint(ready),
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) Confirm() (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"confirm", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
"version": strconv.FormatUint(uint64(t.Version), 10),
|
||||
})
|
||||
}
|
||||
|
||||
func (t *Trade) Cancel() (*Status, error) {
|
||||
return t.postWithStatus(t.baseUrl+"cancel", map[string]string{
|
||||
"sessionid": t.sessionId,
|
||||
})
|
||||
}
|
||||
|
||||
func isSuccess(v interface{}) bool {
|
||||
if m, ok := v.(map[string]interface{}); ok {
|
||||
return m["success"] == true
|
||||
}
|
||||
return false
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
package trade
|
||||
|
||||
import (
|
||||
"github.com/Philipp15b/go-steam/trade/tradeapi"
|
||||
)
|
||||
|
||||
type TradeEndedEvent struct {
|
||||
Reason TradeEndReason
|
||||
}
|
||||
|
||||
type TradeEndReason uint
|
||||
|
||||
const (
|
||||
TradeEndReason_Complete TradeEndReason = 1
|
||||
TradeEndReason_Cancelled = 2
|
||||
TradeEndReason_Timeout = 3
|
||||
TradeEndReason_Failed = 4
|
||||
)
|
||||
|
||||
func newItem(event *tradeapi.Event) *Item {
|
||||
return &Item{
|
||||
event.AppId,
|
||||
event.ContextId,
|
||||
event.AssetId,
|
||||
}
|
||||
}
|
||||
|
||||
type Item struct {
|
||||
AppId uint32
|
||||
ContextId uint64
|
||||
AssetId uint64
|
||||
}
|
||||
|
||||
type ItemAddedEvent struct {
|
||||
Item *Item
|
||||
}
|
||||
|
||||
type ItemRemovedEvent struct {
|
||||
Item *Item
|
||||
}
|
||||
|
||||
type ReadyEvent struct{}
|
||||
type UnreadyEvent struct{}
|
||||
|
||||
func newCurrency(event *tradeapi.Event) *Currency {
|
||||
return &Currency{
|
||||
event.AppId,
|
||||
event.ContextId,
|
||||
event.CurrencyId,
|
||||
}
|
||||
}
|
||||
|
||||
type Currency struct {
|
||||
AppId uint32
|
||||
ContextId uint64
|
||||
CurrencyId uint64
|
||||
}
|
||||
|
||||
type SetCurrencyEvent struct {
|
||||
Currency *Currency
|
||||
OldAmount uint64
|
||||
NewAmount uint64
|
||||
}
|
||||
|
||||
type ChatEvent struct {
|
||||
Message string
|
||||
}
|
@ -1,452 +0,0 @@
|
||||
package tradeoffer
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Philipp15b/go-steam/community"
|
||||
"github.com/Philipp15b/go-steam/economy/inventory"
|
||||
"github.com/Philipp15b/go-steam/netutil"
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type APIKey string
|
||||
|
||||
const apiUrl = "https://api.steampowered.com/IEconService/%s/v%d"
|
||||
|
||||
type Client struct {
|
||||
client *http.Client
|
||||
key APIKey
|
||||
sessionId string
|
||||
}
|
||||
|
||||
func NewClient(key APIKey, sessionId, steamLogin, steamLoginSecure string) *Client {
|
||||
c := &Client{
|
||||
new(http.Client),
|
||||
key,
|
||||
sessionId,
|
||||
}
|
||||
community.SetCookies(c.client, sessionId, steamLogin, steamLoginSecure)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *Client) GetOffer(offerId uint64) (*TradeOfferResult, error) {
|
||||
resp, err := c.client.Get(fmt.Sprintf(apiUrl, "GetTradeOffer", 1) + "?" + netutil.ToUrlValues(map[string]string{
|
||||
"key": string(c.key),
|
||||
"tradeofferid": strconv.FormatUint(offerId, 10),
|
||||
"language": "en_us",
|
||||
}).Encode())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
t := new(struct {
|
||||
Response *TradeOfferResult
|
||||
})
|
||||
if err = json.NewDecoder(resp.Body).Decode(t); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if t.Response == nil || t.Response.Offer == nil {
|
||||
return nil, newSteamErrorf("steam returned empty offer result\n")
|
||||
}
|
||||
|
||||
return t.Response, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetOffers(getSent bool, getReceived bool, getDescriptions bool, activeOnly bool, historicalOnly bool, timeHistoricalCutoff *uint32) (*TradeOffersResult, error) {
|
||||
if !getSent && !getReceived {
|
||||
return nil, fmt.Errorf("getSent and getReceived can't be both false\n")
|
||||
}
|
||||
|
||||
params := map[string]string{
|
||||
"key": string(c.key),
|
||||
}
|
||||
if getSent {
|
||||
params["get_sent_offers"] = "1"
|
||||
}
|
||||
if getReceived {
|
||||
params["get_received_offers"] = "1"
|
||||
}
|
||||
if getDescriptions {
|
||||
params["get_descriptions"] = "1"
|
||||
params["language"] = "en_us"
|
||||
}
|
||||
if activeOnly {
|
||||
params["active_only"] = "1"
|
||||
}
|
||||
if historicalOnly {
|
||||
params["historical_only"] = "1"
|
||||
}
|
||||
if timeHistoricalCutoff != nil {
|
||||
params["time_historical_cutoff"] = strconv.FormatUint(uint64(*timeHistoricalCutoff), 10)
|
||||
}
|
||||
resp, err := c.client.Get(fmt.Sprintf(apiUrl, "GetTradeOffers", 1) + "?" + netutil.ToUrlValues(params).Encode())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
t := new(struct {
|
||||
Response *TradeOffersResult
|
||||
})
|
||||
if err = json.NewDecoder(resp.Body).Decode(t); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if t.Response == nil {
|
||||
return nil, newSteamErrorf("steam returned empty offers result\n")
|
||||
}
|
||||
return t.Response, nil
|
||||
}
|
||||
|
||||
// action() is used by Decline() and Cancel()
|
||||
// Steam only return success and error fields for malformed requests,
|
||||
// hence client shall use GetOffer() to check action result
|
||||
// It is also possible to implement Decline/Cancel using steamcommunity,
|
||||
// which have more predictable responses
|
||||
func (c *Client) action(method string, version uint, offerId uint64) error {
|
||||
resp, err := c.client.Do(netutil.NewPostForm(fmt.Sprintf(apiUrl, method, version), netutil.ToUrlValues(map[string]string{
|
||||
"key": string(c.key),
|
||||
"tradeofferid": strconv.FormatUint(offerId, 10),
|
||||
})))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode != 200 {
|
||||
return fmt.Errorf(method+" error: status code %d", resp.StatusCode)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Client) Decline(offerId uint64) error {
|
||||
return c.action("DeclineTradeOffer", 1, offerId)
|
||||
}
|
||||
|
||||
func (c *Client) Cancel(offerId uint64) error {
|
||||
return c.action("CancelTradeOffer", 1, offerId)
|
||||
}
|
||||
|
||||
// Accept received trade offer
|
||||
// It is best to confirm that offer was actually accepted
|
||||
// by calling GetOffer after Accept and checking offer state
|
||||
func (c *Client) Accept(offerId uint64) error {
|
||||
baseurl := fmt.Sprintf("https://steamcommunity.com/tradeoffer/%d/", offerId)
|
||||
req := netutil.NewPostForm(baseurl+"accept", netutil.ToUrlValues(map[string]string{
|
||||
"sessionid": c.sessionId,
|
||||
"serverid": "1",
|
||||
"tradeofferid": strconv.FormatUint(offerId, 10),
|
||||
}))
|
||||
req.Header.Add("Referer", baseurl)
|
||||
|
||||
resp, err := c.client.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
t := new(struct {
|
||||
StrError string `json:"strError"`
|
||||
})
|
||||
if err = json.NewDecoder(resp.Body).Decode(t); err != nil {
|
||||
return err
|
||||
}
|
||||
if t.StrError != "" {
|
||||
return newSteamErrorf("accept error: %v\n", t.StrError)
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
return fmt.Errorf("accept error: status code %d", resp.StatusCode)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type TradeItem struct {
|
||||
AppId uint32 `json:"appid"`
|
||||
ContextId uint64 `json:"contextid,string"`
|
||||
Amount uint64 `json:"amount"`
|
||||
AssetId uint64 `json:"assetid,string,omitempty"`
|
||||
CurrencyId uint64 `json:"currencyid,string,omitempty"`
|
||||
}
|
||||
|
||||
// Sends a new trade offer to the given Steam user. You can optionally specify an access token if you've got one.
|
||||
// In addition, `counteredOfferId` can be non-nil, indicating the trade offer this is a counter for.
|
||||
// On success returns trade offer id
|
||||
func (c *Client) Create(other steamid.SteamId, accessToken *string, myItems, theirItems []TradeItem, counteredOfferId *uint64, message string) (uint64, error) {
|
||||
// Create new trade offer status
|
||||
to := map[string]interface{}{
|
||||
"newversion": true,
|
||||
"version": 3,
|
||||
"me": map[string]interface{}{
|
||||
"assets": myItems,
|
||||
"currency": make([]struct{}, 0),
|
||||
"ready": false,
|
||||
},
|
||||
"them": map[string]interface{}{
|
||||
"assets": theirItems,
|
||||
"currency": make([]struct{}, 0),
|
||||
"ready": false,
|
||||
},
|
||||
}
|
||||
|
||||
jto, err := json.Marshal(to)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Create url parameters for request
|
||||
data := map[string]string{
|
||||
"sessionid": c.sessionId,
|
||||
"serverid": "1",
|
||||
"partner": other.ToString(),
|
||||
"tradeoffermessage": message,
|
||||
"json_tradeoffer": string(jto),
|
||||
}
|
||||
|
||||
var referer string
|
||||
if counteredOfferId != nil {
|
||||
referer = fmt.Sprintf("https://steamcommunity.com/tradeoffer/%d/", *counteredOfferId)
|
||||
data["tradeofferid_countered"] = strconv.FormatUint(*counteredOfferId, 10)
|
||||
} else {
|
||||
// Add token for non-friend offers
|
||||
if accessToken != nil {
|
||||
params := map[string]string{
|
||||
"trade_offer_access_token": *accessToken,
|
||||
}
|
||||
paramsJson, err := json.Marshal(params)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
data["trade_offer_create_params"] = string(paramsJson)
|
||||
|
||||
referer = "https://steamcommunity.com/tradeoffer/new/?partner=" + strconv.FormatUint(uint64(other.GetAccountId()), 10) + "&token=" + *accessToken
|
||||
} else {
|
||||
|
||||
referer = "https://steamcommunity.com/tradeoffer/new/?partner=" + strconv.FormatUint(uint64(other.GetAccountId()), 10)
|
||||
}
|
||||
}
|
||||
|
||||
// Create request
|
||||
req := netutil.NewPostForm("https://steamcommunity.com/tradeoffer/new/send", netutil.ToUrlValues(data))
|
||||
req.Header.Add("Referer", referer)
|
||||
|
||||
// Send request
|
||||
resp, err := c.client.Do(req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
t := new(struct {
|
||||
StrError string `json:"strError"`
|
||||
TradeOfferId uint64 `json:"tradeofferid,string"`
|
||||
})
|
||||
if err = json.NewDecoder(resp.Body).Decode(t); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
// strError code descriptions:
|
||||
// 15 invalide trade access token
|
||||
// 16 timeout
|
||||
// 20 wrong contextid
|
||||
// 25 can't send more offers until some is accepted/cancelled...
|
||||
// 26 object is not in our inventory
|
||||
// error code names are in internal/steamlang/enums.go EResult_name
|
||||
if t.StrError != "" {
|
||||
return 0, newSteamErrorf("create error: %v\n", t.StrError)
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
return 0, fmt.Errorf("create error: status code %d", resp.StatusCode)
|
||||
}
|
||||
if t.TradeOfferId == 0 {
|
||||
return 0, newSteamErrorf("create error: steam returned 0 for trade offer id")
|
||||
}
|
||||
return t.TradeOfferId, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetOwnInventory(contextId uint64, appId uint32) (*inventory.Inventory, error) {
|
||||
return inventory.GetOwnInventory(c.client, contextId, appId)
|
||||
}
|
||||
|
||||
func (c *Client) GetPartnerInventory(other steamid.SteamId, contextId uint64, appId uint32, offerId *uint64) (*inventory.Inventory, error) {
|
||||
return inventory.GetFullInventory(func() (*inventory.PartialInventory, error) {
|
||||
return c.getPartialPartnerInventory(other, contextId, appId, offerId, nil)
|
||||
}, func(start uint) (*inventory.PartialInventory, error) {
|
||||
return c.getPartialPartnerInventory(other, contextId, appId, offerId, &start)
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Client) getPartialPartnerInventory(other steamid.SteamId, contextId uint64, appId uint32, offerId *uint64, start *uint) (*inventory.PartialInventory, error) {
|
||||
data := map[string]string{
|
||||
"sessionid": c.sessionId,
|
||||
"partner": other.ToString(),
|
||||
"contextid": strconv.FormatUint(contextId, 10),
|
||||
"appid": strconv.FormatUint(uint64(appId), 10),
|
||||
}
|
||||
if start != nil {
|
||||
data["start"] = strconv.FormatUint(uint64(*start), 10)
|
||||
}
|
||||
|
||||
baseUrl := "https://steamcommunity.com/tradeoffer/%v/"
|
||||
if offerId != nil {
|
||||
baseUrl = fmt.Sprintf(baseUrl, *offerId)
|
||||
} else {
|
||||
baseUrl = fmt.Sprintf(baseUrl, "new")
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", baseUrl+"partnerinventory/?"+netutil.ToUrlValues(data).Encode(), nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
req.Header.Add("Referer", baseUrl+"?partner="+strconv.FormatUint(uint64(other.GetAccountId()), 10))
|
||||
|
||||
return inventory.DoInventoryRequest(c.client, req)
|
||||
}
|
||||
|
||||
// Can be used to verify accepted tradeoffer and find out received asset ids
|
||||
func (c *Client) GetTradeReceipt(tradeId uint64) ([]*TradeReceiptItem, error) {
|
||||
url := fmt.Sprintf("https://steamcommunity.com/trade/%d/receipt", tradeId)
|
||||
resp, err := c.client.Get(url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
respBody, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items, err := parseTradeReceipt(respBody)
|
||||
if err != nil {
|
||||
return nil, newSteamErrorf("failed to parse trade receipt: %v", err)
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
// Get duration of escrow in days. Call this before sending a trade offer
|
||||
func (c *Client) GetPartnerEscrowDuration(other steamid.SteamId, accessToken *string) (*EscrowDuration, error) {
|
||||
data := map[string]string{
|
||||
"partner": strconv.FormatUint(uint64(other.GetAccountId()), 10),
|
||||
}
|
||||
if accessToken != nil {
|
||||
data["token"] = *accessToken
|
||||
}
|
||||
return c.getEscrowDuration("https://steamcommunity.com/tradeoffer/new/?" + netutil.ToUrlValues(data).Encode())
|
||||
}
|
||||
|
||||
// Get duration of escrow in days. Call this after receiving a trade offer
|
||||
func (c *Client) GetOfferEscrowDuration(offerId uint64) (*EscrowDuration, error) {
|
||||
return c.getEscrowDuration("http://steamcommunity.com/tradeoffer/" + strconv.FormatUint(offerId, 10))
|
||||
}
|
||||
|
||||
func (c *Client) getEscrowDuration(queryUrl string) (*EscrowDuration, error) {
|
||||
resp, err := c.client.Get(queryUrl)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to retrieve escrow duration: %v", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
respBody, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
escrowDuration, err := parseEscrowDuration(respBody)
|
||||
if err != nil {
|
||||
return nil, newSteamErrorf("failed to parse escrow duration: %v", err)
|
||||
}
|
||||
return escrowDuration, nil
|
||||
}
|
||||
|
||||
func (c *Client) GetOfferWithRetry(offerId uint64, retryCount int, retryDelay time.Duration) (*TradeOfferResult, error) {
|
||||
var res *TradeOfferResult
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.GetOffer(offerId)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) GetOffersWithRetry(getSent bool, getReceived bool, getDescriptions bool, activeOnly bool, historicalOnly bool, timeHistoricalCutoff *uint32, retryCount int, retryDelay time.Duration) (*TradeOffersResult, error) {
|
||||
var res *TradeOffersResult
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.GetOffers(getSent, getReceived, getDescriptions, activeOnly, historicalOnly, timeHistoricalCutoff)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) DeclineWithRetry(offerId uint64, retryCount int, retryDelay time.Duration) error {
|
||||
return withRetry(
|
||||
func() error {
|
||||
return c.Decline(offerId)
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) CancelWithRetry(offerId uint64, retryCount int, retryDelay time.Duration) error {
|
||||
return withRetry(
|
||||
func() error {
|
||||
return c.Cancel(offerId)
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) AcceptWithRetry(offerId uint64, retryCount int, retryDelay time.Duration) error {
|
||||
return withRetry(
|
||||
func() error {
|
||||
return c.Accept(offerId)
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) CreateWithRetry(other steamid.SteamId, accessToken *string, myItems, theirItems []TradeItem, counteredOfferId *uint64, message string, retryCount int, retryDelay time.Duration) (uint64, error) {
|
||||
var res uint64
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.Create(other, accessToken, myItems, theirItems, counteredOfferId, message)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) GetOwnInventoryWithRetry(contextId uint64, appId uint32, retryCount int, retryDelay time.Duration) (*inventory.Inventory, error) {
|
||||
var res *inventory.Inventory
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.GetOwnInventory(contextId, appId)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) GetPartnerInventoryWithRetry(other steamid.SteamId, contextId uint64, appId uint32, offerId *uint64, retryCount int, retryDelay time.Duration) (*inventory.Inventory, error) {
|
||||
var res *inventory.Inventory
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.GetPartnerInventory(other, contextId, appId, offerId)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func (c *Client) GetTradeReceiptWithRetry(tradeId uint64, retryCount int, retryDelay time.Duration) ([]*TradeReceiptItem, error) {
|
||||
var res []*TradeReceiptItem
|
||||
return res, withRetry(
|
||||
func() (err error) {
|
||||
res, err = c.GetTradeReceipt(tradeId)
|
||||
return err
|
||||
}, retryCount, retryDelay)
|
||||
}
|
||||
|
||||
func withRetry(f func() error, retryCount int, retryDelay time.Duration) error {
|
||||
if retryCount <= 0 {
|
||||
panic("retry count must be more than 0")
|
||||
}
|
||||
i := 0
|
||||
for {
|
||||
i++
|
||||
if err := f(); err != nil {
|
||||
// If we got steam error do not retry
|
||||
if _, ok := err.(*SteamError); ok {
|
||||
return err
|
||||
}
|
||||
if i == retryCount {
|
||||
return err
|
||||
}
|
||||
time.Sleep(retryDelay)
|
||||
continue
|
||||
}
|
||||
break
|
||||
}
|
||||
return nil
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package tradeoffer
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// SteamError can be returned by Create, Accept, Decline and Cancel methods.
|
||||
// It means we got response from steam, but it was in unknown format
|
||||
// or request was declined.
|
||||
type SteamError struct {
|
||||
msg string
|
||||
}
|
||||
|
||||
func (e *SteamError) Error() string {
|
||||
return e.msg
|
||||
}
|
||||
func newSteamErrorf(format string, a ...interface{}) *SteamError {
|
||||
return &SteamError{fmt.Sprintf(format, a...)}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package tradeoffer
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type EscrowDuration struct {
|
||||
DaysMyEscrow uint32
|
||||
DaysTheirEscrow uint32
|
||||
}
|
||||
|
||||
func parseEscrowDuration(data []byte) (*EscrowDuration, error) {
|
||||
// TODO: why we are using case insensitive matching?
|
||||
myRegex := regexp.MustCompile("(?i)g_daysMyEscrow[\\s=]+(\\d+);")
|
||||
theirRegex := regexp.MustCompile("(?i)g_daysTheirEscrow[\\s=]+(\\d+);")
|
||||
|
||||
myM := myRegex.FindSubmatch(data)
|
||||
theirM := theirRegex.FindSubmatch(data)
|
||||
|
||||
if myM == nil || theirM == nil {
|
||||
// check if access token is valid
|
||||
notFriendsRegex := regexp.MustCompile(">You are not friends with this user<")
|
||||
notFriendsM := notFriendsRegex.FindSubmatch(data)
|
||||
if notFriendsM == nil {
|
||||
return nil, errors.New("regexp does not match")
|
||||
} else {
|
||||
return nil, errors.New("you are not friends with this user")
|
||||
}
|
||||
}
|
||||
|
||||
myEscrow, err := strconv.ParseUint(string(myM[1]), 10, 32)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse my duration into uint: %v", err)
|
||||
}
|
||||
theirEscrow, err := strconv.ParseUint(string(theirM[1]), 10, 32)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse their duration into uint: %v", err)
|
||||
}
|
||||
|
||||
return &EscrowDuration{
|
||||
DaysMyEscrow: uint32(myEscrow),
|
||||
DaysTheirEscrow: uint32(theirEscrow),
|
||||
}, nil
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package tradeoffer
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Philipp15b/go-steam/economy/inventory"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
type TradeReceiptItem struct {
|
||||
AssetId uint64 `json:"id,string"`
|
||||
AppId uint32
|
||||
ContextId uint64
|
||||
Owner uint64 `json:",string"`
|
||||
Pos uint32
|
||||
inventory.Description
|
||||
}
|
||||
|
||||
func parseTradeReceipt(data []byte) ([]*TradeReceiptItem, error) {
|
||||
reg := regexp.MustCompile("oItem =\\s+(.+?});")
|
||||
itemMatches := reg.FindAllSubmatch(data, -1)
|
||||
if itemMatches == nil {
|
||||
return nil, fmt.Errorf("items not found\n")
|
||||
}
|
||||
items := make([]*TradeReceiptItem, 0, len(itemMatches))
|
||||
for _, m := range itemMatches {
|
||||
item := new(TradeReceiptItem)
|
||||
err := json.Unmarshal(m[1], &item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
return items, nil
|
||||
}
|
@ -1,118 +0,0 @@
|
||||
/*
|
||||
Implements methods to interact with the official Trade Offer API.
|
||||
|
||||
See: https://developer.valvesoftware.com/wiki/Steam_Web_API/IEconService
|
||||
*/
|
||||
package tradeoffer
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/Philipp15b/go-steam/economy/inventory"
|
||||
"github.com/Philipp15b/go-steam/steamid"
|
||||
)
|
||||
|
||||
type TradeOfferState uint
|
||||
|
||||
const (
|
||||
TradeOfferState_Invalid TradeOfferState = 1 // Invalid
|
||||
TradeOfferState_Active = 2 // This trade offer has been sent, neither party has acted on it yet.
|
||||
TradeOfferState_Accepted = 3 // The trade offer was accepted by the recipient and items were exchanged.
|
||||
TradeOfferState_Countered = 4 // The recipient made a counter offer
|
||||
TradeOfferState_Expired = 5 // The trade offer was not accepted before the expiration date
|
||||
TradeOfferState_Canceled = 6 // The sender cancelled the offer
|
||||
TradeOfferState_Declined = 7 // The recipient declined the offer
|
||||
TradeOfferState_InvalidItems = 8 // Some of the items in the offer are no longer available (indicated by the missing flag in the output)
|
||||
TradeOfferState_CreatedNeedsConfirmation = 9 // The offer hasn't been sent yet and is awaiting email/mobile confirmation. The offer is only visible to the sender.
|
||||
TradeOfferState_CanceledBySecondFactor = 10 // Either party canceled the offer via email/mobile. The offer is visible to both parties, even if the sender canceled it before it was sent.
|
||||
TradeOfferState_InEscrow = 11 // The trade has been placed on hold. The items involved in the trade have all been removed from both parties' inventories and will be automatically delivered in the future.
|
||||
)
|
||||
|
||||
type TradeOfferConfirmationMethod uint
|
||||
|
||||
const (
|
||||
TradeOfferConfirmationMethod_Invalid TradeOfferConfirmationMethod = 0
|
||||
TradeOfferConfirmationMethod_Email = 1
|
||||
TradeOfferConfirmationMethod_MobileApp = 2
|
||||
)
|
||||
|
||||
type Asset struct {
|
||||
AppId uint32 `json:",string"`
|
||||
ContextId uint64 `json:",string"`
|
||||
AssetId uint64 `json:",string"`
|
||||
CurrencyId uint64 `json:",string"`
|
||||
ClassId uint64 `json:",string"`
|
||||
InstanceId uint64 `json:",string"`
|
||||
Amount uint64 `json:",string"`
|
||||
Missing bool
|
||||
}
|
||||
|
||||
type TradeOffer struct {
|
||||
TradeOfferId uint64 `json:",string"`
|
||||
TradeId uint64 `json:",string"`
|
||||
OtherAccountId uint32 `json:"accountid_other"`
|
||||
OtherSteamId steamid.SteamId `json:"-"`
|
||||
Message string `json:"message"`
|
||||
ExpirationTime uint32 `json:"expiraton_time"`
|
||||
State TradeOfferState `json:"trade_offer_state"`
|
||||
ToGive []*Asset `json:"items_to_give"`
|
||||
ToReceive []*Asset `json:"items_to_receive"`
|
||||
IsOurOffer bool `json:"is_our_offer"`
|
||||
TimeCreated uint32 `json:"time_created"`
|
||||
TimeUpdated uint32 `json:"time_updated"`
|
||||
EscrowEndDate uint32 `json:"escrow_end_date"`
|
||||
ConfirmationMethod TradeOfferConfirmationMethod `json:"confirmation_method"`
|
||||
}
|
||||
|
||||
func (t *TradeOffer) UnmarshalJSON(data []byte) error {
|
||||
type Alias TradeOffer
|
||||
aux := struct {
|
||||
*Alias
|
||||
}{
|
||||
Alias: (*Alias)(t),
|
||||
}
|
||||
if err := json.Unmarshal(data, &aux); err != nil {
|
||||
return err
|
||||
}
|
||||
if t.OtherAccountId == 0 {
|
||||
t.OtherSteamId = steamid.SteamId(0)
|
||||
return nil
|
||||
}
|
||||
t.OtherSteamId = steamid.SteamId(uint64(t.OtherAccountId) + 76561197960265728)
|
||||
return nil
|
||||
}
|
||||
|
||||
type TradeOffersResult struct {
|
||||
Sent []*TradeOffer `json:"trade_offers_sent"`
|
||||
Received []*TradeOffer `json:"trade_offers_received"`
|
||||
Descriptions []*Description
|
||||
}
|
||||
|
||||
type TradeOfferResult struct {
|
||||
Offer *TradeOffer
|
||||
Descriptions []*Description
|
||||
}
|
||||
type Description struct {
|
||||
AppId uint32 `json:"appid"`
|
||||
ClassId uint64 `json:"classid,string"`
|
||||
InstanceId uint64 `json:"instanceid,string"`
|
||||
|
||||
IconUrl string `json:"icon_url"`
|
||||
IconUrlLarge string `json:"icon_url_large"`
|
||||
|
||||
Name string
|
||||
MarketName string `json:"market_name"`
|
||||
MarketHashName string `json:"market_hash_name"`
|
||||
|
||||
// Colors in hex, for example `B2B2B2`
|
||||
NameColor string `json:"name_color"`
|
||||
BackgroundColor string `json:"background_color"`
|
||||
|
||||
Type string
|
||||
|
||||
Tradable bool `json:"tradable"`
|
||||
Commodity bool `json:"commodity"`
|
||||
MarketTradableRestriction uint32 `json:"market_tradable_restriction"`
|
||||
|
||||
Descriptions inventory.DescriptionLines `json:"descriptions"`
|
||||
Actions []*inventory.Action `json:"actions"`
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
*.sw[op]
|
||||
.DS_Store
|
@ -0,0 +1,14 @@
|
||||
# This is an unmaintained fork, left only so it doesn't break imports.
|
||||
|
||||
Please see http://log4go.googlecode.com/
|
||||
|
||||
Installation:
|
||||
- Run `goinstall log4go.googlecode.com/hg`
|
||||
|
||||
Usage:
|
||||
- Add the following import:
|
||||
import l4g "log4go.googlecode.com/hg"
|
||||
|
||||
Acknowledgements:
|
||||
- pomack
|
||||
For providing awesome patches to bring log4go up to the latest Go spec
|
@ -1,14 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
import l4g "code.google.com/p/log4go"
|
||||
|
||||
func main() {
|
||||
log := l4g.NewLogger()
|
||||
defer log.Close()
|
||||
log.AddFilter("stdout", l4g.DEBUG, l4g.NewConsoleLogWriter())
|
||||
log.Info("The time is now: %s", time.Now().Format("15:04:05 MST 2006/01/02"))
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
import l4g "code.google.com/p/log4go"
|
||||
|
||||
const (
|
||||
filename = "flw.log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Get a new logger instance
|
||||
log := l4g.NewLogger()
|
||||
|
||||
// Create a default logger that is logging messages of FINE or higher
|
||||
log.AddFilter("file", l4g.FINE, l4g.NewFileLogWriter(filename, false))
|
||||
log.Close()
|
||||
|
||||
/* Can also specify manually via the following: (these are the defaults) */
|
||||
flw := l4g.NewFileLogWriter(filename, false)
|
||||
flw.SetFormat("[%D %T] [%L] (%S) %M")
|
||||
flw.SetRotate(false)
|
||||
flw.SetRotateSize(0)
|
||||
flw.SetRotateLines(0)
|
||||
flw.SetRotateDaily(false)
|
||||
log.AddFilter("file", l4g.FINE, flw)
|
||||
|
||||
// Log some experimental messages
|
||||
log.Finest("Everything is created now (notice that I will not be printing to the file)")
|
||||
log.Info("The time is now: %s", time.Now().Format("15:04:05 MST 2006/01/02"))
|
||||
log.Critical("Time to close out!")
|
||||
|
||||
// Close the log
|
||||
log.Close()
|
||||
|
||||
// Print what was logged to the file (yes, I know I'm skipping error checking)
|
||||
fd, _ := os.Open(filename)
|
||||
in := bufio.NewReader(fd)
|
||||
fmt.Print("Messages logged to file were: (line numbers not included)\n")
|
||||
for lineno := 1; ; lineno++ {
|
||||
line, err := in.ReadString('\n')
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
fmt.Printf("%3d:\t%s", lineno, line)
|
||||
}
|
||||
fd.Close()
|
||||
|
||||
// Remove the file so it's not lying around
|
||||
os.Remove(filename)
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
)
|
||||
|
||||
var (
|
||||
port = flag.String("p", "12124", "Port number to listen on")
|
||||
)
|
||||
|
||||
func e(err error) {
|
||||
if err != nil {
|
||||
fmt.Printf("Erroring out: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
// Bind to the port
|
||||
bind, err := net.ResolveUDPAddr("0.0.0.0:" + *port)
|
||||
e(err)
|
||||
|
||||
// Create listener
|
||||
listener, err := net.ListenUDP("udp", bind)
|
||||
e(err)
|
||||
|
||||
fmt.Printf("Listening to port %s...\n", *port)
|
||||
for {
|
||||
// read into a new buffer
|
||||
buffer := make([]byte, 1024)
|
||||
_, _, err := listener.ReadFrom(buffer)
|
||||
e(err)
|
||||
|
||||
// log to standard output
|
||||
fmt.Println(string(buffer))
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
import l4g "code.google.com/p/log4go"
|
||||
|
||||
func main() {
|
||||
log := l4g.NewLogger()
|
||||
log.AddFilter("network", l4g.FINEST, l4g.NewSocketLogWriter("udp", "192.168.1.255:12124"))
|
||||
|
||||
// Run `nc -u -l -p 12124` or similar before you run this to see the following message
|
||||
log.Info("The time is now: %s", time.Now().Format("15:04:05 MST 2006/01/02"))
|
||||
|
||||
// This makes sure the output stream buffer is written
|
||||
log.Close()
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package main
|
||||
|
||||
import l4g "code.google.com/p/log4go"
|
||||
|
||||
func main() {
|
||||
// Load the configuration (isn't this easy?)
|
||||
l4g.LoadConfiguration("example.xml")
|
||||
|
||||
// And now we're ready!
|
||||
l4g.Finest("This will only go to those of you really cool UDP kids! If you change enabled=true.")
|
||||
l4g.Debug("Oh no! %d + %d = %d!", 2, 2, 2+2)
|
||||
l4g.Info("About that time, eh chaps?")
|
||||
}
|
@ -1,362 +0,0 @@
|
||||
Mozilla Public License, version 2.0
|
||||
|
||||
1. Definitions
|
||||
|
||||
1.1. "Contributor"
|
||||
|
||||
means each individual or legal entity that creates, contributes to the
|
||||
creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
|
||||
means the combination of the Contributions of others (if any) used by a
|
||||
Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
|
||||
means Source Code Form to which the initial Contributor has attached the
|
||||
notice in Exhibit A, the Executable Form of such Source Code Form, and
|
||||
Modifications of such Source Code Form, in each case including portions
|
||||
thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
a. that the initial Contributor has attached the notice described in
|
||||
Exhibit B to the Covered Software; or
|
||||
|
||||
b. that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the terms of
|
||||
a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
|
||||
means a work that combines Covered Software with other material, in a
|
||||
separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
|
||||
means having the right to grant, to the maximum extent possible, whether
|
||||
at the time of the initial grant or subsequently, any and all of the
|
||||
rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
|
||||
means any of the following:
|
||||
|
||||
a. any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered Software; or
|
||||
|
||||
b. any new file in Source Code Form that contains any Covered Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the License,
|
||||
by the making, using, selling, offering for sale, having made, import,
|
||||
or transfer of either its Contributions or its Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
|
||||
means either the GNU General Public License, Version 2.0, the GNU Lesser
|
||||
General Public License, Version 2.1, the GNU Affero General Public
|
||||
License, Version 3.0, or any later versions of those licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that controls, is
|
||||
controlled by, or is under common control with You. For purposes of this
|
||||
definition, "control" means (a) the power, direct or indirect, to cause
|
||||
the direction or management of such entity, whether by contract or
|
||||
otherwise, or (b) ownership of more than fifty percent (50%) of the
|
||||
outstanding shares or beneficial ownership of such entity.
|
||||
|
||||
|
||||
2. License Grants and Conditions
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
a. under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
b. under Patent Claims of such Contributor to make, use, sell, offer for
|
||||
sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
a. for any code that a Contributor has removed from Covered Software; or
|
||||
|
||||
b. for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
c. under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights to
|
||||
grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
|
||||
Section 2.1.
|
||||
|
||||
|
||||
3. Responsibilities
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
a. such Covered Software must also be made available in Source Code Form,
|
||||
as described in Section 3.1, and You must inform recipients of the
|
||||
Executable Form how they can obtain a copy of such Source Code Form by
|
||||
reasonable means in a timely manner, at a charge no more than the cost
|
||||
of distribution to the recipient; and
|
||||
|
||||
b. You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter the
|
||||
recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty, or
|
||||
limitations of liability) contained within the Source Code Form of the
|
||||
Covered Software, except that You may alter any license notices to the
|
||||
extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this License
|
||||
with respect to some or all of the Covered Software due to statute,
|
||||
judicial order, or regulation then You must: (a) comply with the terms of
|
||||
this License to the maximum extent possible; and (b) describe the
|
||||
limitations and the code they affect. Such description must be placed in a
|
||||
text file included with all distributions of the Covered Software under
|
||||
this License. Except to the extent prohibited by statute or regulation,
|
||||
such description must be sufficiently detailed for a recipient of ordinary
|
||||
skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically if You
|
||||
fail to comply with any of its terms. However, if You become compliant,
|
||||
then the rights granted under this License from a particular Contributor
|
||||
are reinstated (a) provisionally, unless and until such Contributor
|
||||
explicitly and finally terminates Your grants, and (b) on an ongoing
|
||||
basis, if such Contributor fails to notify You of the non-compliance by
|
||||
some reasonable means prior to 60 days after You have come back into
|
||||
compliance. Moreover, Your grants from a particular Contributor are
|
||||
reinstated on an ongoing basis if such Contributor notifies You of the
|
||||
non-compliance by some reasonable means, this is the first time You have
|
||||
received notice of non-compliance with this License from such
|
||||
Contributor, and You become compliant prior to 30 days after Your receipt
|
||||
of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
|
||||
license agreements (excluding distributors and resellers) which have been
|
||||
validly granted by You or Your distributors under this License prior to
|
||||
termination shall survive termination.
|
||||
|
||||
6. Disclaimer of Warranty
|
||||
|
||||
Covered Software is provided under this License on an "as is" basis,
|
||||
without warranty of any kind, either expressed, implied, or statutory,
|
||||
including, without limitation, warranties that the Covered Software is free
|
||||
of defects, merchantable, fit for a particular purpose or non-infringing.
|
||||
The entire risk as to the quality and performance of the Covered Software
|
||||
is with You. Should any Covered Software prove defective in any respect,
|
||||
You (not any Contributor) assume the cost of any necessary servicing,
|
||||
repair, or correction. This disclaimer of warranty constitutes an essential
|
||||
part of this License. No use of any Covered Software is authorized under
|
||||
this License except under this disclaimer.
|
||||
|
||||
7. Limitation of Liability
|
||||
|
||||
Under no circumstances and under no legal theory, whether tort (including
|
||||
negligence), contract, or otherwise, shall any Contributor, or anyone who
|
||||
distributes Covered Software as permitted above, be liable to You for any
|
||||
direct, indirect, special, incidental, or consequential damages of any
|
||||
character including, without limitation, damages for lost profits, loss of
|
||||
goodwill, work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses, even if such party shall have been
|
||||
informed of the possibility of such damages. This limitation of liability
|
||||
shall not apply to liability for death or personal injury resulting from
|
||||
such party's negligence to the extent applicable law prohibits such
|
||||
limitation. Some jurisdictions do not allow the exclusion or limitation of
|
||||
incidental or consequential damages, so this exclusion and limitation may
|
||||
not apply to You.
|
||||
|
||||
8. Litigation
|
||||
|
||||
Any litigation relating to this License may be brought only in the courts
|
||||
of a jurisdiction where the defendant maintains its principal place of
|
||||
business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions. Nothing
|
||||
in this Section shall prevent a party's ability to bring cross-claims or
|
||||
counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides that
|
||||
the language of a contract shall be construed against the drafter shall not
|
||||
be used to construe this License against a Contributor.
|
||||
|
||||
|
||||
10. Versions of the License
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses If You choose to distribute Source Code Form that is
|
||||
Incompatible With Secondary Licenses under the terms of this version of
|
||||
the License, the notice described in Exhibit B of this License must be
|
||||
attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
|
||||
This Source Code Form is subject to the
|
||||
terms of the Mozilla Public License, v.
|
||||
2.0. If a copy of the MPL was not
|
||||
distributed with this file, You can
|
||||
obtain one at
|
||||
http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular file,
|
||||
then You may include the notice in a location (such as a LICENSE file in a
|
||||
relevant directory) where a recipient would be likely to look for such a
|
||||
notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
|
||||
This Source Code Form is "Incompatible
|
||||
With Secondary Licenses", as defined by
|
||||
the Mozilla Public License, v. 2.0.
|
@ -1,140 +0,0 @@
|
||||
package consulapi
|
||||
|
||||
const (
|
||||
// ACLCLientType is the client type token
|
||||
ACLClientType = "client"
|
||||
|
||||
// ACLManagementType is the management type token
|
||||
ACLManagementType = "management"
|
||||
)
|
||||
|
||||
// ACLEntry is used to represent an ACL entry
|
||||
type ACLEntry struct {
|
||||
CreateIndex uint64
|
||||
ModifyIndex uint64
|
||||
ID string
|
||||
Name string
|
||||
Type string
|
||||
Rules string
|
||||
}
|
||||
|
||||
// ACL can be used to query the ACL endpoints
|
||||
type ACL struct {
|
||||
c *Client
|
||||
}
|
||||
|
||||
// ACL returns a handle to the ACL endpoints
|
||||
func (c *Client) ACL() *ACL {
|
||||
return &ACL{c}
|
||||
}
|
||||
|
||||
// Create is used to generate a new token with the given parameters
|
||||
func (a *ACL) Create(acl *ACLEntry, q *WriteOptions) (string, *WriteMeta, error) {
|
||||
r := a.c.newRequest("PUT", "/v1/acl/create")
|
||||
r.setWriteOptions(q)
|
||||
r.obj = acl
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{RequestTime: rtt}
|
||||
var out struct{ ID string }
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
return out.ID, wm, nil
|
||||
}
|
||||
|
||||
// Update is used to update the rules of an existing token
|
||||
func (a *ACL) Update(acl *ACLEntry, q *WriteOptions) (*WriteMeta, error) {
|
||||
r := a.c.newRequest("PUT", "/v1/acl/update")
|
||||
r.setWriteOptions(q)
|
||||
r.obj = acl
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{RequestTime: rtt}
|
||||
return wm, nil
|
||||
}
|
||||
|
||||
// Destroy is used to destroy a given ACL token ID
|
||||
func (a *ACL) Destroy(id string, q *WriteOptions) (*WriteMeta, error) {
|
||||
r := a.c.newRequest("PUT", "/v1/acl/destroy/"+id)
|
||||
r.setWriteOptions(q)
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{RequestTime: rtt}
|
||||
return wm, nil
|
||||
}
|
||||
|
||||
// Clone is used to return a new token cloned from an existing one
|
||||
func (a *ACL) Clone(id string, q *WriteOptions) (string, *WriteMeta, error) {
|
||||
r := a.c.newRequest("PUT", "/v1/acl/clone/"+id)
|
||||
r.setWriteOptions(q)
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{RequestTime: rtt}
|
||||
var out struct{ ID string }
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
return out.ID, wm, nil
|
||||
}
|
||||
|
||||
// Info is used to query for information about an ACL token
|
||||
func (a *ACL) Info(id string, q *QueryOptions) (*ACLEntry, *QueryMeta, error) {
|
||||
r := a.c.newRequest("GET", "/v1/acl/info/"+id)
|
||||
r.setQueryOptions(q)
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var entries []*ACLEntry
|
||||
if err := decodeBody(resp, &entries); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if len(entries) > 0 {
|
||||
return entries[0], qm, nil
|
||||
}
|
||||
return nil, qm, nil
|
||||
}
|
||||
|
||||
// List is used to get all the ACL tokens
|
||||
func (a *ACL) List(q *QueryOptions) ([]*ACLEntry, *QueryMeta, error) {
|
||||
r := a.c.newRequest("GET", "/v1/acl/list")
|
||||
r.setQueryOptions(q)
|
||||
rtt, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var entries []*ACLEntry
|
||||
if err := decodeBody(resp, &entries); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return entries, qm, nil
|
||||
}
|
@ -1,272 +0,0 @@
|
||||
package consulapi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// AgentCheck represents a check known to the agent
|
||||
type AgentCheck struct {
|
||||
Node string
|
||||
CheckID string
|
||||
Name string
|
||||
Status string
|
||||
Notes string
|
||||
Output string
|
||||
ServiceID string
|
||||
ServiceName string
|
||||
}
|
||||
|
||||
// AgentService represents a service known to the agent
|
||||
type AgentService struct {
|
||||
ID string
|
||||
Service string
|
||||
Tags []string
|
||||
Port int
|
||||
}
|
||||
|
||||
// AgentMember represents a cluster member known to the agent
|
||||
type AgentMember struct {
|
||||
Name string
|
||||
Addr string
|
||||
Port uint16
|
||||
Tags map[string]string
|
||||
Status int
|
||||
ProtocolMin uint8
|
||||
ProtocolMax uint8
|
||||
ProtocolCur uint8
|
||||
DelegateMin uint8
|
||||
DelegateMax uint8
|
||||
DelegateCur uint8
|
||||
}
|
||||
|
||||
// AgentServiceRegistration is used to register a new service
|
||||
type AgentServiceRegistration struct {
|
||||
ID string `json:",omitempty"`
|
||||
Name string `json:",omitempty"`
|
||||
Tags []string `json:",omitempty"`
|
||||
Port int `json:",omitempty"`
|
||||
Check *AgentServiceCheck
|
||||
}
|
||||
|
||||
// AgentCheckRegistration is used to register a new check
|
||||
type AgentCheckRegistration struct {
|
||||
ID string `json:",omitempty"`
|
||||
Name string `json:",omitempty"`
|
||||
Notes string `json:",omitempty"`
|
||||
AgentServiceCheck
|
||||
}
|
||||
|
||||
// AgentServiceCheck is used to create an associated
|
||||
// check for a service
|
||||
type AgentServiceCheck struct {
|
||||
Script string `json:",omitempty"`
|
||||
Interval string `json:",omitempty"`
|
||||
TTL string `json:",omitempty"`
|
||||
}
|
||||
|
||||
// Agent can be used to query the Agent endpoints
|
||||
type Agent struct {
|
||||
c *Client
|
||||
|
||||
// cache the node name
|
||||
nodeName string
|
||||
}
|
||||
|
||||
// Agent returns a handle to the agent endpoints
|
||||
func (c *Client) Agent() *Agent {
|
||||
return &Agent{c: c}
|
||||
}
|
||||
|
||||
// Self is used to query the agent we are speaking to for
|
||||
// information about itself
|
||||
func (a *Agent) Self() (map[string]map[string]interface{}, error) {
|
||||
r := a.c.newRequest("GET", "/v1/agent/self")
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var out map[string]map[string]interface{}
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// NodeName is used to get the node name of the agent
|
||||
func (a *Agent) NodeName() (string, error) {
|
||||
if a.nodeName != "" {
|
||||
return a.nodeName, nil
|
||||
}
|
||||
info, err := a.Self()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
name := info["Config"]["NodeName"].(string)
|
||||
a.nodeName = name
|
||||
return name, nil
|
||||
}
|
||||
|
||||
// Checks returns the locally registered checks
|
||||
func (a *Agent) Checks() (map[string]*AgentCheck, error) {
|
||||
r := a.c.newRequest("GET", "/v1/agent/checks")
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var out map[string]*AgentCheck
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// Services returns the locally registered services
|
||||
func (a *Agent) Services() (map[string]*AgentService, error) {
|
||||
r := a.c.newRequest("GET", "/v1/agent/services")
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var out map[string]*AgentService
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// Members returns the known gossip members. The WAN
|
||||
// flag can be used to query a server for WAN members.
|
||||
func (a *Agent) Members(wan bool) ([]*AgentMember, error) {
|
||||
r := a.c.newRequest("GET", "/v1/agent/members")
|
||||
if wan {
|
||||
r.params.Set("wan", "1")
|
||||
}
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var out []*AgentMember
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// ServiceRegister is used to register a new service with
|
||||
// the local agent
|
||||
func (a *Agent) ServiceRegister(service *AgentServiceRegistration) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/service/register")
|
||||
r.obj = service
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// ServiceDeregister is used to deregister a service with
|
||||
// the local agent
|
||||
func (a *Agent) ServiceDeregister(serviceID string) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/service/deregister/"+serviceID)
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// PassTTL is used to set a TTL check to the passing state
|
||||
func (a *Agent) PassTTL(checkID, note string) error {
|
||||
return a.UpdateTTL(checkID, note, "pass")
|
||||
}
|
||||
|
||||
// WarnTTL is used to set a TTL check to the warning state
|
||||
func (a *Agent) WarnTTL(checkID, note string) error {
|
||||
return a.UpdateTTL(checkID, note, "warn")
|
||||
}
|
||||
|
||||
// FailTTL is used to set a TTL check to the failing state
|
||||
func (a *Agent) FailTTL(checkID, note string) error {
|
||||
return a.UpdateTTL(checkID, note, "fail")
|
||||
}
|
||||
|
||||
// UpdateTTL is used to update the TTL of a check
|
||||
func (a *Agent) UpdateTTL(checkID, note, status string) error {
|
||||
switch status {
|
||||
case "pass":
|
||||
case "warn":
|
||||
case "fail":
|
||||
default:
|
||||
return fmt.Errorf("Invalid status: %s", status)
|
||||
}
|
||||
endpoint := fmt.Sprintf("/v1/agent/check/%s/%s", status, checkID)
|
||||
r := a.c.newRequest("PUT", endpoint)
|
||||
r.params.Set("note", note)
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// CheckRegister is used to register a new check with
|
||||
// the local agent
|
||||
func (a *Agent) CheckRegister(check *AgentCheckRegistration) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/check/register")
|
||||
r.obj = check
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// CheckDeregister is used to deregister a check with
|
||||
// the local agent
|
||||
func (a *Agent) CheckDeregister(checkID string) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/check/deregister/"+checkID)
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Join is used to instruct the agent to attempt a join to
|
||||
// another cluster member
|
||||
func (a *Agent) Join(addr string, wan bool) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/join/"+addr)
|
||||
if wan {
|
||||
r.params.Set("wan", "1")
|
||||
}
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
// ForceLeave is used to have the agent eject a failed node
|
||||
func (a *Agent) ForceLeave(node string) error {
|
||||
r := a.c.newRequest("PUT", "/v1/agent/force-leave/"+node)
|
||||
_, resp, err := requireOK(a.c.doRequest(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
resp.Body.Close()
|
||||
return nil
|
||||
}
|
@ -1,323 +0,0 @@
|
||||
package consulapi
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// QueryOptions are used to parameterize a query
|
||||
type QueryOptions struct {
|
||||
// Providing a datacenter overwrites the DC provided
|
||||
// by the Config
|
||||
Datacenter string
|
||||
|
||||
// AllowStale allows any Consul server (non-leader) to service
|
||||
// a read. This allows for lower latency and higher throughput
|
||||
AllowStale bool
|
||||
|
||||
// RequireConsistent forces the read to be fully consistent.
|
||||
// This is more expensive but prevents ever performing a stale
|
||||
// read.
|
||||
RequireConsistent bool
|
||||
|
||||
// WaitIndex is used to enable a blocking query. Waits
|
||||
// until the timeout or the next index is reached
|
||||
WaitIndex uint64
|
||||
|
||||
// WaitTime is used to bound the duration of a wait.
|
||||
// Defaults to that of the Config, but can be overriden.
|
||||
WaitTime time.Duration
|
||||
|
||||
// Token is used to provide a per-request ACL token
|
||||
// which overrides the agent's default token.
|
||||
Token string
|
||||
}
|
||||
|
||||
// WriteOptions are used to parameterize a write
|
||||
type WriteOptions struct {
|
||||
// Providing a datacenter overwrites the DC provided
|
||||
// by the Config
|
||||
Datacenter string
|
||||
|
||||
// Token is used to provide a per-request ACL token
|
||||
// which overrides the agent's default token.
|
||||
Token string
|
||||
}
|
||||
|
||||
// QueryMeta is used to return meta data about a query
|
||||
type QueryMeta struct {
|
||||
// LastIndex. This can be used as a WaitIndex to perform
|
||||
// a blocking query
|
||||
LastIndex uint64
|
||||
|
||||
// Time of last contact from the leader for the
|
||||
// server servicing the request
|
||||
LastContact time.Duration
|
||||
|
||||
// Is there a known leader
|
||||
KnownLeader bool
|
||||
|
||||
// How long did the request take
|
||||
RequestTime time.Duration
|
||||
}
|
||||
|
||||
// WriteMeta is used to return meta data about a write
|
||||
type WriteMeta struct {
|
||||
// How long did the request take
|
||||
RequestTime time.Duration
|
||||
}
|
||||
|
||||
// HttpBasicAuth is used to authenticate http client with HTTP Basic Authentication
|
||||
type HttpBasicAuth struct {
|
||||
// Username to use for HTTP Basic Authentication
|
||||
Username string
|
||||
|
||||
// Password to use for HTTP Basic Authentication
|
||||
Password string
|
||||
}
|
||||
|
||||
// Config is used to configure the creation of a client
|
||||
type Config struct {
|
||||
// Address is the address of the Consul server
|
||||
Address string
|
||||
|
||||
// Scheme is the URI scheme for the Consul server
|
||||
Scheme string
|
||||
|
||||
// Datacenter to use. If not provided, the default agent datacenter is used.
|
||||
Datacenter string
|
||||
|
||||
// HttpClient is the client to use. Default will be
|
||||
// used if not provided.
|
||||
HttpClient *http.Client
|
||||
|
||||
// HttpAuth is the auth info to use for http access.
|
||||
HttpAuth *HttpBasicAuth
|
||||
|
||||
// WaitTime limits how long a Watch will block. If not provided,
|
||||
// the agent default values will be used.
|
||||
WaitTime time.Duration
|
||||
|
||||
// Token is used to provide a per-request ACL token
|
||||
// which overrides the agent's default token.
|
||||
Token string
|
||||
}
|
||||
|
||||
// DefaultConfig returns a default configuration for the client
|
||||
func DefaultConfig() *Config {
|
||||
return &Config{
|
||||
Address: "127.0.0.1:8500",
|
||||
Scheme: "http",
|
||||
HttpClient: http.DefaultClient,
|
||||
}
|
||||
}
|
||||
|
||||
// Client provides a client to the Consul API
|
||||
type Client struct {
|
||||
config Config
|
||||
}
|
||||
|
||||
// NewClient returns a new client
|
||||
func NewClient(config *Config) (*Client, error) {
|
||||
// bootstrap the config
|
||||
defConfig := DefaultConfig()
|
||||
|
||||
if len(config.Address) == 0 {
|
||||
config.Address = defConfig.Address
|
||||
}
|
||||
|
||||
if len(config.Scheme) == 0 {
|
||||
config.Scheme = defConfig.Scheme
|
||||
}
|
||||
|
||||
if config.HttpClient == nil {
|
||||
config.HttpClient = defConfig.HttpClient
|
||||
}
|
||||
|
||||
client := &Client{
|
||||
config: *config,
|
||||
}
|
||||
return client, nil
|
||||
}
|
||||
|
||||
// request is used to help build up a request
|
||||
type request struct {
|
||||
config *Config
|
||||
method string
|
||||
url *url.URL
|
||||
params url.Values
|
||||
body io.Reader
|
||||
obj interface{}
|
||||
}
|
||||
|
||||
// setQueryOptions is used to annotate the request with
|
||||
// additional query options
|
||||
func (r *request) setQueryOptions(q *QueryOptions) {
|
||||
if q == nil {
|
||||
return
|
||||
}
|
||||
if q.Datacenter != "" {
|
||||
r.params.Set("dc", q.Datacenter)
|
||||
}
|
||||
if q.AllowStale {
|
||||
r.params.Set("stale", "")
|
||||
}
|
||||
if q.RequireConsistent {
|
||||
r.params.Set("consistent", "")
|
||||
}
|
||||
if q.WaitIndex != 0 {
|
||||
r.params.Set("index", strconv.FormatUint(q.WaitIndex, 10))
|
||||
}
|
||||
if q.WaitTime != 0 {
|
||||
r.params.Set("wait", durToMsec(q.WaitTime))
|
||||
}
|
||||
if q.Token != "" {
|
||||
r.params.Set("token", q.Token)
|
||||
}
|
||||
}
|
||||
|
||||
// durToMsec converts a duration to a millisecond specified string
|
||||
func durToMsec(dur time.Duration) string {
|
||||
return fmt.Sprintf("%dms", dur/time.Millisecond)
|
||||
}
|
||||
|
||||
// setWriteOptions is used to annotate the request with
|
||||
// additional write options
|
||||
func (r *request) setWriteOptions(q *WriteOptions) {
|
||||
if q == nil {
|
||||
return
|
||||
}
|
||||
if q.Datacenter != "" {
|
||||
r.params.Set("dc", q.Datacenter)
|
||||
}
|
||||
if q.Token != "" {
|
||||
r.params.Set("token", q.Token)
|
||||
}
|
||||
}
|
||||
|
||||
// toHTTP converts the request to an HTTP request
|
||||
func (r *request) toHTTP() (*http.Request, error) {
|
||||
// Encode the query parameters
|
||||
r.url.RawQuery = r.params.Encode()
|
||||
|
||||
// Get the url sring
|
||||
urlRaw := r.url.String()
|
||||
|
||||
// Check if we should encode the body
|
||||
if r.body == nil && r.obj != nil {
|
||||
if b, err := encodeBody(r.obj); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
r.body = b
|
||||
}
|
||||
}
|
||||
|
||||
// Create the HTTP request
|
||||
req, err := http.NewRequest(r.method, urlRaw, r.body)
|
||||
|
||||
// Setup auth
|
||||
if err == nil && r.config.HttpAuth != nil {
|
||||
req.SetBasicAuth(r.config.HttpAuth.Username, r.config.HttpAuth.Password)
|
||||
}
|
||||
|
||||
return req, err
|
||||
}
|
||||
|
||||
// newRequest is used to create a new request
|
||||
func (c *Client) newRequest(method, path string) *request {
|
||||
r := &request{
|
||||
config: &c.config,
|
||||
method: method,
|
||||
url: &url.URL{
|
||||
Scheme: c.config.Scheme,
|
||||
Host: c.config.Address,
|
||||
Path: path,
|
||||
},
|
||||
params: make(map[string][]string),
|
||||
}
|
||||
if c.config.Datacenter != "" {
|
||||
r.params.Set("dc", c.config.Datacenter)
|
||||
}
|
||||
if c.config.WaitTime != 0 {
|
||||
r.params.Set("wait", durToMsec(r.config.WaitTime))
|
||||
}
|
||||
if c.config.Token != "" {
|
||||
r.params.Set("token", r.config.Token)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// doRequest runs a request with our client
|
||||
func (c *Client) doRequest(r *request) (time.Duration, *http.Response, error) {
|
||||
req, err := r.toHTTP()
|
||||
if err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
start := time.Now()
|
||||
resp, err := c.config.HttpClient.Do(req)
|
||||
diff := time.Now().Sub(start)
|
||||
return diff, resp, err
|
||||
}
|
||||
|
||||
// parseQueryMeta is used to help parse query meta-data
|
||||
func parseQueryMeta(resp *http.Response, q *QueryMeta) error {
|
||||
header := resp.Header
|
||||
|
||||
// Parse the X-Consul-Index
|
||||
index, err := strconv.ParseUint(header.Get("X-Consul-Index"), 10, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Failed to parse X-Consul-Index: %v", err)
|
||||
}
|
||||
q.LastIndex = index
|
||||
|
||||
// Parse the X-Consul-LastContact
|
||||
last, err := strconv.ParseUint(header.Get("X-Consul-LastContact"), 10, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Failed to parse X-Consul-LastContact: %v", err)
|
||||
}
|
||||
q.LastContact = time.Duration(last) * time.Millisecond
|
||||
|
||||
// Parse the X-Consul-KnownLeader
|
||||
switch header.Get("X-Consul-KnownLeader") {
|
||||
case "true":
|
||||
q.KnownLeader = true
|
||||
default:
|
||||
q.KnownLeader = false
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// decodeBody is used to JSON decode a body
|
||||
func decodeBody(resp *http.Response, out interface{}) error {
|
||||
dec := json.NewDecoder(resp.Body)
|
||||
return dec.Decode(out)
|
||||
}
|
||||
|
||||
// encodeBody is used to encode a request body
|
||||
func encodeBody(obj interface{}) (io.Reader, error) {
|
||||
buf := bytes.NewBuffer(nil)
|
||||
enc := json.NewEncoder(buf)
|
||||
if err := enc.Encode(obj); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
// requireOK is used to wrap doRequest and check for a 200
|
||||
func requireOK(d time.Duration, resp *http.Response, e error) (time.Duration, *http.Response, error) {
|
||||
if e != nil {
|
||||
return d, resp, e
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
var buf bytes.Buffer
|
||||
io.Copy(&buf, resp.Body)
|
||||
return d, resp, fmt.Errorf("Unexpected response code: %d (%s)", resp.StatusCode, buf.Bytes())
|
||||
}
|
||||
return d, resp, e
|
||||
}
|
@ -1,181 +0,0 @@
|
||||
package consulapi
|
||||
|
||||
type Node struct {
|
||||
Node string
|
||||
Address string
|
||||
}
|
||||
|
||||
type CatalogService struct {
|
||||
Node string
|
||||
Address string
|
||||
ServiceID string
|
||||
ServiceName string
|
||||
ServiceTags []string
|
||||
ServicePort int
|
||||
}
|
||||
|
||||
type CatalogNode struct {
|
||||
Node *Node
|
||||
Services map[string]*AgentService
|
||||
}
|
||||
|
||||
type CatalogRegistration struct {
|
||||
Node string
|
||||
Address string
|
||||
Datacenter string
|
||||
Service *AgentService
|
||||
Check *AgentCheck
|
||||
}
|
||||
|
||||
type CatalogDeregistration struct {
|
||||
Node string
|
||||
Address string
|
||||
Datacenter string
|
||||
ServiceID string
|
||||
CheckID string
|
||||
}
|
||||
|
||||
// Catalog can be used to query the Catalog endpoints
|
||||
type Catalog struct {
|
||||
c *Client
|
||||
}
|
||||
|
||||
// Catalog returns a handle to the catalog endpoints
|
||||
func (c *Client) Catalog() *Catalog {
|
||||
return &Catalog{c}
|
||||
}
|
||||
|
||||
func (c *Catalog) Register(reg *CatalogRegistration, q *WriteOptions) (*WriteMeta, error) {
|
||||
r := c.c.newRequest("PUT", "/v1/catalog/register")
|
||||
r.setWriteOptions(q)
|
||||
r.obj = reg
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{}
|
||||
wm.RequestTime = rtt
|
||||
|
||||
return wm, nil
|
||||
}
|
||||
|
||||
func (c *Catalog) Deregister(dereg *CatalogDeregistration, q *WriteOptions) (*WriteMeta, error) {
|
||||
r := c.c.newRequest("PUT", "/v1/catalog/deregister")
|
||||
r.setWriteOptions(q)
|
||||
r.obj = dereg
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.Body.Close()
|
||||
|
||||
wm := &WriteMeta{}
|
||||
wm.RequestTime = rtt
|
||||
|
||||
return wm, nil
|
||||
}
|
||||
|
||||
// Datacenters is used to query for all the known datacenters
|
||||
func (c *Catalog) Datacenters() ([]string, error) {
|
||||
r := c.c.newRequest("GET", "/v1/catalog/datacenters")
|
||||
_, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var out []string
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// Nodes is used to query all the known nodes
|
||||
func (c *Catalog) Nodes(q *QueryOptions) ([]*Node, *QueryMeta, error) {
|
||||
r := c.c.newRequest("GET", "/v1/catalog/nodes")
|
||||
r.setQueryOptions(q)
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var out []*Node
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return out, qm, nil
|
||||
}
|
||||
|
||||
// Services is used to query for all known services
|
||||
func (c *Catalog) Services(q *QueryOptions) (map[string][]string, *QueryMeta, error) {
|
||||
r := c.c.newRequest("GET", "/v1/catalog/services")
|
||||
r.setQueryOptions(q)
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var out map[string][]string
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return out, qm, nil
|
||||
}
|
||||
|
||||
// Service is used to query catalog entries for a given service
|
||||
func (c *Catalog) Service(service, tag string, q *QueryOptions) ([]*CatalogService, *QueryMeta, error) {
|
||||
r := c.c.newRequest("GET", "/v1/catalog/service/"+service)
|
||||
r.setQueryOptions(q)
|
||||
if tag != "" {
|
||||
r.params.Set("tag", tag)
|
||||
}
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var out []*CatalogService
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return out, qm, nil
|
||||
}
|
||||
|
||||
// Node is used to query for service information about a single node
|
||||
func (c *Catalog) Node(node string, q *QueryOptions) (*CatalogNode, *QueryMeta, error) {
|
||||
r := c.c.newRequest("GET", "/v1/catalog/node/"+node)
|
||||
r.setQueryOptions(q)
|
||||
rtt, resp, err := requireOK(c.c.doRequest(r))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
qm := &QueryMeta{}
|
||||
parseQueryMeta(resp, qm)
|
||||
qm.RequestTime = rtt
|
||||
|
||||
var out *CatalogNode
|
||||
if err := decodeBody(resp, &out); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return out, qm, nil
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue