
В связи с тем, что для языка java Диадок не предоставляет примеров кода, привожу свои наработки. В заметке можно найти код для отправки неформализованного сообщения, поиска организации, поиска последнего события в ящике, листинг всех организаций и их сотрудников для своей учетки, создание департамента.
Для сборки проекта с предоставленным исходником вам нужно будет добавить в локальный репозиторий несколько артифактов: сам sdk и его зависимости из JCP:
mvn install:install-file -Dfile=D:\soft\diadok\diadocsdk-3.2.3.jar -DgroupId=ru.kontur.diadoc -DartifactId=diadocsdk -Dversion=3.2.3 -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\JCP.jar -DgroupId=ru.CryptoPro -DartifactId=JCP -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\asn1rt.jar -DgroupId=com.objsys.asn1j -DartifactId=asn1rt -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\ASN1P.jar -DgroupId=ru.CryptoPro -DartifactId=ASN1P -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\JCryptoP.jar -DgroupId=ru.CryptoPro -DartifactId=JCryptoP -Dversion=2.0.40450-A -Dpackaging=jar |
mvn install:install-file -Dfile=D:\soft\diadok\diadocsdk-3.2.3.jar -DgroupId=ru.kontur.diadoc -DartifactId=diadocsdk -Dversion=3.2.3 -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\JCP.jar -DgroupId=ru.CryptoPro -DartifactId=JCP -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\asn1rt.jar -DgroupId=com.objsys.asn1j -DartifactId=asn1rt -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\ASN1P.jar -DgroupId=ru.CryptoPro -DartifactId=ASN1P -Dversion=2.0.40450-A -Dpackaging=jar
mvn install:install-file -Dfile=D:\soft\diadok\jcp-2.0.40450-A\JCryptoP.jar -DgroupId=ru.CryptoPro -DartifactId=JCryptoP -Dversion=2.0.40450-A -Dpackaging=jar
Зависимости проекта:
<dependency>
<groupid>ru.kontur.diadoc</groupid>
<artifactid>diadocsdk</artifactid>
<version>3.2.3</version>
</dependency>
<!-- deps for SDK -->
<dependency>
<groupid>com.google.protobuf</groupid>
<artifactid>protobuf-java</artifactid>
<version>2.6.1</version>
</dependency>
<dependency>
<groupid>javax.mail</groupid>
<artifactid>mail</artifactid>
<version>1.4.7</version>
</dependency>
<dependency>
<groupid>org.apache.httpcomponents</groupid>
<artifactid>httpclient</artifactid>
<version>4.5.6</version>
</dependency>
<dependency>
<groupid>org.bouncycastle</groupid>
<artifactid>bcprov-jdk14</artifactid>
<version>1.65</version>
</dependency>
<!-- http://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupid>commons-io</groupid>
<artifactid>commons-io</artifactid>
<version>2.6</version>
</dependency>
<!-- http://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupid>com.google.code.gson</groupid>
<artifactid>gson</artifactid>
<version>2.8.5</version>
</dependency>
<!-- deps related to JCP -->
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>JCP</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>com.objsys.asn1j</groupid>
<artifactid>asn1rt</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>ASN1P</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>JCryptoP</artifactid>
<version>2.0.40450-A</version>
</dependency> |
<dependency>
<groupid>ru.kontur.diadoc</groupid>
<artifactid>diadocsdk</artifactid>
<version>3.2.3</version>
</dependency>
<!-- deps for SDK -->
<dependency>
<groupid>com.google.protobuf</groupid>
<artifactid>protobuf-java</artifactid>
<version>2.6.1</version>
</dependency>
<dependency>
<groupid>javax.mail</groupid>
<artifactid>mail</artifactid>
<version>1.4.7</version>
</dependency>
<dependency>
<groupid>org.apache.httpcomponents</groupid>
<artifactid>httpclient</artifactid>
<version>4.5.6</version>
</dependency>
<dependency>
<groupid>org.bouncycastle</groupid>
<artifactid>bcprov-jdk14</artifactid>
<version>1.65</version>
</dependency>
<!-- http://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupid>commons-io</groupid>
<artifactid>commons-io</artifactid>
<version>2.6</version>
</dependency>
<!-- http://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupid>com.google.code.gson</groupid>
<artifactid>gson</artifactid>
<version>2.8.5</version>
</dependency>
<!-- deps related to JCP -->
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>JCP</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>com.objsys.asn1j</groupid>
<artifactid>asn1rt</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>ASN1P</artifactid>
<version>2.0.40450-A</version>
</dependency>
<dependency>
<groupid>ru.CryptoPro</groupid>
<artifactid>JCryptoP</artifactid>
<version>2.0.40450-A</version>
</dependency>
Исходник:
package ru.outofrange.diadoc.cli;
import Diadoc.Api.CertificateHelper;
import Diadoc.Api.DiadocApi;
import Diadoc.Api.Proto.*;
import Diadoc.Api.Proto.Departments.DepartmentProtos;
import Diadoc.Api.Proto.Departments.DepartmentToCreateProtos;
import Diadoc.Api.Proto.Departments.RoutingProtos;
import Diadoc.Api.Proto.Docflow.AttachmentProtos;
import Diadoc.Api.Proto.Employees.EmployeeToCreateProtos;
import Diadoc.Api.Proto.Events.DiadocMessage_GetApiProtos;
import Diadoc.Api.Proto.Events.DiadocMessage_PostApiProtos;
import Diadoc.Api.auth.DiadocCredentials;
import Diadoc.Api.events.EventsClient;
import Diadoc.Api.exceptions.DiadocSdkException;
import Diadoc.Api.message.MessageClient;
import com.google.protobuf.ByteString;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.client.HttpResponseException;
import util.KeyStoreUtil;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.security.*;
import java.security.cert.X509Certificate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Properties;
public class CLI {
private static String CERT_ALIAS = "DiadocCert";
private static String PASSWORD_FOR_KEYSTORE = "changeit";
public static void main(String[] arg) throws DiadocSdkException {
Properties prop = new Properties();
try (InputStream input = CLI.class.getResourceAsStream("/application.properties")) {
prop.load(input);
} catch (
IOException ex) {
ex.printStackTrace();
}
String apiClientId = prop.getProperty("apiClientId");
String url = prop.getProperty("apiUrl");
KeyStore keyStore = KeyStoreUtil.loadKeyStore(PASSWORD_FOR_KEYSTORE);
KeyStoreUtil.showCertificate(CERT_ALIAS, keyStore);
System.out.println("----------------------------------------");
X509Certificate x509 = KeyStoreUtil.getCertificate(CERT_ALIAS, keyStore);
String filePath = "d:/soft/diadok/message_small.txt".replace('/', File.separatorChar);
if (x509 == null) {
System.out.println("can't get x509 cert from keystore");
return;
}
DiadocApi api = new DiadocApi(apiClientId, url, null);
String token = null;
try {
String login = prop.getProperty("lkLogin");
String password = prop.getProperty("lkPassword");
api.getAuthClient().authenticate(login, password);
Credentials credentials = api.getAuthManager().getCredentialsProvider().getCredentials(AuthScope.ANY);
if (credentials instanceof DiadocCredentials) {
token = ((DiadocCredentials) credentials).getAuthToken();
}
System.out.println("token: " + token);
} catch (DiadocSdkException e) {
e.printStackTrace();
return;
}
try {
UserProtos.User user = api.getUserClient().getMyUser();
System.out.println("количество облачных сертификатов " + user.getCloudCertificatesCount());
System.out.println(user.getFirstName() + " " + user.getMiddleName() + " " + user.getLastName());
//System.out.println(user.findInitializationErrors());
System.out.println(user.getId());
} catch (DiadocSdkException e) {
e.printStackTrace();
}
String fromBoxId = prop.getProperty("fromBoxId");
String toBoxId = prop.getProperty("toBoxId");
System.out.println("----------------------------------------");
System.out.println("Организации из учетки: ");
try {
OrganizationProtos.OrganizationList list = api.getOrganizationClient().getMyOrganizations();
if (list.getOrganizationsCount() > 0) {
for (int i = 0; i < list.getOrganizationsCount(); i++) {
OrganizationProtos.Organization organization = list.getOrganizations(i);
System.out.println(organization.getFullName());
List<organizationprotos.box> boxes = organization.getBoxesList();
boxes.forEach(box -> {
System.out.println("box id " + box.getBoxId());
});
List<organizationprotos.department> departments = organization.getDepartmentsList();
if (departments.size() > 0) {
System.out.println("Найдены департаменты: ");
departments.forEach(department -> {
System.out.println(" " + department.getDepartmentId() + " | " + department.getName() + " | " + department.getAbbreviation()
+ " | ");
});
} else {
System.out.println("департаментов не найдено");
}
OrganizationUserProtos.OrganizationUsersList users = api.getOrganizationClient().getOrganizationUsers(organization.getOrgId());
if (users.getUsersCount() > 0) {
System.out.println("Найдены сотрудники: ");
for (int j = 0; j < users.getUsersCount(); j++) {
OrganizationUserProtos.OrganizationUser user = users.getUsers(j);
System.out.println(">> " + user.getId() + " " + user.getPosition() + " " + user.getName());
}
}
}
} else {
System.out.println("организаций не найдено");
}
} catch (DiadocSdkException e) {
e.printStackTrace();
}
System.out.println("----------------------------------------");
System.out.println("Пример поиска организации: ");
try {
OrganizationProtos.OrganizationList organizations = api.getOrganizationClient().getOrganizationsByInnKpp("9621326428", "962101000");
for (int i = 0; i < organizations.getOrganizationsCount(); i++) {
OrganizationProtos.Organization organization = organizations.getOrganizations(i);
System.out.println(organization.getFullName());
List<organizationprotos.box> boxes = organization.getBoxesList();
boxes.forEach(box -> {
System.out.println("box id " + box.getBoxId());
});
}
} catch (DiadocSdkException e) {
e.printStackTrace();
}
System.out.println("----------------------------------------");
EventsClient eventsClient = api.getEventsClient();
if (eventsClient != null) {
DiadocMessage_GetApiProtos.BoxEvent event = null;
try {
event = eventsClient
.getLastEvent(fromBoxId);
} catch (NullPointerException npe) {
ExceptionUtils.printRootCauseStackTrace(npe);
}
if (event != null) {
System.out.println("Найдено событие: ");
System.out.println(event.getEventId());
} else {
System.out.println("Нет событий");
}
System.out.println("----------------------------------------");
}
// сюда попадаем, если аутентификация успешна
String scriptFromCommandLine = "script1";
if (scriptFromCommandLine.equals("script1")) {
// сценарий - отправка через shelf
// https://github.com/diadoc/diadocsdk-csharp/blob/master/Samples/Diadoc.Samples/SendLargeNonformalizedSample.cs
filePath = "d:/soft/diadok/message_small.txt".replace('/', File.separatorChar);
//filePath = "d:/soft/diadok/message_large.pdf".replace('/', File.separatorChar);
//filePath = "d:/soft/diadok/message_extra_large.pdf".replace('/', File.separatorChar);
try {
byte[] bytes = Files.readAllBytes(new File(filePath).toPath());
String shelfId = api.getShelfClient().uploadFileToShelf(bytes);
System.out.println("returned shelf's id " + shelfId);
// java.security.KeyStoreException: HDImageStore not found
ByteString signature = ByteString.copyFrom(CertificateHelper.sign(x509, bytes));
//ByteString signature = ByteString.copyFrom("1223ad5", "UTF-8");
DiadocMessage_PostApiProtos.NonformalizedAttachment.Builder attachmentBuilder = DiadocMessage_PostApiProtos.NonformalizedAttachment.newBuilder();
attachmentBuilder.setComment("Тестовая загрузка");
attachmentBuilder.setNeedRecipientSignature(false);
attachmentBuilder.setDocumentDate(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE));
attachmentBuilder.setDocumentNumber("123");
attachmentBuilder.setCustomDocumentId("custom 123");
attachmentBuilder.setFileName("test.txt");
DiadocMessage_PostApiProtos.SignedContent.Builder signedContentBuilder = DiadocMessage_PostApiProtos.SignedContent.newBuilder();
signedContentBuilder.setNameOnShelf(shelfId);
signedContentBuilder.setSignature(signature);
attachmentBuilder.setSignedContent(signedContentBuilder.build());
DiadocMessage_PostApiProtos.MessageToPost.Builder messageBuilder = DiadocMessage_PostApiProtos.MessageToPost.newBuilder();
messageBuilder.setFromBoxId(fromBoxId);
messageBuilder.setToBoxId(toBoxId);
messageBuilder.addNonformalizedDocuments(attachmentBuilder.build());
// отправка
try {
DiadocMessage_GetApiProtos.Message response = api
.getMessageClient()
.postMessage(messageBuilder.build());
System.out.println("returned message's id " + response.getMessageId());
System.out.println("returned message's type " + response.getMessageType().name());
} catch (Exception e) {
System.out.println(e.getMessage());
ExceptionUtils.printRootCauseStackTrace(e);
if (e instanceof HttpResponseException) {
HttpResponseException hre = (HttpResponseException) e;
System.out.println(hre.getStatusCode() + " " + hre.getMessage());
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (DiadocSdkException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} else if (scriptFromCommandLine.equals("script2")) {
try {
// вызывается для создания департамента.
DepartmentToCreateProtos.DepartmentToCreate.Builder depBuilder = DepartmentToCreateProtos.DepartmentToCreate.newBuilder();
depBuilder.setAbbreviation("АПР");
AddressProtos.Address.Builder addressBuilder = AddressProtos.Address.newBuilder();
AddressProtos.RussianAddress.Builder ruBuilder = AddressProtos.RussianAddress.newBuilder();
ruBuilder.setCity("Москва");
ruBuilder.setRegion("40");
ruBuilder.setStreet("Тестовая улица");
ruBuilder.setZipCode("248056");
addressBuilder.setRussianAddress(ruBuilder.build());
depBuilder.setAddress(addressBuilder.build());
depBuilder.setName("Тестовое имя");
RoutingProtos.Routing.Builder routingBuilder = RoutingProtos.Routing.newBuilder();
routingBuilder.setKpp(false);
routingBuilder.setAddress(true);
depBuilder.setRouting(routingBuilder.build());
DepartmentProtos.Department department = api.getDepartmentClient().createDepartment(fromBoxId, depBuilder.build());
System.out.println(department.getAbbreviation());
} catch (DiadocSdkException e) {
e.printStackTrace();
}
}
}
}
</organizationprotos.box></organizationprotos.department></organizationprotos.box> |
package ru.outofrange.diadoc.cli;
import Diadoc.Api.CertificateHelper;
import Diadoc.Api.DiadocApi;
import Diadoc.Api.Proto.*;
import Diadoc.Api.Proto.Departments.DepartmentProtos;
import Diadoc.Api.Proto.Departments.DepartmentToCreateProtos;
import Diadoc.Api.Proto.Departments.RoutingProtos;
import Diadoc.Api.Proto.Docflow.AttachmentProtos;
import Diadoc.Api.Proto.Employees.EmployeeToCreateProtos;
import Diadoc.Api.Proto.Events.DiadocMessage_GetApiProtos;
import Diadoc.Api.Proto.Events.DiadocMessage_PostApiProtos;
import Diadoc.Api.auth.DiadocCredentials;
import Diadoc.Api.events.EventsClient;
import Diadoc.Api.exceptions.DiadocSdkException;
import Diadoc.Api.message.MessageClient;
import com.google.protobuf.ByteString;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.client.HttpResponseException;
import util.KeyStoreUtil;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.security.*;
import java.security.cert.X509Certificate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Properties;
public class CLI {
private static String CERT_ALIAS = "DiadocCert";
private static String PASSWORD_FOR_KEYSTORE = "changeit";
public static void main(String[] arg) throws DiadocSdkException {
Properties prop = new Properties();
try (InputStream input = CLI.class.getResourceAsStream("/application.properties")) {
prop.load(input);
} catch (
IOException ex) {
ex.printStackTrace();
}
String apiClientId = prop.getProperty("apiClientId");
String url = prop.getProperty("apiUrl");
KeyStore keyStore = KeyStoreUtil.loadKeyStore(PASSWORD_FOR_KEYSTORE);
KeyStoreUtil.showCertificate(CERT_ALIAS, keyStore);
System.out.println("----------------------------------------");
X509Certificate x509 = KeyStoreUtil.getCertificate(CERT_ALIAS, keyStore);
String filePath = "d:/soft/diadok/message_small.txt".replace('/', File.separatorChar);
if (x509 == null) {
System.out.println("can't get x509 cert from keystore");
return;
}
DiadocApi api = new DiadocApi(apiClientId, url, null);
String token = null;
try {
String login = prop.getProperty("lkLogin");
String password = prop.getProperty("lkPassword");
api.getAuthClient().authenticate(login, password);
Credentials credentials = api.getAuthManager().getCredentialsProvider().getCredentials(AuthScope.ANY);
if (credentials instanceof DiadocCredentials) {
token = ((DiadocCredentials) credentials).getAuthToken();
}
System.out.println("token: " + token);
} catch (DiadocSdkException e) {
e.printStackTrace();
return;
}
try {
UserProtos.User user = api.getUserClient().getMyUser();
System.out.println("количество облачных сертификатов " + user.getCloudCertificatesCount());
System.out.println(user.getFirstName() + " " + user.getMiddleName() + " " + user.getLastName());
//System.out.println(user.findInitializationErrors());
System.out.println(user.getId());
} catch (DiadocSdkException e) {
e.printStackTrace();
}
String fromBoxId = prop.getProperty("fromBoxId");
String toBoxId = prop.getProperty("toBoxId");
System.out.println("----------------------------------------");
System.out.println("Организации из учетки: ");
try {
OrganizationProtos.OrganizationList list = api.getOrganizationClient().getMyOrganizations();
if (list.getOrganizationsCount() > 0) {
for (int i = 0; i < list.getOrganizationsCount(); i++) {
OrganizationProtos.Organization organization = list.getOrganizations(i);
System.out.println(organization.getFullName());
List<organizationprotos.box> boxes = organization.getBoxesList();
boxes.forEach(box -> {
System.out.println("box id " + box.getBoxId());
});
List<organizationprotos.department> departments = organization.getDepartmentsList();
if (departments.size() > 0) {
System.out.println("Найдены департаменты: ");
departments.forEach(department -> {
System.out.println(" " + department.getDepartmentId() + " | " + department.getName() + " | " + department.getAbbreviation()
+ " | ");
});
} else {
System.out.println("департаментов не найдено");
}
OrganizationUserProtos.OrganizationUsersList users = api.getOrganizationClient().getOrganizationUsers(organization.getOrgId());
if (users.getUsersCount() > 0) {
System.out.println("Найдены сотрудники: ");
for (int j = 0; j < users.getUsersCount(); j++) {
OrganizationUserProtos.OrganizationUser user = users.getUsers(j);
System.out.println(">> " + user.getId() + " " + user.getPosition() + " " + user.getName());
}
}
}
} else {
System.out.println("организаций не найдено");
}
} catch (DiadocSdkException e) {
e.printStackTrace();
}
System.out.println("----------------------------------------");
System.out.println("Пример поиска организации: ");
try {
OrganizationProtos.OrganizationList organizations = api.getOrganizationClient().getOrganizationsByInnKpp("9621326428", "962101000");
for (int i = 0; i < organizations.getOrganizationsCount(); i++) {
OrganizationProtos.Organization organization = organizations.getOrganizations(i);
System.out.println(organization.getFullName());
List<organizationprotos.box> boxes = organization.getBoxesList();
boxes.forEach(box -> {
System.out.println("box id " + box.getBoxId());
});
}
} catch (DiadocSdkException e) {
e.printStackTrace();
}
System.out.println("----------------------------------------");
EventsClient eventsClient = api.getEventsClient();
if (eventsClient != null) {
DiadocMessage_GetApiProtos.BoxEvent event = null;
try {
event = eventsClient
.getLastEvent(fromBoxId);
} catch (NullPointerException npe) {
ExceptionUtils.printRootCauseStackTrace(npe);
}
if (event != null) {
System.out.println("Найдено событие: ");
System.out.println(event.getEventId());
} else {
System.out.println("Нет событий");
}
System.out.println("----------------------------------------");
}
// сюда попадаем, если аутентификация успешна
String scriptFromCommandLine = "script1";
if (scriptFromCommandLine.equals("script1")) {
// сценарий - отправка через shelf
// https://github.com/diadoc/diadocsdk-csharp/blob/master/Samples/Diadoc.Samples/SendLargeNonformalizedSample.cs
filePath = "d:/soft/diadok/message_small.txt".replace('/', File.separatorChar);
//filePath = "d:/soft/diadok/message_large.pdf".replace('/', File.separatorChar);
//filePath = "d:/soft/diadok/message_extra_large.pdf".replace('/', File.separatorChar);
try {
byte[] bytes = Files.readAllBytes(new File(filePath).toPath());
String shelfId = api.getShelfClient().uploadFileToShelf(bytes);
System.out.println("returned shelf's id " + shelfId);
// java.security.KeyStoreException: HDImageStore not found
ByteString signature = ByteString.copyFrom(CertificateHelper.sign(x509, bytes));
//ByteString signature = ByteString.copyFrom("1223ad5", "UTF-8");
DiadocMessage_PostApiProtos.NonformalizedAttachment.Builder attachmentBuilder = DiadocMessage_PostApiProtos.NonformalizedAttachment.newBuilder();
attachmentBuilder.setComment("Тестовая загрузка");
attachmentBuilder.setNeedRecipientSignature(false);
attachmentBuilder.setDocumentDate(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE));
attachmentBuilder.setDocumentNumber("123");
attachmentBuilder.setCustomDocumentId("custom 123");
attachmentBuilder.setFileName("test.txt");
DiadocMessage_PostApiProtos.SignedContent.Builder signedContentBuilder = DiadocMessage_PostApiProtos.SignedContent.newBuilder();
signedContentBuilder.setNameOnShelf(shelfId);
signedContentBuilder.setSignature(signature);
attachmentBuilder.setSignedContent(signedContentBuilder.build());
DiadocMessage_PostApiProtos.MessageToPost.Builder messageBuilder = DiadocMessage_PostApiProtos.MessageToPost.newBuilder();
messageBuilder.setFromBoxId(fromBoxId);
messageBuilder.setToBoxId(toBoxId);
messageBuilder.addNonformalizedDocuments(attachmentBuilder.build());
// отправка
try {
DiadocMessage_GetApiProtos.Message response = api
.getMessageClient()
.postMessage(messageBuilder.build());
System.out.println("returned message's id " + response.getMessageId());
System.out.println("returned message's type " + response.getMessageType().name());
} catch (Exception e) {
System.out.println(e.getMessage());
ExceptionUtils.printRootCauseStackTrace(e);
if (e instanceof HttpResponseException) {
HttpResponseException hre = (HttpResponseException) e;
System.out.println(hre.getStatusCode() + " " + hre.getMessage());
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (DiadocSdkException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} else if (scriptFromCommandLine.equals("script2")) {
try {
// вызывается для создания департамента.
DepartmentToCreateProtos.DepartmentToCreate.Builder depBuilder = DepartmentToCreateProtos.DepartmentToCreate.newBuilder();
depBuilder.setAbbreviation("АПР");
AddressProtos.Address.Builder addressBuilder = AddressProtos.Address.newBuilder();
AddressProtos.RussianAddress.Builder ruBuilder = AddressProtos.RussianAddress.newBuilder();
ruBuilder.setCity("Москва");
ruBuilder.setRegion("40");
ruBuilder.setStreet("Тестовая улица");
ruBuilder.setZipCode("248056");
addressBuilder.setRussianAddress(ruBuilder.build());
depBuilder.setAddress(addressBuilder.build());
depBuilder.setName("Тестовое имя");
RoutingProtos.Routing.Builder routingBuilder = RoutingProtos.Routing.newBuilder();
routingBuilder.setKpp(false);
routingBuilder.setAddress(true);
depBuilder.setRouting(routingBuilder.build());
DepartmentProtos.Department department = api.getDepartmentClient().createDepartment(fromBoxId, depBuilder.build());
System.out.println(department.getAbbreviation());
} catch (DiadocSdkException e) {
e.printStackTrace();
}
}
}
}
</organizationprotos.box></organizationprotos.department></organizationprotos.box>