# Примеры использования API

На этой странице представлены примеры кода для взаимодействия с API NETTS на различных языках программирования.

# Примеры на Python

# Получение цен на энергию

#!/usr/bin/env python3
import sys
import json
import requests
from datetime import datetime

# Конфигурация
url = "https://netts.io/apiv2/prices"
api_key = "ваш_api_ключ"  # Замените на ваш реальный API-ключ
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": api_key
}

try:
    print(f"[{datetime.now()}] Отправка запроса цен на {url}")
    
    # Отправляем GET-запрос к API цен
    response = requests.get(url, headers=headers, timeout=15)
    
    # Обрабатываем JSON-ответ
    if response.status_code == 200:
        data = response.json()
        
        # Выводим краткую информацию
        print("\nИнформация о ценах:")
        print(f"Статус: {data.get('status')}")
        print(f"Текущее время UTC: {data.get('current_utc_time')}")
        print(f"Активный период: {data.get('active_period')}")
        print(f"Цена хоста: {data.get('host_price')} TRX")
        
        # Выводим информацию о периодах
        print("\nПериоды цен:")
        for period in data.get('periods', []):
            is_active = period.get('is_active', False)
            active_marker = " *АКТИВЕН*" if is_active else ""
            print(f"\n{period.get('label')}{active_marker}:")
            print(f"  Время: {period.get('period')}")
            
            prices = period.get('prices', {})
            # Меньше 200k энергии
            less_than_200k = prices.get('less_than_200k', {})
            print(f"  Меньше 200k: {less_than_200k.get('price_sun')} sun")
            
            # Ровно 131k энергии
            equal_131k = prices.get('equal_131k', {})
            print(f"  Ровно 131k: {equal_131k.get('price_sun')} sun")
            
            # Больше 200k энергии
            more_than_200k = prices.get('more_than_200k', {})
            print(f"  Больше 200k: {more_than_200k.get('price_sun')} sun")
    else:
        print(f"Ошибка: {response.status_code}")
        print(response.text)
        
except requests.exceptions.RequestException as e:
    print(f"Ошибка запроса: {str(e)}")
except Exception as e:
    print(f"Непредвиденная ошибка: {str(e)}")

# Получение информации о пользователе

#!/usr/bin/env python3
import sys
import json
import requests
from datetime import datetime

# Конфигурация
url = "https://netts.io/apiv2/userinfo"
api_key = "ваш_api_ключ"  # Замените на ваш реальный API-ключ
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": api_key
}

try:
    print(f"[{datetime.now()}] Запрос информации о пользователе с {url}")
    
    # Отправляем GET-запрос к API информации о пользователе
    response = requests.get(url, headers=headers, timeout=15)
    
    # Обрабатываем JSON-ответ
    if response.status_code == 200:
        data = response.json()
        
        # Выводим информацию о пользователе
        print("\nИнформация о пользователе:")
        print(f"Статус: {data.get('status')}")
        print(f"Временная метка: {data.get('timestamp')}")
        print(f"ID пользователя: {data.get('user_id')}")
        
        user_info = data.get('user_info', {})
        print(f"Email: {user_info.get('email', 'Н/Д')}")
        print(f"Имя: {user_info.get('name', 'Н/Д')}")
        
        # Выводим статистику
        stats = data.get('stats', {})
        print("\nСтатистика пользователя:")
        print(f"Баланс: {stats.get('balance', 0)} TRX")
        print(f"Всего делегирований: {stats.get('total_delegations', 0)}")
        print(f"Всего делегировано энергии: {stats.get('total_energy_delegated', 0)}")
        print(f"Всего потрачено TRX: {stats.get('total_trx_spent', 0)} TRX")
        print(f"Всего депозитов: {stats.get('total_deposit', 0)} TRX")
        print(f"Средний курс (Sun/Energy): {stats.get('avg_rate_sun_energy', 0)}")
        print(f"Экономия с Netts: {stats.get('save_by_netts_percent', 0)}%")
        print(f"Экономия в долларах: ${stats.get('save_in_dollars', 0)}")
        
        # Выводим информацию о сети
        network_info = data.get('network_info', {})
        print("\nИнформация о сети:")
        print(f"Цена TRX: ${network_info.get('trx_price', 0)}")
        print(f"Комиссия сети за энергию: {network_info.get('network_energy_fee', 0)}")
    else:
        print(f"Ошибка: {response.status_code}")
        print(response.text)
        
except requests.exceptions.RequestException as e:
    print(f"Ошибка запроса: {str(e)}")
except Exception as e:
    print(f"Непредвиденная ошибка: {str(e)}")

# Примеры на JavaScript

# Получение цен на энергию

