boosty

Форк
0
/
call.go 
37 строк · 707.0 Байт
1
package boosty
2

3
import (
4
	"encoding/json"
5
	"fmt"
6
	"net/url"
7

8
	"gohome.4gophers.ru/getapp/boosty/request"
9
)
10

11
type Method[T interface{}] struct {
12
	request *request.Request
13
	method  string
14
	url     string
15
	values  url.Values
16
}
17

18
func (m *Method[T]) Call(model T) (*T, error) {
19
	u := m.url + m.values.Encode()
20

21
	resp, err := m.request.Request(m.method, u, nil)
22
	if err != nil {
23
		return nil, fmt.Errorf("error on do request: %w", err)
24
	}
25

26
	defer resp.Body.Close()
27

28
	if resp.StatusCode >= 400 {
29
		return nil, fmt.Errorf("boosty request status error")
30
	}
31

32
	if err := json.NewDecoder(resp.Body).Decode(&model); err != nil {
33
		return nil, fmt.Errorf("boosty request decode error: %w", err)
34
	}
35

36
	return &model, nil
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.