コード例 #1
0
ファイル: players_db.go プロジェクト: mukta3396/abalone
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
}
コード例 #2
0
ファイル: players_db.go プロジェクト: mukta3396/abalone
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
}
コード例 #3
0
ファイル: players_client.go プロジェクト: mukta3396/abalone
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
}