// Использование fetch API (современные браузеры и Node.js с node-fetch)
const fetchPrices = async () => {
  const url = 'https://netts.io/apiv2/prices';
  const apiKey = 'ваш_api_ключ'; // Замените на ваш реальный API-ключ
  
  try {
    const response = await fetch(url, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        'X-API-KEY': apiKey
      }
    });
    
    if (!response.ok) {
      throw new Error(`Ошибка HTTP! Статус: ${response.status}`);
    }
    
    const data = await response.json();
    
    // Выводим краткую информацию
    console.log('Информация о ценах:');
    console.log(`Статус: ${data.status}`);
    console.log(`Текущее время UTC: ${data.current_utc_time}`);
    console.log(`Активный период: ${data.active_period}`);
    console.log(`Цена хоста: ${data.host_price} TRX`);
    
    // Выводим информацию о периодах
    console.log('\nПериоды цен:');
    data.periods.forEach(period => {
      const activeMarker = period.is_active ? ' *АКТИВЕН*' : '';
      console.log(`\n${period.label}${activeMarker}:`);
      console.log(`  Время: ${period.period}`);
      
      // Выводим цены для разных объемов энергии
      console.log(`  Меньше 200k: ${period.prices.less_than_200k.price_sun} sun`);
      console.log(`  Ровно 131k: ${period.prices.equal_131k.price_sun} sun`);
      console.log(`  Больше 200k: ${period.prices.more_than_200k.price_sun} sun`);
    });
    
    return data;
  } catch (error) {
    console.error('Ошибка при получении цен:', error);
    throw error;
  }
};

// Вызываем функцию
fetchPrices().catch(console.error);

# Получение информации о пользователе

// Использование fetch API (современные браузеры и Node.js с node-fetch)
const fetchUserInfo = async () => {
  const url = 'https://netts.io/apiv2/userinfo';
  const apiKey = 'ваш_api_ключ'; // Замените на ваш реальный API-ключ
  
  try {
    const response = await fetch(url, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        'X-API-KEY': apiKey
      }
    });
    
    if (!response.ok) {
      throw new Error(`Ошибка HTTP! Статус: ${response.status}`);
    }
    
    const data = await response.json();
    
    // Выводим информацию о пользователе
    console.log('Информация о пользователе:');
    console.log(`Статус: ${data.status}`);
    console.log(`Временная метка: ${data.timestamp}`);
    console.log(`ID пользователя: ${data.user_id}`);
    console.log(`Email: ${data.user_info.email || 'Н/Д'}`);
    console.log(`Имя: ${data.user_info.name || 'Н/Д'}`);
    
    // Выводим статистику
    console.log('\nСтатистика пользователя:');
    console.log(`Баланс: ${data.stats.balance} TRX`);
    console.log(`Всего делегирований: ${data.stats.total_delegations}`);
    console.log(`Всего делегировано энергии: ${data.stats.total_energy_delegated}`);
    console.log(`Всего потрачено TRX: ${data.stats.total_trx_spent} TRX`);
    console.log(`Всего депозитов: ${data.stats.total_deposit} TRX`);
    console.log(`Средний курс (Sun/Energy): ${data.stats.avg_rate_sun_energy}`);
    console.log(`Экономия с Netts: ${data.stats.save_by_netts_percent}%`);
    console.log(`Экономия в долларах: $${data.stats.save_in_dollars}`);
    
    // Выводим информацию о сети
    console.log('\nИнформация о сети:');
    console.log(`Цена TRX: $${data.network_info.trx_price}`);
    console.log(`Комиссия сети за энергию: ${data.network_info.network_energy_fee}`);
    
    return data;
  } catch (error) {
    console.error('Ошибка при получении информации о пользователе:', error);
    throw error;
  }
};

// Вызываем функцию
fetchUserInfo().catch(console.error);

# Примеры на PHP

# Получение цен на энергию

<?php
// Конфигурация
$url = "https://netts.io/apiv2/prices";
$apiKey = "ваш_api_ключ"; // Замените на ваш реальный API-ключ

// Настраиваем cURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    "X-API-KEY: $apiKey"
]);

// Выполняем запрос
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Проверяем на ошибки
if ($httpCode != 200) {
    echo "Ошибка: HTTP код $httpCode\n";
    echo $response;
    exit(1);
}

// Обрабатываем ответ
$data = json_decode($response, true);

// Выводим краткую информацию
echo "Информация о ценах:\n";
echo "Статус: " . $data['status'] . "\n";
echo "Текущее время UTC: " . $data['current_utc_time'] . "\n";
echo "Активный период: " . $data['active_period'] . "\n";
echo "Цена хоста: " . $data['host_price'] . " TRX\n";

// Выводим информацию о периодах
echo "\nПериоды цен:\n";
foreach ($data['periods'] as $period) {
    $activeMarker = $period['is_active'] ? ' *АКТИВЕН*' : '';
    echo "\n" . $period['label'] . $activeMarker . ":\n";
    echo "  Время: " . $period['period'] . "\n";
    
    // Выводим цены для разных объемов энергии
    echo "  Меньше 200k: " . $period['prices']['less_than_200k']['price_sun'] . " sun\n";
    echo "  Ровно 131k: " . $period['prices']['equal_131k']['price_sun'] . " sun\n";
    echo "  Больше 200k: " . $period['prices']['more_than_200k']['price_sun'] . " sun\n";
}
?>

