Skip to content

Commit

Permalink
feature/swagger-configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
rohit-zip committed Aug 29, 2024
1 parent a357f18 commit 010c49f
Show file tree
Hide file tree
Showing 6 changed files with 189 additions and 68 deletions.
10 changes: 10 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,16 @@
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-security</artifactId>
<version>1.7.0</version>
</dependency>
</dependencies>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.bloggios.blog.configuration;

import com.bloggios.blog.properties.SwaggerConfigProperties;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* Owner - Rohit Parihar
* Author - rohit
* Project - blog-provider-application
* Package - com.bloggios.blog.configuration
* Created_on - August 30 - 2024
* Created_at - 01:19
*/

@Configuration
@RequiredArgsConstructor
public class SwaggerConfiguration {

private final SwaggerConfigProperties swaggerConfigProperties;

@Bean
public GroupedOpenApi api() {
return GroupedOpenApi.builder()
.group(swaggerConfigProperties.getGroupName().getDefinition())
.packagesToScan(swaggerConfigProperties.getGroupName().getScanPackages())
.build();
}

@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title(swaggerConfigProperties.getInfo().getTitle())
.version(swaggerConfigProperties.getInfo().getVersion())
.description(swaggerConfigProperties.getInfo().getDescription())
.license(new License().name(swaggerConfigProperties.getInfo().getLicense().getName()).url(swaggerConfigProperties.getInfo().getLicense().getUrl()))
.contact(new Contact().name(swaggerConfigProperties.getInfo().getContact().getName()).email(swaggerConfigProperties.getInfo().getContact().getEmail()).url(swaggerConfigProperties.getInfo().getContact().getUrl())))
.servers(getServers())
.components(new Components()
.addSecuritySchemes("bearerAuth", new SecurityScheme()
.name("bearerAuth")
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")
.in(SecurityScheme.In.HEADER)
.description("JWT Authentication")));
}

public List<Server> getServers(){
Map<String, SwaggerConfigProperties.Server> servers = swaggerConfigProperties.getServers();
List<Server> serversList = new ArrayList<>();
for (String server : servers.keySet()){
SwaggerConfigProperties.Server getServer = servers.get(server);
serversList.add(new Server().description(getServer.getName()).url(getServer.getUrl()));
}
return serversList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.bloggios.blog.properties;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

/**
* Owner - Rohit Parihar
* Author - rohit
* Project - blog-provider-application
* Package - com.bloggios.blog.properties
* Created_on - August 30 - 2024
* Created_at - 01:35
*/

@Getter
@Setter
@ConfigurationProperties(prefix = "swagger-properties")
@Configuration
public class SwaggerConfigProperties {

private Info info;
private Map<String, Server> servers;
private Group groupName;


@Getter
@Setter
public static class Info{
private String title;
private String description;
private String summary;
private String version;
private Contact contact;
private License license;
}

@Getter
@Setter
public static class Contact{
private String name;
private String email;
private String url;
}

@Getter
@Setter
public static class License{
private String name;
private String url;
}

@Getter
@Setter
public static class Server{
private String name;
private String url;
}

@Getter
@Setter
public static class Group{
private String definition;
private String scanPackages;
}
}
51 changes: 0 additions & 51 deletions src/main/java/com/bloggios/blog/scheduler/SchedulerValidator.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@
import com.bloggios.blog.modal.SchedulerData;
import com.bloggios.blog.persistence.BlogEntityToDocumentPersistence;
import com.bloggios.blog.scheduler.ExecuteScheduler;
import com.bloggios.blog.scheduler.SchedulerValidator;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.actuate.logging.LoggersEndpoint;
import org.springframework.stereotype.Component;

import javax.transaction.Transactional;
Expand All @@ -29,29 +28,16 @@

@Component
@Slf4j
@RequiredArgsConstructor
public class BlogSchedulerImplementation implements ExecuteScheduler {

private final SchedulerDataDao schedulerDataDao;
private final SchedulerValidator schedulerValidator;
private final BlogEntityDao blogEntityDao;
private final BlogEntityToDocumentPersistence blogEntityToDocumentPersistence;

public BlogSchedulerImplementation(
SchedulerDataDao schedulerDataDao,
SchedulerValidator schedulerValidator,
BlogEntityDao blogEntityDao,
BlogEntityToDocumentPersistence blogEntityToDocumentPersistence
) {
this.schedulerDataDao = schedulerDataDao;
this.schedulerValidator = schedulerValidator;
this.blogEntityDao = blogEntityDao;
this.blogEntityToDocumentPersistence = blogEntityToDocumentPersistence;
}

@Override
@Transactional
public void execute(SchedulerData schedulerData) {
schedulerValidator.validate(schedulerData);
Optional<BlogEntity> optionalBlogEntity = blogEntityDao.findById(schedulerData.getDestId());
if (optionalBlogEntity.isEmpty()) return;
BlogEntity blogEntity = optionalBlogEntity.get();
Expand Down
37 changes: 36 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,17 @@ security-config:
- /actuator/**
- /topics/**
- /unauth/**
- /api/v1/auth/**"
- /v2/api-docs
- /swagger-resources
- /swagger-resources/**
- /configuration/ui
- /configuration/security
- /swagger-ui/**
- /webjars/**
- /swagger-ui.html
- /v3/api-docs
- /v3/api-docs/**
cookie:
cookie-name: ${ACTIVE_PROFILE:local}.bg-refresh-mgmt
paths:
Expand All @@ -85,4 +96,28 @@ security-config:

blog-files:
blog-images: ${BLOG_IMAGES_PATH:files/blog-provider/blog}
cover-images: ${COVER_IMAGES_PATH:files/blog-provider/cover}
cover-images: ${COVER_IMAGES_PATH:files/blog-provider/cover}

swagger-properties:
group-name:
definition: ${spring.application.name}
scan-packages: com.bloggios.blog
info:
title: Bloggios - Blog Provider Application
version: @version@
description: API Documentation for blog-provider-application
summary: The Blog Provider Application, developed using Java 17 and Spring Boot, serves as a comprehensive backend microservice for Bloggios. It offers a full suite of blogging features, including commenting, likes, and more, to enhance user engagement and content management.
contact:
name: Bloggios
email: support@bloggios.com
url: https://www.bloggios.com
license:
name: Apache 2 License
url: https://github.com/Bloggios/blog-provider-application/blob/main/LICENSE
servers:
local:
name: Local Port
url: http://localhost:${server.port}/blog-provider
production:
name: Hosted Port
url: https://api.bloggios.com/blog-provider

0 comments on commit 010c49f

Please sign in to comment.