summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Philipp15b/go-steam/tradeoffer/receipt.go
blob: 3f4b556d50195c3f948a9c6f73c9939f6baeba0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
}