esoe 4 weeks ago
parent
commit
b2200fb6cc
  1. 12
      face/logs/teh.log
  2. BIN
      face/logs/teh.log.2024-10-16.0.gz
  3. BIN
      face/logs/teh.log.2024-10-17.0.gz
  4. BIN
      face/logs/teh.log.2024-10-23.0.gz
  5. BIN
      face/logs/teh.log.2024-10-24.0.gz
  6. 58
      face/src/main/java/gsp/technologies/face/config/FaceProperties.java
  7. 59
      face/src/main/java/gsp/technologies/face/config/SourceProperties.java
  8. 58
      face/src/main/java/gsp/technologies/face/config/StorageProperties.java
  9. 6
      face/src/main/java/gsp/technologies/face/controllers/api/v1/ApiController.java
  10. 40
      face/src/main/java/gsp/technologies/face/controllers/face/v1/MainframeController.java
  11. 7
      face/src/main/java/gsp/technologies/face/services/LinksFace.java
  12. 149
      face/src/main/java/gsp/technologies/face/services/LinksService.java
  13. 39
      face/src/main/java/gsp/technologies/face/services/PropertyService.java
  14. 14
      face/src/main/resources/application-face.yaml
  15. 23
      face/src/main/resources/application-source.yaml
  16. 33
      face/src/main/resources/application-storage.yaml

12
face/logs/teh.log

