parent
877407711a
commit
be9dc4f97d
@ -0,0 +1,85 @@ |
|||||||
|
package me.bearns.fias.service; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import ru.nalog.fias.ArrayOfDownloadFileInfo; |
||||||
|
import ru.nalog.fias.DownloadFileInfo; |
||||||
|
import ru.nalog.fias.IDownloadService; |
||||||
|
import ru.nalog.fias.IDownloadService_Service; |
||||||
|
import sun.net.www.protocol.http.HttpURLConnection; |
||||||
|
|
||||||
|
import javax.xml.namespace.QName; |
||||||
|
import javax.xml.ws.Binding; |
||||||
|
import javax.xml.ws.BindingProvider; |
||||||
|
import java.net.URL; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import static javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY; |
||||||
|
import static ru.nalog.fias.IDownloadService_Service.BasicHttpBindingIDownloadService; |
||||||
|
|
||||||
|
@Component |
||||||
|
public class FiasUpdater implements Updater { |
||||||
|
@Override |
||||||
|
public void update() { |
||||||
|
|
||||||
|
IDownloadService_Service service = new IDownloadService_Service(); |
||||||
|
|
||||||
|
//QName BasicHttpBindingIDownloadService = new QName("https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/", "BasicHttpBinding_IDownloadService");
|
||||||
|
//String wsUrl="http://fias.nalog.ru/WebServices/Public/DownloadService.asmx";
|
||||||
|
|
||||||
|
//service.addPort(BasicHttpBindingIDownloadService, javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING, wsUrl);
|
||||||
|
IDownloadService downloadService = service.getBasicHttpBindingIDownloadService(); |
||||||
|
|
||||||
|
|
||||||
|
//BindingProvider bindingProvider = (BindingProvider) service.getPort(IDownloadService.class);
|
||||||
|
//Map map = bindingProvider.getRequestContext();
|
||||||
|
|
||||||
|
//map.put(ENDPOINT_ADDRESS_PROPERTY, "https://fias.nalog.ru/WebServices/Public/DownloadService.asmx");
|
||||||
|
|
||||||
|
if(downloadService instanceof BindingProvider ) { |
||||||
|
|
||||||
|
checkRedirect((BindingProvider) downloadService); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//HttpURLConnection.setFollowRedirects(true);
|
||||||
|
//BindingProvider.ENDPOINT_ADDRESS_PROPERTY
|
||||||
|
|
||||||
|
|
||||||
|
ArrayOfDownloadFileInfo info = downloadService.getAllDownloadFileInfo(); |
||||||
|
|
||||||
|
if(info != null){ |
||||||
|
for (DownloadFileInfo fileInfo : info.getDownloadFileInfo()) { |
||||||
|
System.out.println("id=" + fileInfo.getVersionId()); |
||||||
|
System.out.println("text=" + fileInfo.getTextVersion()); |
||||||
|
System.out.println("full=" + fileInfo.getFiasCompleteXmlUrl()); |
||||||
|
System.out.println("delta" + fileInfo.getFiasDeltaXmlUrl()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
System.out.println("get Ok"); |
||||||
|
} |
||||||
|
|
||||||
|
private static void checkRedirect(final BindingProvider bindingProvider) { |
||||||
|
try { |
||||||
|
final URL url = new URL((String) bindingProvider.getRequestContext().get(ENDPOINT_ADDRESS_PROPERTY)); |
||||||
|
|
||||||
|
final HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
||||||
|
connection.setInstanceFollowRedirects(true); |
||||||
|
connection.setRequestMethod("POST"); |
||||||
|
connection.setRequestProperty("Content-Type", "text/html; charset='UTF-8'"); |
||||||
|
connection.setDoOutput(true); |
||||||
|
|
||||||
|
final int responseCode = connection.getResponseCode(); |
||||||
|
|
||||||
|
if(responseCode >= 300 && responseCode < 400) { |
||||||
|
final String redirectToUrl = connection.getHeaderField("location"); |
||||||
|
|
||||||
|
bindingProvider.getRequestContext().put(ENDPOINT_ADDRESS_PROPERTY, redirectToUrl); |
||||||
|
} |
||||||
|
} catch(final Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package me.bearns.fias.service; |
||||||
|
|
||||||
|
public interface Updater { |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Run online update for fias database |
||||||
|
*/ |
||||||
|
public void update(); |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package me.bearns.fias.webapi; |
||||||
|
|
||||||
|
import me.bearns.fias.service.Updater; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
@RestController |
||||||
|
public class API { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
Updater service; |
||||||
|
|
||||||
|
@GetMapping("/update") |
||||||
|
void update(){ |
||||||
|
service.update(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/" targetNamespace="https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/" name="IDownloadService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/"><xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/><xs:import namespace="http://schemas.datacontract.org/2004/07/System"/><xs:element name="GetAllDownloadFileInfo"><xs:complexType><xs:sequence/></xs:complexType></xs:element><xs:element name="GetAllDownloadFileInfoResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" maxOccurs="1" name="GetAllDownloadFileInfoResult" nillable="true" type="tns:ArrayOfDownloadFileInfo"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetLastDownloadFileInfo"><xs:complexType><xs:sequence/></xs:complexType></xs:element><xs:element name="GetLastDownloadFileInfoResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" maxOccurs="1" name="GetLastDownloadFileInfoResult" type="tns:DownloadFileInfo"/></xs:sequence></xs:complexType></xs:element><xs:complexType name="ArrayOfDownloadFileInfo"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" nillable="true" name="DownloadFileInfo" type="tns:DownloadFileInfo"/></xs:sequence></xs:complexType><xs:element name="ArrayOfDownloadFileInfo" nillable="true" type="tns:ArrayOfDownloadFileInfo"/><xs:complexType name="DownloadFileInfo"><xs:sequence><xs:element minOccurs="1" maxOccurs="1" name="VersionId" type="xs:long"/><xs:element minOccurs="0" maxOccurs="1" name="TextVersion" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="FiasCompleteDbfUrl" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="FiasCompleteXmlUrl" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="FiasDeltaDbfUrl" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="FiasDeltaXmlUrl" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="Kladr4ArjUrl" type="xs:string"/><xs:element minOccurs="0" maxOccurs="1" name="Kladr47ZUrl" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="DownloadFileInfo" nillable="true" type="tns:DownloadFileInfo"/></xs:schema></wsdl:types><wsdl:message name="IDownloadService_GetAllDownloadFileInfo_InputMessage"><wsdl:part name="parameters" element="tns:GetAllDownloadFileInfo"/></wsdl:message><wsdl:message name="IDownloadService_GetAllDownloadFileInfo_OutputMessage"><wsdl:part name="parameters" element="tns:GetAllDownloadFileInfoResponse"/></wsdl:message><wsdl:message name="IDownloadService_GetLastDownloadFileInfo_InputMessage"><wsdl:part name="parameters" element="tns:GetLastDownloadFileInfo"/></wsdl:message><wsdl:message name="IDownloadService_GetLastDownloadFileInfo_OutputMessage"><wsdl:part name="parameters" element="tns:GetLastDownloadFileInfoResponse"/></wsdl:message><wsdl:portType name="IDownloadService"><wsdl:operation name="GetAllDownloadFileInfo"><wsdl:input message="tns:IDownloadService_GetAllDownloadFileInfo_InputMessage"/><wsdl:output message="tns:IDownloadService_GetAllDownloadFileInfo_OutputMessage"/></wsdl:operation><wsdl:operation name="GetLastDownloadFileInfo"><wsdl:input message="tns:IDownloadService_GetLastDownloadFileInfo_InputMessage"/><wsdl:output message="tns:IDownloadService_GetLastDownloadFileInfo_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IDownloadService" type="tns:IDownloadService"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="GetAllDownloadFileInfo"><soap:operation soapAction="https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/GetAllDownloadFileInfo" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetLastDownloadFileInfo"><soap:operation soapAction="https://fias.nalog.ru/WebServices/Public/DownloadService.asmx/GetLastDownloadFileInfo" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="IDownloadService"><wsdl:port name="BasicHttpBinding_IDownloadService" binding="tns:BasicHttpBinding_IDownloadService"><soap:address location="http://fias.nalog.ru/WebServices/Public/DownloadService.asmx"/></wsdl:port></wsdl:service></wsdl:definitions> |
@ -0,0 +1,4 @@ |
|||||||
|
databaseChangeLog: |
||||||
|
- changeSet: |
||||||
|
id: 1 |
||||||
|
author: alex@bearns.me |
Loading…
Reference in new issue