Project

General

Profile

1
package eu.dnetlib;
2

    
3
import eu.dnetlib.OpenaireExporterConfig.Swagger;
4
import eu.dnetlib.openaire.community.CommunityApiController;
5
import eu.dnetlib.openaire.context.ContextApiController;
6
import eu.dnetlib.openaire.dsm.DsmApiController;
7
import eu.dnetlib.openaire.funders.FundersApiController;
8
import eu.dnetlib.openaire.project.ProjectsController;
9
import org.apache.commons.logging.Log;
10
import org.apache.commons.logging.LogFactory;
11
import org.springframework.beans.factory.annotation.Autowired;
12
import org.springframework.context.annotation.Bean;
13
import org.springframework.context.annotation.Configuration;
14
import springfox.documentation.builders.ApiInfoBuilder;
15
import springfox.documentation.service.ApiInfo;
16
import springfox.documentation.service.Contact;
17
import springfox.documentation.spi.DocumentationType;
18
import springfox.documentation.spring.web.plugins.Docket;
19
import springfox.documentation.swagger2.annotations.EnableSwagger2;
20

    
21
import static springfox.documentation.builders.RequestHandlerSelectors.basePackage;
22

    
23
@Configuration
24
@EnableSwagger2
25
public class SwaggerConfig {
26

    
27
	private static final Log log = LogFactory.getLog(SwaggerConfig.class);
28

    
29
	public static String V1 = "1.0.0";
30

    
31
	@Autowired
32
	private OpenaireExporterConfig config;
33

    
34
    @Bean
35
    public Docket dsm() {
36
        return _docket(
37
        		"Datasource Manager",
38
		        DsmApiController.class.getPackage().getName(),
39
		        config.getSwaggerDsm(),
40
		        V1);
41
    }
42

    
43
	@Bean
44
	public Docket projects() {
45
		return _docket(
46
				"OpenAIRE Projects",
47
				ProjectsController.class.getPackage().getName(),
48
				config.getSwaggerProjects(),
49
				V1);
50
	}
51

    
52
	@Bean
53
	public Docket funders() {
54
		return _docket(
55
				"OpenAIRE Funders",
56
				FundersApiController.class.getPackage().getName(),
57
				config.getSwaggerFunders(),
58
				V1);
59
	}
60

    
61
	@Bean
62
	public Docket communities() {
63
		return _docket(
64
				"OpenAIRE Communities",
65
				CommunityApiController.class.getPackage().getName(),
66
				config.getSwaggerCommunities(),
67
				V1);
68
	}
69

    
70
	@Bean
71
	public Docket contexts() {
72
		return _docket(
73
				"OpenAIRE Contexts",
74
				ContextApiController.class.getPackage().getName(),
75
				config.getSwaggerCommunities(),
76
				V1);
77
	}
78

    
79
	private Docket _docket(final String groupName, final String controllerPackage, final Swagger swag, final String version) {
80
		return new Docket(DocumentationType.SWAGGER_2)
81
				.groupName(groupName)
82
				.select()
83
				.apis(basePackage(controllerPackage))
84
				.build()
85
				.directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class)
86
				.directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class)
87
				.apiInfo(apiInfo(swag, version));
88
	}
89

    
90
	private ApiInfo apiInfo(final Swagger swag, final String version) {
91
		return new ApiInfoBuilder()
92
				.title(swag.getApiTitle())
93
				.description(swag.getApiDescription())
94
				.license(swag.getApiLicense())
95
				.licenseUrl(swag.getApiLicenseUrl())
96
				.termsOfServiceUrl("")
97
				.version(version)
98
				.contact(new Contact(
99
						swag.getApiContactName(),
100
						swag.getApiContactUrl(),
101
						swag.getApiContactEmail()))
102
				.build();
103
	}
104

    
105
}
(5-5/5)