@ -1,3 +1,9 @@ @@ -1,3 +1,9 @@
{"@timestamp":"2024-10-23T06:23:27.800975600Z","log.level":"INFO","process.pid":18696,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Starting FaceApplicationTests using Java 17.0.7 with PID 18696 (started by devuser in C:\\Users\\devuser\\Documents\\code\\teh\\face)","ecs.version":"8.11"}
{"@timestamp":"2024-10-23T06:23:27.814171300Z","log.level":"INFO","process.pid":18696,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"The following 3 profiles are active: \"face\", \"source\", \"storage\"","ecs.version":"8.11"}
{"@timestamp":"2024-10-23T06:23:29.758343700Z","log.level":"INFO","process.pid":18696,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Started FaceApplicationTests in 2.446 seconds (process running for 3.608)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:51:49.542925200Z","log.level":"INFO","process.pid":9536,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Starting FaceApplicationTests using Java 17.0.7 with PID 9536 (started by devuser in C:\\Users\\devuser\\Documents\\code\\teh\\face)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:51:49.558489700Z","log.level":"INFO","process.pid":9536,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"The following 3 profiles are active: \"face\", \"source\", \"storage\"","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:51:51.532321800Z","log.level":"INFO","process.pid":9536,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Started FaceApplicationTests in 2.486 seconds (process running for 3.684)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:55:37.500402200Z","log.level":"INFO","process.pid":21840,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Starting FaceApplicationTests using Java 17.0.7 with PID 21840 (started by devuser in C:\\Users\\devuser\\Documents\\code\\teh\\face)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:55:37.507405500Z","log.level":"INFO","process.pid":21840,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"The following 3 profiles are active: \"face\", \"source\", \"storage\"","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T05:55:39.368250700Z","log.level":"INFO","process.pid":21840,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Started FaceApplicationTests in 2.348 seconds (process running for 3.422)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T06:00:05.447276500Z","log.level":"INFO","process.pid":2192,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Starting FaceApplicationTests using Java 17.0.7 with PID 2192 (started by devuser in C:\\Users\\devuser\\Documents\\code\\teh\\face)","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T06:00:05.454276700Z","log.level":"INFO","process.pid":2192,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"The following 3 profiles are active: \"face\", \"source\", \"storage\"","ecs.version":"8.11"}
{"@timestamp":"2024-10-25T06:00:07.297329800Z","log.level":"INFO","process.pid":2192,"process.thread.name":"main","service.name":"face","service.version":"1","service.environment":"Production","service.node.name":"Primary","log.logger":"gsp.technologies.face.FaceApplicationTests","message":"Started FaceApplicationTests in 2.326 seconds (process running for 3.392)","ecs.version":"8.11"}

BIN
face/logs/teh.log.2024-10-16.0.gz

Binary file not shown.

BIN
face/logs/teh.log.2024-10-17.0.gz

Binary file not shown.

BIN
face/logs/teh.log.2024-10-23.0.gz

Binary file not shown.

BIN
face/logs/teh.log.2024-10-24.0.gz

Binary file not shown.

58
face/src/main/java/gsp/technologies/face/config/FaceProperties.java

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
package gsp.technologies.face.config;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;
@Data
@Component
@ConfigurationProperties(prefix = "face")
public class FaceProperties {
private Map<String, String> construct;
private Map<String, String> api;
private Map<String, String> face;
/**
* Методы извлечения CONSTRUCT
*/
public String protocol() {
return construct.get("protocol");
}
public String domain() {
return construct.get("domain");
}
public String port() {
return construct.get("port");
}
public String prefix(){
return protocol() + "://" + domain() + ":" + port();
}
public String hello() {
return construct.get("hello");
}
public String linkHello(){
return prefix() + hello();
}
public Map<String, String> links(){
Map<String, String> links = new HashMap<>();
// перебираем api
for (Map.Entry<String, String> entry : api.entrySet()) {
String link = prefix() + entry.getValue();
String key = "face.api." + entry.getKey();
links.put(key, link);
}
// перебираем face
for (Map.Entry<String, String> entry : face.entrySet()) {
String link = prefix() + entry.getValue();
String key = "face.face." + entry.getKey();
links.put(key, link);
}
return links;
}
}

59
face/src/main/java/gsp/technologies/face/config/SourceProperties.java

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
package gsp.technologies.face.config;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;
@Data
@Component
@ConfigurationProperties(prefix = "source")
public class SourceProperties {
private Map<String, String> construct;
private Map<String, String> api;
private Map<String, String> face;
/**
* Методы извлечения CONSTRUCT
*/
public String protocol() {
return construct.get("protocol");
}
public String domain() {
return construct.get("domain");
}
public String port() {
return construct.get("port");
}
public String prefix(){
return protocol() + "://" + domain() + ":" + port();
}
public String hello() {
return construct.get("hello");
}
public String linkHello(){
return prefix() + hello();
}
public Map<String, String> links(){
Map<String, String> links = new HashMap<>();
// перебираем api
for (Map.Entry<String, String> entry : api.entrySet()) {
String link = prefix() + entry.getValue();
String key = "source.api." + entry.getKey();
links.put(key, link);
}
// перебираем face
for (Map.Entry<String, String> entry : face.entrySet()) {
String link = prefix() + entry.getValue();
String key = "source.face." + entry.getKey();
links.put(key, link);
}
return links;
}
}

58
face/src/main/java/gsp/technologies/face/config/StorageProperties.java

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
package gsp.technologies.face.config;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;
@Data
@Component
@ConfigurationProperties(prefix = "storage")
public class StorageProperties {
private Map<String, String> construct;
private Map<String, String> api;
private Map<String, String> face;
/**
* Методы извлечения CONSTRUCT
*/
public String protocol() {
return construct.get("protocol");
}
public String domain() {
return construct.get("domain");
}
public String port() {
return construct.get("port");
}
public String prefix(){
return protocol() + "://" + domain() + ":" + port();
}
public String hello() {
return construct.get("hello");
}
public String linkHello(){
return prefix() + hello();
}
public Map<String, String> links(){
Map<String, String> links = new HashMap<>();
// перебираем api
for (Map.Entry<String, String> entry : api.entrySet()) {
String link = prefix() + entry.getValue();
String key = "storage.api." + entry.getKey();
links.put(key, link);
}
// перебираем face
for (Map.Entry<String, String> entry : face.entrySet()) {
String link = prefix() + entry.getValue();
String key = "storage.face." + entry.getKey();
links.put(key, link);
}
return links;
}
}

6
face/src/main/java/gsp/technologies/face/controllers/api/v1/ApiController.java

@ -25,6 +25,7 @@ import org.springframework.web.util.UriComponentsBuilder; @@ -25,6 +25,7 @@ import org.springframework.web.util.UriComponentsBuilder;
import gsp.technologies.face.models.FileMetadata;
import gsp.technologies.face.models.Post;
import gsp.technologies.face.services.PropertyService;
import gsp.technologies.face.teh.fs.Filer;
import gsp.technologies.face.teh.fs.MpFile;
import jakarta.servlet.http.HttpServletRequest;
@ -43,6 +44,9 @@ public class ApiController { @@ -43,6 +44,9 @@ public class ApiController {
@Autowired
private WebClient client;
@Autowired
private PropertyService prop;
/**
* Загрузка файла на сервер,
*
@ -73,6 +77,7 @@ public class ApiController { @@ -73,6 +77,7 @@ public class ApiController {
try {
metadata = client.post()
.uri("http://source:8181/api/v1/storage/metadata/create")
// .uri(prop.source().links().get("source.api.metadata-create"))
.body(Mono.just(metadata), FileMetadata.class)
.retrieve()
.bodyToMono(new ParameterizedTypeReference <FileMetadata>(){})
@ -93,6 +98,7 @@ public class ApiController { @@ -93,6 +98,7 @@ public class ApiController {
log.info("Отправляем файл в хранилище с новым именем {}.{}", metadata.getId(), metadata.getExtension());
metadata = client.method(HttpMethod.POST)
.uri("http://storage:8282/api/v1/files/store")
// .uri(prop.storage().links().get("storage.api.file-store"))
.body(BodyInserters
.fromMultipartData(builder.build()))
.retrieve()

40
face/src/main/java/gsp/technologies/face/controllers/face/v1/MainframeController.java

@ -2,6 +2,7 @@ package gsp.technologies.face.controllers.face.v1; @@ -2,6 +2,7 @@ package gsp.technologies.face.controllers.face.v1;
import java.net.URI;
import java.time.Duration;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -20,10 +21,9 @@ import gsp.technologies.face.models.Content; @@ -20,10 +21,9 @@ import gsp.technologies.face.models.Content;
import gsp.technologies.face.models.ContentPage;
import gsp.technologies.face.models.ContentRequest;
import gsp.technologies.face.models.Post;
import gsp.technologies.face.services.LinksService;
import gsp.technologies.face.services.PropertyService;
import gsp.technologies.face.teh.pagination.Page;
@Controller
@RequestMapping(path = "/face/v1/mainframe")
public class MainframeController {
@ -33,16 +33,42 @@ public class MainframeController { @@ -33,16 +33,42 @@ public class MainframeController {
private WebClient client;
@Autowired
private LinksService links;
private PropertyService prop;
@GetMapping("")
public String mainframe(Model model, @RequestParam(name = "postContentPage", required = false) ContentPage<Post> postContentPage) {
log.info("GET /face/v1/mainframe");
log.info("********* properties ********* ");
// log.info("storage.api.home: {}", env.getProperty("storage.api.home"));
log.info("storage.api.home: {}", links.storageApiHome());
log.info("face.api.home: {}", links.faceApiHome());
//линки на ресурсы платформы
{
log.info("********* properties-face ********* ");
Map<String, String> map = prop.face().links();
for (Map.Entry<String, String> entry : map.entrySet()) {
log.info("{}: {}", entry.getKey(), entry.getValue());
}
}
{
log.info("********* properties-storage *********");
Map<String, String> map = prop.storage().links();
for (Map.Entry<String, String> entry : map.entrySet()) {
log.info("{}: {}", entry.getKey(), entry.getValue());
}
}
{
log.info("********* properties-source *********");
Map<String, String> map = prop.source().links();
for (Map.Entry<String, String> entry : map.entrySet()) {
log.info("{}: {}", entry.getKey(), entry.getValue());
}
}
{
log.info("********* properties *********");
String s = prop.env().getProperty("server.port");
log.info("server.port: {}", s);
}
if (postContentPage == null) {
//подготовка параметров запроса

7
face/src/main/java/gsp/technologies/face/services/LinksFace.java

@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
package gsp.technologies.face.services;
public interface LinksFace {
String storageApiHome();
}

149
face/src/main/java/gsp/technologies/face/services/LinksService.java

@ -1,149 +0,0 @@ @@ -1,149 +0,0 @@
package gsp.technologies.face.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
@Service
public class LinksService{
@Autowired
private Environment env;
/**
* get links from env: storage
* @return
*/
public String storageProtocol(){
return env.getProperty("storage.protocol");
}
public String storageDomain(){
return env.getProperty("storage.domain");
}
public String storagePort(){
return env.getProperty("storage.port");
}
public String storageHello(){
return env.getProperty("storage.hello");
}
public String storageApiHome(){
return env.getProperty("storage.api.home");
}
public String storageApiRoot(){
return env.getProperty("storage.api.root");
}
public String storageApiFiles(){
return env.getProperty("storage.api.files");
}
public String storageApiFileStore(){
return env.getProperty("storage.api.file-store");
}
public String storageApiFileStoreMultiple(){
return env.getProperty("storage.api.file-store-multiple");
}
public String storageApiFileDelete(){
return env.getProperty("storage.api.file-delete");
}
public String storageApiFileDownload(){
return env.getProperty("storage.api.file-download");
}
public String storageApiXlsxPage(){
return env.getProperty("storage.api.xlsx-page");
}
public String storageApiDirectoryCreate(){
return env.getProperty("storage.api.directory-create");
}
public String storageApiDirectoryDelete(){
return env.getProperty("storage.api.directory-delete");
}
public String storageApiFileCreateEmpty(){
return env.getProperty("storage.api.file-create-empty");
}
public String storageApiFileBytes(){
return env.getProperty("storage.api.file-bytes");
}
public String storageFaceHome(){
return env.getProperty("storage.face.home");
}
public String storageFaceMainframe(){
return env.getProperty("storage.face.mainframe");
}
public String storageFaceUploadFile(){
return env.getProperty("storage.face.upload-file");
}
public String storageFaceUploadMultipleFiles(){
return env.getProperty("storage.face.upload-multiple-files");
}
public String storageFaceDownloadFile(){
return env.getProperty("storage.face.download-file");
}
public String storageFaceDeleteFile(){
return env.getProperty("storage.face.delete-file");
}
public String storageFaceViewXlsx(){
return env.getProperty("storage.face.view-xlsx");
}
/**
* Get links from env: face
* @return
*/
public String faceProtocol(){
return env.getProperty("face.protocol");
}
public String faceDomain(){
return env.getProperty("face.domain");
}
public String facePort(){
return env.getProperty("face.port");
}
public String faceHello(){
return env.getProperty("face.hello");
}
public String faceApiHome(){
return env.getProperty("face.api.home");
}
public String faceApiUpload(){
return env.getProperty("face.api.upload");
}
public String faceApiDownload(){
return env.getProperty("face.api.download");
}
public String faceFaceMainframe(){
return env.getProperty("face.face.mainframe");
}
public String faceFaceStorage(){
return env.getProperty("face.face.storage");
}
/**
* get links from env: source
*/
}

39
face/src/main/java/gsp/technologies/face/services/PropertyService.java

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
package gsp.technologies.face.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import gsp.technologies.face.config.FaceProperties;
import gsp.technologies.face.config.SourceProperties;
import gsp.technologies.face.config.StorageProperties;
import lombok.Data;
@Service
public class PropertyService {
@Autowired
private FaceProperties face;
@Autowired
private StorageProperties storage;
@Autowired
private SourceProperties source;
@Autowired
private Environment env;
public FaceProperties face(){
return face;
}
public StorageProperties storage(){
return storage;
}
public SourceProperties source(){
return source;
}
public Environment env(){
return env;
}
}

14
face/src/main/resources/application-face.yaml

@ -1,12 +1,14 @@ @@ -1,12 +1,14 @@
face:
protocol: http://
construct:
protocol: http
domain: face
port: 8383
hello: /hello
api:
home: /api/v1
upload: /api/v1/upload
download: /api/v1/download
base: /api/v1
upload: /upload
download: /download
face:
mainframe: /face/v1/mainframe
storage: /face/v1/storage
base: /face/v1
mainframe: /mainframe
storage: /storage

23
face/src/main/resources/application-source.yaml

@ -1,14 +1,17 @@ @@ -1,14 +1,17 @@
source:
protocol: http://
domain: storage
construct:
protocol: http
domain: source
port: 8181
hello: /hello
api:
home: /api/v1
metadata-list: /api/v1/storage/metadata/list
post-list: /api/v1/storage/post/list
post-page: /api/v1/storage/post/page
post-page-distinct: /api/v1/storage/post/page/distinct
metadata-create: /api/v1/storage/metadata/create
post-create: /api/v1/storage/post/create
metadata-update: /api/v1/storage/metadata/update
base: /api/v1
metadata-list: /storage/metadata/list
post-list: /storage/post/list
post-page: /storage/post/page
post-page-distinct: /storage/post/page/distinct
metadata-create: /storage/metadata/create
post-create: /storage/post/create
metadata-update: /storage/metadata/update
face:
base: /face/v1

33
face/src/main/resources/application-storage.yaml

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
storage:
protocol: http://
construct:
protocol: http
domain: storage
port: 8282
# страница описания сервиса
@ -8,37 +9,37 @@ storage: @@ -8,37 +9,37 @@ storage:
###################################
# основные возможности api
# корневая директория сервиса "storage"
home: /api/v1
base: /api/v1
# перечень файлов, размещенных в хранилище
files: /api/v1/files
files: /files
# получение пути к корню файлового хранилища
root: /api/v1/root
root: /root
# сохранение файла в хранилище
file-store: /api/v1/files/store
file-store: /files/store
# сохранение нескольких файлов в хранилище
file-store-multiple: /api/v1/files/store-multiple
file-store-multiple: /files/store-multiple
# удаление файла из хранилища
file-delete: /api/v1/files/delete
file-delete: /files/delete
# скачивание файла из хранилища
file-download: /api/v1/files/download
file-download: /files/download
# постраничное извлечение данных xlsx-файла в json формате
xlsx-page: /api/v1/files/xlsx
xlsx-page: /files/xlsx
###################################
# дополнительные возможности api
# создание пустого файла
file-create-empty: /api/v1/files/create
file-create-empty: /files/create
# создание диектории
directory-create: /api/v1/dirs/create
directory-create: /dirs/create
# удаление директории
directory-delete: /api/v1/dirs/delete
directory-delete: /dirs/delete
# получение массива байтов файла, без буферизации
file-bytes: /files/get-bytes
face:
home: /face/v1
mainframe: /face/v1/mainframe
upload-file: /face/v1/upload-file
upload-multiple-files: /face/v1/upload-multiple-files
base: /face/v1
mainframe: /mainframe
upload-file: /upload-file
upload-multiple-files: /upload-multiple-files
download: /files/download-file
delete: /files/delete-file
view-xlsx: /files/view
Loading…
Cancel
Save