diff options
Diffstat (limited to 'vendor/github.com/Philipp15b/go-steam/tradeoffer/tradeoffer.go')
-rw-r--r-- | vendor/github.com/Philipp15b/go-steam/tradeoffer/tradeoffer.go | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/vendor/github.com/Philipp15b/go-steam/tradeoffer/tradeoffer.go b/vendor/github.com/Philipp15b/go-steam/tradeoffer/tradeoffer.go new file mode 100644 index 00000000..1cf3aaa3 --- /dev/null +++ b/vendor/github.com/Philipp15b/go-steam/tradeoffer/tradeoffer.go @@ -0,0 +1,118 @@ +/* +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"` +} |