mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-06-27 21:39:22 +00:00
Add vendor (steam)
This commit is contained in:
122
vendor/github.com/Philipp15b/go-steam/trade/trade.go
generated
vendored
Normal file
122
vendor/github.com/Philipp15b/go-steam/trade/trade.go
generated
vendored
Normal file
@ -0,0 +1,122 @@
|
||||
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)
|
||||
}
|
Reference in New Issue
Block a user