func (s *playersDB) Upload(userID int64, p api.Player, executable io.Reader) (*api.Player, error) { var buf bytes.Buffer io.Copy(&buf, executable) exeBytes := buf.Bytes() mh, err := multihash.Sum(exeBytes, multihash.SHA2_256) if err != nil { return nil, err } hashOfExe := mh.HexString() exePath := path.Join(s.FilestoragePath, hashOfExe) if err := ioutil.WriteFile(exePath, exeBytes, os.ModePerm); err != nil { return nil, err } if err := operator.Validate(exePath, s.Ports); err != nil { return nil, err } log.Printf("successfully validated %s", p) p.AuthorId = userID p.Path = hashOfExe if err := s.DB.Create(&p).Error; err != nil { return nil, err } return &p, nil }
func (s *playersDB) Create(userID int64, p api.Player) (*api.Player, error) { p.AuthorId = userID if err := s.DB.Create(&p).Error; err != nil { return nil, err } return &p, nil }
func (s *playersClient) Create(userID int64, p api.Player) (*api.Player, error) { p.AuthorId = userID var buf bytes.Buffer if err := json.NewEncoder(&buf).Encode(&p); err != nil { return nil, err } path, err := router.NewAPIRouter().Get(router.PlayersCreate).URL() if err != nil { return nil, err } resp, err := http.Post(s.client.BaseURL+path.String(), "application/json", &buf) if err != nil { return nil, err } if resp.StatusCode != http.StatusOK { return nil, newHTTPError(resp) } var player api.Player if err := json.NewDecoder(resp.Body).Decode(&player); err != nil { return nil, err } return &player, nil }