makeApiRequest.go

mail@pastecode.io avatarunknown
golang
a month ago
2.9 kB
1
Indexable
Never
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
)

// Функция для выполнения API запросов
func makeApiRequest(urlStr string, data url.Values) (map[string]interface{}, error) {
	// Создание HTTP клиента
	client := http.Client{}

	// Создание POST запроса с данными в формате x-www-form-urlencoded
	req, err := http.NewRequest("POST", urlStr, bytes.NewBufferString(data.Encode()))
	if err != nil {
		return nil, err
	}

	// Установка заголовка Content-Type
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	// Выполнение запроса
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	// Чтение тела ответа
	respBody, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}

	// Обработка успешного ответа
	if resp.StatusCode == http.StatusOK {
		var responseData map[string]interface{}
		err := json.Unmarshal(respBody, &responseData)
		if err != nil {
			return nil, err
		}
		return responseData, nil
	}

	// Обработка ошибки HTTP запроса
	return nil, fmt.Errorf("HTTP Error: %s", resp.Status)
}

func main() {
	// Авторизация и запрос товаров с "Al-Style"
	alStyleAccessToken := "ВАШ_ACCESS_TOKEN_AL_STYLE"
	alStyleProductsURL := "https://api.al-style.kz/api/elements"
	alStyleProductsData := url.Values{
		"access-token": {alStyleAccessToken},
		// Дополнительные параметры запроса "Al-Style", если необходимо
	}

	// Выполнение запроса к "Al-Style"
	alStyleProductsResponse, err := makeApiRequest(alStyleProductsURL, alStyleProductsData)
	if err != nil {
		fmt.Println("Ошибка получения данных с Al-Style:", err)
		return
	}

	// Обработка данных "Al-Style"
	fmt.Println("Данные с Al-Style:", alStyleProductsResponse)

	// Авторизация и импорт товаров в "Kaspi"
	kaspiAccessToken := "ВАШ_ACCESS_TOKEN_KASPI"
	kaspiImportURL := "https://kaspi.kz/api/v2/products/import"
	kaspiImportData := url.Values{
		"access_token": {kaspiAccessToken},
		// Дополнительные параметры импорта "Kaspi", если необходимо
	}

	// Выполнение запроса на импорт в "Kaspi"
	kaspiImportResponse, err := makeApiRequest(kaspiImportURL, kaspiImportData)
	if err != nil {
		fmt.Println("Ошибка импорта в Kaspi:", err)
		return
	}

	// Обработка данных импорта в "Kaspi"
	fmt.Println("Ответ от Kaspi:", kaspiImportResponse)
}