Compare commits

..

No commits in common. "d84bfb7ebaabf61c6ba842cefe69c9c06eb6bcc0" and "f16da548b67324d5b3688fcdf5483d596d546248" have entirely different histories.

2 changed files with 13 additions and 27 deletions

@ -1,18 +1,16 @@
package roblox
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"strconv"
"strings"
)
type AssetUploadOptions struct {
Name string
AssetID int
Description string
Public bool
Comments bool
@ -24,16 +22,17 @@ type AssetUploadResponse struct {
AssetVersionID int64 `json:"AssetVersionId"`
}
func (s *Session) CreateAsset(options *AssetUploadOptions, f io.Reader) (int, error) {
endpoint, err := url.Parse("https://data.roblox.com/Data/Upload.ashx?json=1&type=Model&genreTypeId=1")
func (s *Session) CreateAsset(options *AssetUploadOptions, f io.Reader) (AssetUploadResponse, error) {
var aresp AssetUploadResponse
endpoint, err := url.Parse("https://data.roblox.com/Data/Upload.ashx?json=1&assetid=0&type=Model&genreTypeId=1")
if err != nil {
return -1, err
return aresp, err
}
query := endpoint.Query()
query.Set("name", options.Name)
query.Set("description", options.Description)
query.Set("assetid", strconv.Itoa(options.AssetID))
// Comments
if options.Comments {
@ -56,38 +55,25 @@ func (s *Session) CreateAsset(options *AssetUploadOptions, f io.Reader) (int, er
endpoint.RawQuery = query.Encode()
req, err := http.NewRequest("POST", endpoint.String(), nil)
req, err := http.NewRequest("POST", endpoint.String(), f)
req.Header.Set("user-agent", "Roblox")
// Perform request
resp, err := s.client.Do(req)
if err != nil {
return -1, err
return aresp, err
}
defer resp.Body.Close()
if resp.StatusCode == 403 && resp.Header.Get("X-Csrf-Token") != "" {
req, err := http.NewRequest("POST", endpoint.String(), f)
req.Header.Set("user-agent", "Roblox")
req.Header.Set("x-csrf-token", strings.Trim(resp.Header["X-Csrf-Token"][0], " "))
// Perform request
resp, err = s.client.Do(req)
if err != nil {
return -1, err
}
defer resp.Body.Close()
}
if resp.StatusCode != 200 {
return -1, fmt.Errorf(resp.Status)
return aresp, fmt.Errorf(resp.Status)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return -1, err
if err := json.NewDecoder(resp.Body).Decode(&aresp); err != nil {
return aresp, err
}
return strconv.Atoi(string(body))
return aresp, nil
}
func (s *Session) Download(id int) (io.Reader, error) {

2
go.mod

@ -1,3 +1,3 @@
module git.itzana.me/itzaname/go-roblox
module ci.itzana.me/itzaname/go-roblox
go 1.15