# Получение информации о пользователе

<?php
// Конфигурация
$url = "https://netts.io/apiv2/userinfo";
$apiKey = "ваш_api_ключ"; // Замените на ваш реальный API-ключ

// Настраиваем cURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    "X-API-KEY: $apiKey"
]);

// Выполняем запрос
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Проверяем на ошибки
if ($httpCode != 200) {
    echo "Ошибка: HTTP код $httpCode\n";
    echo $response;
    exit(1);
}

// Обрабатываем ответ
$data = json_decode($response, true);

// Выводим информацию о пользователе
echo "Информация о пользователе:\n";
echo "Статус: " . $data['status'] . "\n";
echo "Временная метка: " . $data['timestamp'] . "\n";
echo "ID пользователя: " . $data['user_id'] . "\n";
echo "Email: " . ($data['user_info']['email'] ?? 'Н/Д') . "\n";
echo "Имя: " . ($data['user_info']['name'] ?? 'Н/Д') . "\n";

// Выводим статистику
echo "\nСтатистика пользователя:\n";
echo "Баланс: " . $data['stats']['balance'] . " TRX\n";
echo "Всего делегирований: " . $data['stats']['total_delegations'] . "\n";
echo "Всего делегировано энергии: " . $data['stats']['total_energy_delegated'] . "\n";
echo "Всего потрачено TRX: " . $data['stats']['total_trx_spent'] . " TRX\n";
echo "Всего депозитов: " . $data['stats']['total_deposit'] . " TRX\n";
echo "Средний курс (Sun/Energy): " . $data['stats']['avg_rate_sun_energy'] . "\n";
echo "Экономия с Netts: " . $data['stats']['save_by_netts_percent'] . "%\n";
echo "Экономия в долларах: $" . $data['stats']['save_in_dollars'] . "\n";

// Выводим информацию о сети
echo "\nИнформация о сети:\n";
echo "Цена TRX: $" . $data['network_info']['trx_price'] . "\n";
echo "Комиссия сети за энергию: " . $data['network_info']['network_energy_fee'] . "\n";
?>

# Обработка ошибок

Все примеры должны реализовывать правильную обработку ошибок. Вот расширенный пример на Python, который демонстрирует, как обрабатывать различные сценарии ошибок:

#!/usr/bin/env python3
import sys
import json
import requests
from datetime import datetime

# Конфигурация
url = "https://netts.io/apiv2/prices"
api_key = "ваш_api_ключ"  # Замените на ваш реальный API-ключ
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": api_key
}

try:
    print(f"[{datetime.now()}] Отправка запроса цен на {url}")
    
    # Отправляем GET-запрос к API цен
    response = requests.get(url, headers=headers, timeout=15)
    
    # Проверяем HTTP-ошибки
    if response.status_code != 200:
        if response.status_code == 401:
            print("Ошибка аутентификации: Неверный API-ключ или IP-адрес не в белом списке")
        elif response.status_code == 429:
            print("Превышен лимит частоты запросов: Слишком много запросов")
        elif response.status_code >= 500:
            print("Ошибка сервера: Сервер API столкнулся с ошибкой")
        else:
            print(f"HTTP-ошибка: {response.status_code}")
        
        # Пытаемся разобрать сообщение об ошибке из JSON-ответа
        try:
            error_data = response.json()
            print(f"Сообщение об ошибке: {error_data.get('msg', 'Неизвестная ошибка')}")
        except:
            print(f"Необработанный ответ: {response.text}")
        
        sys.exit(1)
    
    # Обрабатываем JSON-ответ
    try:
        data = response.json()
        
        # Проверяем статус в ответе
        if data.get('status') != 'success':
            print(f"API вернул статус отличный от успеха: {data.get('status')}")
            print(f"Сообщение об ошибке: {data.get('message', 'Сообщение не предоставлено')}")
            sys.exit(1)
        
        # Продолжаем обработку успешного ответа...
        print("\nИнформация о ценах:")
        print(f"Текущее время UTC: {data.get('current_utc_time')}")
        print(f"Активный период: {data.get('active_period')}")
        # ... остальной код обработки
        
    except json.JSONDecodeError:
        print("Ошибка: Не удалось разобрать JSON-ответ")
        print(f"Необработанный ответ: {response.text}")
        sys.exit(1)
        
except requests.exceptions.Timeout:
    print("Ошибка: Время ожидания запроса истекло")
    sys.exit(1)
except requests.exceptions.ConnectionError:
    print("Ошибка: Не удалось подключиться к серверу API")
    sys.exit(1)
except requests.exceptions.RequestException as e:
    print(f"Ошибка запроса: {str(e)}")
    sys.exit(1)
except Exception as e:
    print(f"Непредвиденная ошибка: {str(e)}")
    sys.exit(1)