From a3107b8c49c5f2647eecec53edf440c5936487c5 Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Sat, 21 Jul 2018 11:22:11 +0800 Subject: [PATCH] =?UTF-8?q?chore[litemall-os-api]:=20=E5=88=A0=E9=99=A4os?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=9A=84=E5=AD=98=E5=82=A8=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=EF=BC=8C=E7=84=B6=E5=90=8E=E4=BE=9D=E8=B5=96core=E7=9A=84?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../litemall/allinone/AllinoneConfigTest.java | 4 +- .../os/config/ObjectStorageConfig.java | 28 ----- .../litemall/os/service/AliyunOsService.java | 111 ----------------- .../litemall/os/service/LocalOsService.java | 96 --------------- .../os/service/ObjectStorageService.java | 31 ----- .../litemall/os/service/TencentOsService.java | 114 ------------------ .../litemall/os/web/OsStorageController.java | 6 +- .../src/main/resources/aliyun.properties | 6 - .../src/main/resources/application-os.yml | 12 -- .../src/main/resources/tencent.properties | 6 - .../org/linlinjava/litemall/os/AosTest.java | 39 ------ .../org/linlinjava/litemall/os/LosTest.java | 42 ------- .../org/linlinjava/litemall/os/OsTest.java | 30 ----- .../org/linlinjava/litemall/os/TosTest.java | 42 ------- .../src/test/resources/litemall.png | Bin 8524 -> 0 bytes 15 files changed, 5 insertions(+), 562 deletions(-) delete mode 100644 litemall-os-api/src/main/java/org/linlinjava/litemall/os/config/ObjectStorageConfig.java delete mode 100644 litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/AliyunOsService.java delete mode 100644 litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/LocalOsService.java delete mode 100644 litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/ObjectStorageService.java delete mode 100644 litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/TencentOsService.java delete mode 100644 litemall-os-api/src/main/resources/aliyun.properties delete mode 100644 litemall-os-api/src/main/resources/tencent.properties delete mode 100644 litemall-os-api/src/test/java/org/linlinjava/litemall/os/AosTest.java delete mode 100644 litemall-os-api/src/test/java/org/linlinjava/litemall/os/LosTest.java delete mode 100644 litemall-os-api/src/test/java/org/linlinjava/litemall/os/OsTest.java delete mode 100644 litemall-os-api/src/test/java/org/linlinjava/litemall/os/TosTest.java delete mode 100644 litemall-os-api/src/test/resources/litemall.png diff --git a/litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java b/litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java index 8587ab94..f52724ea 100644 --- a/litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java +++ b/litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java @@ -22,11 +22,11 @@ public class AllinoneConfigTest { // 测试获取application-db.yml配置信息 System.out.println(environment.getProperty("spring.datasource.druid.url")); // 测试获取application-wx.yml配置信息 - System.out.println(environment.getProperty("wx.app-id")); + System.out.println(environment.getProperty("litemall.wx.app-id")); // 测试获取application-admin.yml配置信息 // System.out.println(environment.getProperty("")); // 测试获取application-os.yml配置信息 - System.out.println(environment.getProperty("org.linlinjava.litemall.os.address")); +// System.out.println(environment.getProperty("")); // 测试获取application.yml配置信息 System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.os")); System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.wx")); diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/config/ObjectStorageConfig.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/config/ObjectStorageConfig.java deleted file mode 100644 index 04e14a3e..00000000 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/config/ObjectStorageConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.linlinjava.litemall.os.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties(prefix = "litemall.os") -public class ObjectStorageConfig { - private String address; - - private String port; - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getPort() { - return port; - } - - public void setPort(String port) { - this.port = port; - } -} diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/AliyunOsService.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/AliyunOsService.java deleted file mode 100644 index f2045092..00000000 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/AliyunOsService.java +++ /dev/null @@ -1,111 +0,0 @@ -package org.linlinjava.litemall.os.service; - -import com.aliyun.oss.OSSClient; -import com.aliyun.oss.model.ObjectMetadata; -import com.aliyun.oss.model.PutObjectRequest; -import com.aliyun.oss.model.PutObjectResult; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.UrlResource; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.file.Path; -import java.util.stream.Stream; - -/** - * @author Yogeek - * @date 2018/7/16 16:10 - * @decrpt 阿里云对象存储服务 - */ -@PropertySource(value = "classpath:aliyun.properties") -@Service("aos") -public class AliyunOsService implements ObjectStorageService { - - @Value("${aliyun.os.ENDPOINT}") - private String ENDPOINT; - @Value("${aliyun.os.ACCESS_KEY_ID}") - private String ACCESS_KEY_ID; - @Value("${aliyun.os.ACCESS_KEY_SECRET}") - private String ACCESS_KEY_SECRET; - @Value("${aliyun.os.BUCKET_NAME}") - private String BUCKET_NAME; -// @Value("${aliyun.os.FOLDER}") -// private String FOLDER; - - /** - * 获取阿里云OSS客户端对象 - * - * @return ossClient - */ - private OSSClient getOSSClient(){ - return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET); - } - - private String getBaseUrl() { - return "https://" + BUCKET_NAME + "." + ENDPOINT + "/" ; - } - - /** - * 阿里云OSS对象存储简单上传实现 - */ - @Override - public void store(MultipartFile file, String keyName) { - try { - // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20M以下的文件使用该接口 - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentLength(file.getSize()); - objectMetadata.setContentType(file.getContentType()); - // 对象键(Key)是对象在存储桶中的唯一标识。 - PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, keyName, file.getInputStream(), objectMetadata); - PutObjectResult putObjectResult = getOSSClient().putObject(putObjectRequest); - } catch (Exception ex) { - ex.printStackTrace(); - } - - } - - @Override - public Stream loadAll() { - return null; - } - - @Override - public Path load(String keyName) { - return null; - } - - @Override - public Resource loadAsResource(String keyName) { - try { - URL url = new URL(getBaseUrl() + keyName); - Resource resource = new UrlResource(url); - if (resource.exists() || resource.isReadable()) { - return resource; - } else { - return null; - } - } catch (MalformedURLException e) { - e.printStackTrace(); - return null; - } - } - - @Override - public void delete(String keyName) { - try { - getOSSClient().deleteObject(BUCKET_NAME, keyName); - }catch (Exception e){ - e.printStackTrace(); - } - - } - - @Override - public String generateUrl(String keyName) { - return getBaseUrl() + keyName; - } -} diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/LocalOsService.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/LocalOsService.java deleted file mode 100644 index ebe2af6b..00000000 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/LocalOsService.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.linlinjava.litemall.os.service; - - -import java.io.IOException; -import java.net.MalformedURLException; -import java.nio.file.*; -import java.util.stream.Stream; - -import org.linlinjava.litemall.os.config.ObjectStorageConfig; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.Resource; -import org.springframework.core.io.UrlResource; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -/** - * 服务器本地对象存储服务 - * - * 缩写los(local object storage) - */ -@Service("los") -public class LocalOsService implements ObjectStorageService { - - @Autowired - private ObjectStorageConfig osConfig; - private static final Path rootLocation = Paths.get("storage"); - - static { - try { - Files.createDirectories(rootLocation); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void store(MultipartFile file, String keyName) { - try { - Files.copy(file.getInputStream(), LocalOsService.rootLocation.resolve(keyName), StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new RuntimeException("Failed to store file " + keyName, e); - } - } - - @Override - public Stream loadAll() { - try { - return Files.walk(LocalOsService.rootLocation, 1) - .filter(path -> !path.equals(LocalOsService.rootLocation)) - .map(path -> LocalOsService.rootLocation.relativize(path)); - } catch (IOException e) { - throw new RuntimeException("Failed to read stored files", e); - } - - } - - @Override - public Path load(String filename) { - return rootLocation.resolve(filename); - } - - @Override - public Resource loadAsResource(String filename) { - try { - Path file = load(filename); - Resource resource = new UrlResource(file.toUri()); - if (resource.exists() || resource.isReadable()) { - return resource; - } else { - return null; - } - } catch (MalformedURLException e) { - e.printStackTrace(); - return null; - } - } - - @Override - public void delete(String filename) { - Path file = load(filename); - try { - Files.delete(file); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public String generateUrl(String keyName) { - String url = osConfig.getAddress() + ":" + osConfig.getPort() + "/os/storage/fetch/" + keyName; - if (!url.startsWith("http")) { - url = "http://" + url; - } - return url; - } -} \ No newline at end of file diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/ObjectStorageService.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/ObjectStorageService.java deleted file mode 100644 index 6b2df45b..00000000 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/ObjectStorageService.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.linlinjava.litemall.os.service; - -import org.springframework.core.io.Resource; -import org.springframework.web.multipart.MultipartFile; - -import java.io.InputStream; -import java.nio.file.Path; -import java.util.stream.Stream; - -/** - * 对象存储接口 - */ -public interface ObjectStorageService { - - /** - * 存储一个文件对象 - * @param file SpringBoot MultipartFile文件对象 - * @param keyName 文件索引名 - */ - void store(MultipartFile file, String keyName); - - Stream loadAll(); - - Path load(String keyName); - - Resource loadAsResource(String keyName); - - void delete(String keyName); - - String generateUrl(String keyName); -} \ No newline at end of file diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/TencentOsService.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/TencentOsService.java deleted file mode 100644 index eefce850..00000000 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/service/TencentOsService.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.linlinjava.litemall.os.service; - -import com.qcloud.cos.COSClient; -import com.qcloud.cos.ClientConfig; -import com.qcloud.cos.auth.BasicCOSCredentials; -import com.qcloud.cos.auth.COSCredentials; -import com.qcloud.cos.model.ObjectMetadata; -import com.qcloud.cos.model.PutObjectRequest; -import com.qcloud.cos.model.PutObjectResult; -import com.qcloud.cos.region.Region; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.UrlResource; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.file.Path; -import java.util.stream.Stream; - -/** - * 腾讯对象存储服务 - * - * 注意:虽然腾讯对象存储英文缩写是cos(cloud object storage),但这里称之为tos(tencent object storage) - */ -@PropertySource(value = "classpath:tencent.properties") -@Service("tos") -public class TencentOsService implements ObjectStorageService { - - @Value("${tencent.os.secretId}") - private String accessKey; - @Value("${tencent.os.secretKey}") - private String secretKey; - @Value("${tencent.os.region}") - private String region; - @Value("${tencent.os.bucketName}") - private String bucketName; - - private COSClient cosClient; - - private COSClient getCOSClient() { - if (cosClient == null) { - // 1 初始化用户身份信息(secretId, secretKey) - COSCredentials cred = new BasicCOSCredentials(accessKey, secretKey); - // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 - ClientConfig clientConfig = new ClientConfig(new Region(region)); - cosClient = new COSClient(cred, clientConfig); - } - - return cosClient; - } - - private String getBaseUrl() { - return "https://" + bucketName + ".cos-website." + region + ".myqcloud.com/"; - } - - @Override - public void store(MultipartFile file, String keyName) { - try { - // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20M以下的文件使用该接口 - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentLength(file.getSize()); - objectMetadata.setContentType(file.getContentType()); - // 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg` 中,对象键为 doc1/pic1.jpg, 详情参考 [对象键](https://cloud.tencent.com/document/product/436/13324) - PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, file.getInputStream(), objectMetadata); - PutObjectResult putObjectResult = getCOSClient().putObject(putObjectRequest); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - @Override - public Stream loadAll() { - return null; - } - - @Override - public Path load(String keyName) { - return null; - } - - @Override - public Resource loadAsResource(String keyName) { - try { - URL url = new URL(getBaseUrl() + keyName); - Resource resource = new UrlResource(url); - if (resource.exists() || resource.isReadable()) { - return resource; - } else { - return null; - } - } catch (MalformedURLException e) { - e.printStackTrace(); - return null; - } - } - - @Override - public void delete(String keyName) { - try { - getCOSClient().deleteObject(bucketName, keyName); - }catch (Exception e){ - e.printStackTrace(); - } - - } - - @Override - public String generateUrl(String keyName) { - return getBaseUrl() + keyName; - } -} diff --git a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsStorageController.java b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsStorageController.java index 13a31105..c897d91d 100644 --- a/litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsStorageController.java +++ b/litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsStorageController.java @@ -1,10 +1,10 @@ package org.linlinjava.litemall.os.web; +import org.linlinjava.litemall.core.storage.StorageService; import org.linlinjava.litemall.core.util.CharUtil; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.domain.LitemallStorage; import org.linlinjava.litemall.db.service.LitemallStorageService; -import org.linlinjava.litemall.os.service.ObjectStorageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; @@ -24,8 +24,8 @@ import java.util.Map; @RequestMapping("/os/storage") public class OsStorageController { - @javax.annotation.Resource(name="${activeStorage}") - private ObjectStorageService storageService; + @Autowired + private StorageService storageService; @Autowired private LitemallStorageService litemallStorageService; diff --git a/litemall-os-api/src/main/resources/aliyun.properties b/litemall-os-api/src/main/resources/aliyun.properties deleted file mode 100644 index 9e734940..00000000 --- a/litemall-os-api/src/main/resources/aliyun.properties +++ /dev/null @@ -1,6 +0,0 @@ -# 阿里云对象存储配置信息 -aliyun.os.ENDPOINT=oss-cn-shenzhen.aliyuncs.com -aliyun.os.ACCESS_KEY_ID= -aliyun.os.ACCESS_KEY_SECRET= -aliyun.os.BUCKET_NAME= -#aliyun.os.FOLDER="xxxxxx" \ No newline at end of file diff --git a/litemall-os-api/src/main/resources/application-os.yml b/litemall-os-api/src/main/resources/application-os.yml index de38d940..e69de29b 100644 --- a/litemall-os-api/src/main/resources/application-os.yml +++ b/litemall-os-api/src/main/resources/application-os.yml @@ -1,12 +0,0 @@ -# 当前存储模式 -# los,本地对象存储模式,上传图片保存在服务器中 -# tos,腾讯对象存储模式,上传图片保存在腾讯云存储服务器中,请在tencent.properties配置相关信息 -# tos,阿里云对象存储模式,上传图片保存在腾讯云存储服务器中,请在tencent.properties配置相关信息 -activeStorage: los -#activeStorage: tos -#activeStorage: aos - -# 开发者应该设置成自己的域名,必须附带http或者https -# 开发者可以查看OsStorageController.generateUrl -litemall.os.address: http://127.0.0.1 -litemall.os.port: 8081 \ No newline at end of file diff --git a/litemall-os-api/src/main/resources/tencent.properties b/litemall-os-api/src/main/resources/tencent.properties deleted file mode 100644 index 6d9052b6..00000000 --- a/litemall-os-api/src/main/resources/tencent.properties +++ /dev/null @@ -1,6 +0,0 @@ -# 腾讯对象存储配置信息 -# 请参考 https://cloud.tencent.com/document/product/436/6249 -tencent.os.secretId="xxxxxx" -tencent.os.secretKey="xxxxxx" -tencent.os.region="xxxxxx" -tencent.os.bucketName="xxxxxx" diff --git a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/AosTest.java b/litemall-os-api/src/test/java/org/linlinjava/litemall/os/AosTest.java deleted file mode 100644 index 6c490b4f..00000000 --- a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/AosTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.linlinjava.litemall.os; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.linlinjava.litemall.os.service.AliyunOsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.io.Resource; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.util.FileCopyUtils; - -import java.io.FileInputStream; -import java.io.IOException; - -@WebAppConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest -public class AosTest { - @Autowired - private AliyunOsService aliyunOsService; - - @Test - public void test() throws IOException { - String test = getClass().getClassLoader().getResource("litemall.png").getFile(); - byte[] content = (byte[])FileCopyUtils.copyToByteArray(new FileInputStream(test)); - MockMultipartFile mockMultipartFile = new MockMultipartFile("litemall.png", "litemall.png", "image/png", content); - aliyunOsService.store(mockMultipartFile, "aos.png"); - Resource resource = aliyunOsService.loadAsResource("aos.png"); - String url = aliyunOsService.generateUrl("aos.png"); - System.out.println("test file " + test); - System.out.println("store file " + resource.getURI()); - System.out.println("generate url " + url); - -// tencentOsService.delete("aos.png"); - } - -} \ No newline at end of file diff --git a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/LosTest.java b/litemall-os-api/src/test/java/org/linlinjava/litemall/os/LosTest.java deleted file mode 100644 index 002c90a2..00000000 --- a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/LosTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.linlinjava.litemall.os; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.linlinjava.litemall.os.service.LocalOsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.io.Resource; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.util.FileCopyUtils; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -@WebAppConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest -public class LosTest { - @Autowired - private LocalOsService localOsService; - - @Test - public void test() throws IOException { - String test = getClass().getClassLoader().getResource("litemall.png").getFile(); - byte[] content = (byte[])FileCopyUtils.copyToByteArray(new FileInputStream(test)); - MockMultipartFile mockMultipartFile = new MockMultipartFile("litemall.png", "litemall.png", "image/jpeg", content); - localOsService.store(mockMultipartFile, "los.png"); - Resource resource = localOsService.loadAsResource("los.png"); - String url = localOsService.generateUrl("los.png"); - System.out.println("test file " + test); - System.out.println("store file " + resource.getURI()); - System.out.println("generate url " + url); - -// localOsService.delete("los.png"); - - } - -} \ No newline at end of file diff --git a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/OsTest.java b/litemall-os-api/src/test/java/org/linlinjava/litemall/os/OsTest.java deleted file mode 100644 index 2f0e0077..00000000 --- a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/OsTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.linlinjava.litemall.os; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.env.Environment; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; - -@WebAppConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest -public class OsTest { - @Autowired - Environment environment; - - @Test - public void test() { - // 测试获取application-core.yml配置信息 - System.out.println(environment.getProperty("litemall.express.appId")); - // 测试获取application-db.yml配置信息 - System.out.println(environment.getProperty("spring.datasource.druid.url")); - // 测试获取application-os.yml配置信息 - System.out.println(environment.getProperty("litemall.os.address")); - // 测试获取application.yml配置信息 - System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.os")); - } - -} \ No newline at end of file diff --git a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/TosTest.java b/litemall-os-api/src/test/java/org/linlinjava/litemall/os/TosTest.java deleted file mode 100644 index c84d3d2e..00000000 --- a/litemall-os-api/src/test/java/org/linlinjava/litemall/os/TosTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.linlinjava.litemall.os; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.linlinjava.litemall.os.config.ObjectStorageConfig; -import org.linlinjava.litemall.os.service.TencentOsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.io.Resource; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.util.FileCopyUtils; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; - -@WebAppConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest -public class TosTest { - @Autowired - private TencentOsService tencentOsService; - - @Test - public void test() throws IOException { - String test = getClass().getClassLoader().getResource("litemall.png").getFile(); - byte[] content = (byte[])FileCopyUtils.copyToByteArray(new FileInputStream(test)); - MockMultipartFile mockMultipartFile = new MockMultipartFile("litemall.png", "litemall.png", "image/png", content); - tencentOsService.store(mockMultipartFile, "tos.png"); - Resource resource = tencentOsService.loadAsResource("tos.png"); - String url = tencentOsService.generateUrl("tos.png"); - System.out.println("test file " + test); - System.out.println("store file " + resource.getURI()); - System.out.println("generate url " + url); - -// tencentOsService.delete("tos.png"); - } - -} \ No newline at end of file diff --git a/litemall-os-api/src/test/resources/litemall.png b/litemall-os-api/src/test/resources/litemall.png deleted file mode 100644 index d16e9afa0012582aa308a4807f857195301382d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8524 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