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.dsm.DsmApiController;
6
import eu.dnetlib.openaire.funders.FundersApiController;
7
import eu.dnetlib.openaire.project.ProjectsController;
8
import org.apache.commons.logging.Log;
9
import org.apache.commons.logging.LogFactory;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.context.annotation.Bean;
12
import org.springframework.context.annotation.Configuration;
13
import springfox.documentation.builders.ApiInfoBuilder;
14
import springfox.documentation.service.ApiInfo;
15
import springfox.documentation.service.Contact;
16
import springfox.documentation.spi.DocumentationType;
17
import springfox.documentation.spring.web.plugins.Docket;
18
import springfox.documentation.swagger2.annotations.EnableSwagger2;
19

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

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

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

    
28
	public static String V1 = "1.0.0";
29

    
30
	@Autowired
31
	private OpenaireExporterConfig config;
32

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

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

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

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

    
69
	private Docket _docket(final String groupName, final String controllerPackage, final Swagger swag, final String version) {
70
		return new Docket(DocumentationType.SWAGGER_2)
71
				.groupName(groupName)
72
				.select()
73
				.apis(basePackage(controllerPackage))
74
				.build()
75
				.directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class)
76
				.directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class)
77
				.apiInfo(apiInfo(swag, version));
78
	}
79

    
80
	private ApiInfo apiInfo(final Swagger swag, final String version) {
81
		return new ApiInfoBuilder()
82
				.title(swag.getApiTitle())
83
				.description(swag.getApiDescription())
84
				.license(swag.getApiLicense())
85
				.licenseUrl(swag.getApiLicenseUrl())
86
				.termsOfServiceUrl("")
87
				.version(version)
88
				.contact(new Contact(
89
						swag.getApiContactName(),
90
						swag.getApiContactUrl(),
91
						swag.getApiContactEmail()))
92
				.build();
93
	}
94

    
95
}
(5-5/5)