// GetLatestModel returns the asset id of the latest model for a given user. // While this is useful for retrieving the asset id of a newly created model // that was just uploaded, it is not necessarily reliable for this purpose. func GetLatestModel(client *rbxweb.Client, userId int32) (assetId int64, err error) { if userId == 0 { return 0, errors.New("invalid user id") } query := url.Values{ "Category": {"Models"}, "SortType": {"RecentlyUpdated"}, "IncludeNotForSale": {"true"}, "ResultsPerPage": {"1"}, "CreatorID": {client.I32toa(userId)}, } resp, err := client.Get(client.GetURL(`api`, `/catalog/json`, query)) if err = client.AssertResp(resp, err); err != nil { return 0, err } defer resp.Body.Close() dec := json.NewDecoder(resp.Body) var asset []struct { AssetId int64 } if err = dec.Decode(&asset); err != nil { return 0, errors.New("JSON decode failed: " + err.Error()) } return asset[0].AssetId, nil }
// GetNameFromId returns a user name from a user id. func GetNameFromId(client *rbxweb.Client, id int32) (name string, err error) { if id == 0 { return "", errors.New("id not specified") } resp, err := client.Get(client.GetURL(`api`, `/users/`+client.I32toa(id), nil)) if err = client.AssertResp(resp, err); err != nil { return "", err } defer resp.Body.Close() dec := json.NewDecoder(resp.Body) var user struct { Username string } if err = dec.Decode(&user); err != nil { return "", errors.New("JSON decode failed: " + err.Error()) } return user.Username, nil }