/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.api;
import javax.xml.soap.SOAPMessage;
import java.io.OutputStream;
import java.net.URL;
/**
* Протокол взаимодействия потребителя с поставщиком через СМЭВ/SOAP/HTTP.
*/
public interface ClientProtocol {
/**
* Поддерживаемая ревизия СМЭВ.
*/
Revision getRevision();
/**
* Отправить запрос поставщику и получить от него ответ.
*
* @param wsdlUrl ссылка на описание сервиса в формате WSDL.
* @param request запрос от клиента к поствщику.
* @param log журнал клиента.
* @return ответ от поставщика к клиенту.
* @author xeodon
* @since 1.0.7
*/
ClientResponse send(URL wsdlUrl, ClientRequest request, ClientLog log);
/**
* Подготовить SOAP-сообщение перед отправкой
*
* @param wsdlUrl ссылка на описание сервиса в формате WSDL.
* @param request запрос от клиента к поствщику.
* @param log журнал клиента.
* @param normalizedBody нормализованный блок Body для получения подписи ОВ
* @return предварительное сообщение для отправки
*/
SOAPMessage createMessage(URL wsdlUrl, ClientRequest request, ClientLog log, OutputStream normalizedBody);
}