From c767deb2ad2eb89306a665a92f3e0b8ff5dbb55b Mon Sep 17 00:00:00 2001 From: TheEnd <1302344380@qq.com> Date: Sun, 31 Jul 2022 20:21:14 +0800 Subject: [PATCH] 1.0 --- pom.xml | 3 +- .../pom.xml | 29 +++---- .../starter/ShortUrlWebAutoConfiguration.java | 18 +++++ .../controller/ShortUrlController.java | 39 ++++++++++ .../boot/starter/controller/ToController.java | 41 ++++++++++ .../main/resources/META-INF/spring.factories | 2 + .../web/controller/ShortUrlController.java | 40 ---------- .../src/main/resources/application.yml | 7 -- zy-shorturl-server/pom.xml | 78 +++++++++++++++++++ .../java/cn/shorturl/server}/Application.java | 3 +- .../src/main/resources/application.yml | 24 ++++++ .../starter/ShortUrlAutoConfiguration.java | 4 - 12 files changed, 216 insertions(+), 72 deletions(-) rename {zu-shorturl-web => zu-shorturl-web-spring-boot-starter}/pom.xml (70%) create mode 100644 zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/ShortUrlWebAutoConfiguration.java create mode 100644 zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ShortUrlController.java create mode 100644 zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ToController.java create mode 100644 zu-shorturl-web-spring-boot-starter/src/main/resources/META-INF/spring.factories delete mode 100644 zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java delete mode 100644 zu-shorturl-web/src/main/resources/application.yml create mode 100644 zy-shorturl-server/pom.xml rename {zu-shorturl-web/src/main/java/cn/shorturl/web => zy-shorturl-server/src/main/java/cn/shorturl/server}/Application.java (92%) create mode 100644 zy-shorturl-server/src/main/resources/application.yml diff --git a/pom.xml b/pom.xml index eb1794a..e192a6b 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,8 @@ zy-shorturl-core zy-shorturl-spring-boot-starter zy-shorturl-store - zu-shorturl-web + zy-shorturl-server + zu-shorturl-web-spring-boot-starter diff --git a/zu-shorturl-web/pom.xml b/zu-shorturl-web-spring-boot-starter/pom.xml similarity index 70% rename from zu-shorturl-web/pom.xml rename to zu-shorturl-web-spring-boot-starter/pom.xml index 567901f..54256d9 100644 --- a/zu-shorturl-web/pom.xml +++ b/zu-shorturl-web-spring-boot-starter/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - zu-shorturl-web + zu-shorturl-web-spring-boot-starter 8 @@ -17,38 +17,29 @@ - - - com.google.guava - guava - 31.1-jre - - - - - cn.zzzykj - zy-short-url-spring-boot-starter - 1.0-SNAPSHOT - - - + org.springframework.boot spring-boot-starter-web org.springframework.boot - spring-boot-starter-test + spring-boot-configuration-processor + + - org.springframework.boot - spring-boot-autoconfigure + cn.zzzykj + zy-short-url-spring-boot-starter + 1.0-SNAPSHOT org.projectlombok lombok + true + compile diff --git a/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/ShortUrlWebAutoConfiguration.java b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/ShortUrlWebAutoConfiguration.java new file mode 100644 index 0000000..a631a4b --- /dev/null +++ b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/ShortUrlWebAutoConfiguration.java @@ -0,0 +1,18 @@ +package cn.shorturl.web.boot.starter; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author ZhuoQinghui + * @version 1.0.0 + * Create By 2022/7/31 19:41 + */ +@Slf4j +@Configuration +@ComponentScan("cn.shorturl.web.boot.starter.controller") +@EnableConfigurationProperties +public class ShortUrlWebAutoConfiguration { +} diff --git a/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ShortUrlController.java b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ShortUrlController.java new file mode 100644 index 0000000..964a306 --- /dev/null +++ b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ShortUrlController.java @@ -0,0 +1,39 @@ +package cn.shorturl.web.boot.starter.controller; + +import cn.shorturl.core.ShortUrl; +import cn.shorturl.store.ShortUrlStore; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * @author ZhuoQinghui + * @version 1.0.0 + * Create By 2022/7/31 16:41 + */ +@Slf4j +@RestController +@ConditionalOnProperty(prefix = "shorturl.api", name = "enable") +@RequestMapping("${shorturl.api.url-suffix}") +public class ShortUrlController { + + @Resource + private ShortUrlStore store; + + @GetMapping("${shorturl.api.add}") + public ShortUrl add(@RequestParam String url, @RequestParam(required = false) Date expire) { + return store.add(url, expire); + } + + @GetMapping("${shorturl.api.get}") + public ShortUrl get(@RequestParam String hash) { + return store.get(hash); + } + +} diff --git a/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ToController.java b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ToController.java new file mode 100644 index 0000000..d242df2 --- /dev/null +++ b/zu-shorturl-web-spring-boot-starter/src/main/java/cn/shorturl/web/boot/starter/controller/ToController.java @@ -0,0 +1,41 @@ +package cn.shorturl.web.boot.starter.controller; + +import cn.shorturl.core.ShortUrl; +import cn.shorturl.store.ShortUrlStore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @author ZhuoQinghui + * @version 1.0.0 + * Create By 2022/7/31 18:57 + */ +@Controller +@ConditionalOnProperty(prefix = "shorturl.redirect", name = "enable") +@RequestMapping("${shorturl.redirect.url-suffix}") +public class ToController { + + @Resource + private ShortUrlStore store; + + @RequestMapping("/{hash}") + public void to(@PathVariable String hash, HttpServletResponse response) { + ShortUrl url = store.get(hash); + if (url == null) { + throw new IllegalArgumentException("hash not found"); + } + try { + response.sendRedirect(url.getUrl()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/zu-shorturl-web-spring-boot-starter/src/main/resources/META-INF/spring.factories b/zu-shorturl-web-spring-boot-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..83ae3b7 --- /dev/null +++ b/zu-shorturl-web-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + cn.shorturl.web.boot.starter.ShortUrlWebAutoConfiguration \ No newline at end of file diff --git a/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java b/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java deleted file mode 100644 index 4bf3104..0000000 --- a/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.shorturl.web.controller; - -import cn.shorturl.core.ShortUrlConfig; -import cn.shorturl.store.ShortUrlStore; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; - -/** - * @author ZhuoQinghui - * @version 1.0.0 - * Create By 2022/7/31 16:41 - */ -@Slf4j -@RestController -@RequestMapping("/su") -public class ShortUrlController { - - @Resource - private ShortUrlStore store; - - @PostConstruct - public void init() { - log.info("store: {}", store); - String url = "https://www.baidu.com"; - String hash = store.hash(url); - log.info("hash: {}", hash); - store.add(url); - } - - @GetMapping("/gen") - public String gen() { - return ""; - } - -} diff --git a/zu-shorturl-web/src/main/resources/application.yml b/zu-shorturl-web/src/main/resources/application.yml deleted file mode 100644 index 4bb0b58..0000000 --- a/zu-shorturl-web/src/main/resources/application.yml +++ /dev/null @@ -1,7 +0,0 @@ -server: - port: 8090 - -shorturl: - store: - retryMax: 6 - store-type: redis \ No newline at end of file diff --git a/zy-shorturl-server/pom.xml b/zy-shorturl-server/pom.xml new file mode 100644 index 0000000..71aae4f --- /dev/null +++ b/zy-shorturl-server/pom.xml @@ -0,0 +1,78 @@ + + + + zy-short-url + cn.zzzykj + 1.0-SNAPSHOT + + 4.0.0 + + zy-shorturl-server + + + 8 + 8 + + + + + + com.google.guava + guava + 31.1-jre + + + + + cn.zzzykj + zu-shorturl-web-spring-boot-starter + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + + + org.springframework.boot + spring-boot-autoconfigure + + + org.springframework.boot + spring-boot-starter-data-redis-reactive + + + + + org.projectlombok + lombok + true + compile + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + \ No newline at end of file diff --git a/zu-shorturl-web/src/main/java/cn/shorturl/web/Application.java b/zy-shorturl-server/src/main/java/cn/shorturl/server/Application.java similarity index 92% rename from zu-shorturl-web/src/main/java/cn/shorturl/web/Application.java rename to zy-shorturl-server/src/main/java/cn/shorturl/server/Application.java index 01f1d46..f03bb6e 100644 --- a/zu-shorturl-web/src/main/java/cn/shorturl/web/Application.java +++ b/zy-shorturl-server/src/main/java/cn/shorturl/server/Application.java @@ -1,8 +1,9 @@ -package cn.shorturl.web; +package cn.shorturl.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; + /** * @author ZhuoQinghui * @version 1.0.0 diff --git a/zy-shorturl-server/src/main/resources/application.yml b/zy-shorturl-server/src/main/resources/application.yml new file mode 100644 index 0000000..20a4dd1 --- /dev/null +++ b/zy-shorturl-server/src/main/resources/application.yml @@ -0,0 +1,24 @@ +server: + port: 8090 + +spring: + redis: + host: '192.168.1.202' + port: 6379 + timeout: 60000 + database: 12 + password: '123456' + + +shorturl: + redirect: + enable: true + url-suffix: '/to' + api: + enable: true + url-suffix: '/api' + add: '/add' + get: '/get' + store: + retryMax: 6 + store-type: redis \ No newline at end of file diff --git a/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java b/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java index fe06697..7bbf8c9 100644 --- a/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java +++ b/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java @@ -13,12 +13,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.StringRedisTemplate; - -import javax.annotation.PostConstruct; /** * @author ZhuoQinghui