MoexClient.java
package org.vlaskin.moexiss;
import lombok.Getter;
import org.vlaskin.moexiss.http.ApacheMoexHttpTransport;
import org.vlaskin.moexiss.http.MoexHttpTransport;
import org.vlaskin.moexiss.service.BaseService;
import org.vlaskin.moexiss.service.dictionary.DictionaryService;
import org.vlaskin.moexiss.service.engine.EngineService;
import org.vlaskin.moexiss.service.security.SecurityService;
import org.vlaskin.moexiss.service.statistic.StatisticService;
/**
* Точка входа в SDK, объединяющая сервисы MOEX ISS.
*
* <p>Для обычной работы достаточно конструктора без аргументов. Конструкторы с адресом и
* транспортом предназначены для прокси, тестовых стендов и локальных HTTP mock-серверов.
*/
@Getter
public final class MoexClient
{
private final SecurityService securities;
private final DictionaryService dictionaries;
private final EngineService engines;
private final StatisticService statistics;
/** Создаёт клиент для официального адреса MOEX ISS со стандартным HTTP-транспортом. */
public MoexClient()
{
this(BaseService.DEFAULT_BASE_URL);
}
/**
* Создаёт клиент со стандартным HTTP-транспортом.
*
* @param baseUrl базовый адрес сервера без пути {@code /iss}
*/
public MoexClient(String baseUrl)
{
this(baseUrl, new ApacheMoexHttpTransport());
}
/**
* Создаёт клиент с заданным транспортом.
*
* @param baseUrl базовый адрес сервера без пути {@code /iss}
* @param httpTransport транспорт, выполняющий GET-запросы
*/
public MoexClient(String baseUrl, MoexHttpTransport httpTransport)
{
securities = new SecurityService(baseUrl, httpTransport);
dictionaries = new DictionaryService(baseUrl, httpTransport);
engines = new EngineService(baseUrl, httpTransport);
statistics = new StatisticService(baseUrl, httpTransport);
}
}