From 2b59c181e5b3cd36cd82a100b5669628a731970f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Wo=C5=BAniak?= Date: Fri, 30 Oct 2020 16:42:57 +0100 Subject: [PATCH 1/9] Refactor part 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit {{url}}/api/v1/courses/getCourses => {{url}}/api/v1/courses/all {{url}}/api/v1/groups/getCourseGroups?id=13 => {{url}}/api/v1/groups/course/13 {{url}}/api/v1/courses/getCoursesWithGroups => {{url}}/api/v1/courses/all?groups=true {{url}}/api/v1/commisions/add => {{url}}/api/v1/commisions/user {{url}}/api/v1/commisions/getAllCommisions => {{url}}/api/v1/commisions/user {{url}}/api/v1/assignments/getCurrentAssignments =>{{url}}/api/v1/assignments/user {{url}}/api/v1/users/searchForStudents => {{url}}/api/v1/users/search Signed-off-by: Marcin Woźniak --- .../controllers/AssignmentsController.java | 2 +- .../controllers/CommisionController.java | 4 ++-- .../controllers/CoursesController.java | 21 ++++++++----------- .../controllers/GroupController.java | 7 +++++-- .../controllers/UsersController.java | 2 +- .../security/WebSecurityConfig.java | 4 ++-- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java index 1ff8570..2158118 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java @@ -32,7 +32,7 @@ public class AssignmentsController extends TokenBasedController { @Autowired private AssignmentService assignmentService; - @GetMapping("/getCurrentAssignments") + @GetMapping("/user") public ResponseEntity> getCurrentAssignments() throws Exception { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException("User not found")); Optional com = this.commisionService.getNewestCommision(user); diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index ea7d2aa..f3b88fa 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -42,7 +42,7 @@ public class CommisionController extends TokenBasedController { public CommisionController() { } - @PostMapping("/add") + @PostMapping("/user") public ResponseEntity addCommision(@RequestBody List groups) throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); @@ -58,7 +58,7 @@ public class CommisionController extends TokenBasedController { return new ResponseEntity<>("Succes", HttpStatus.OK); } - @GetMapping("/getAllCommisions") + @GetMapping("/user") public ResponseEntity> getAlCommisions() throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); List result = CommisionResponseMappers diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java index 204fbc3..03db837 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import com.plannaplan.responses.models.abstracts.CoursesResponse; @RestController @CrossOrigin @@ -24,20 +26,15 @@ public class CoursesController { @Autowired private CourseService courseService; - @GetMapping("/getCourses") - public ResponseEntity> getMethodName() { + @GetMapping("/all") + public ResponseEntity> getMethodName(@RequestParam(name = "groups", defaultValue = "false") Boolean groups) { List courses = this.courseService.getAllCourses(); - List response = CoursesResponseMappers.mapToGetCoursesResponse(courses); - return new ResponseEntity<>(response, HttpStatus.OK); - } - - @GetMapping("/getCoursesWithGroups") - public ResponseEntity> getCoursesWithGroups() { - final List courses = this.courseService.getAllCourses(); - final List response = CoursesResponseMappers + if (groups) { + final List response = CoursesResponseMappers .mapToGetCoursesWithGroupsResponse(courses); + return new ResponseEntity<>(response, HttpStatus.OK); + } + final List response = CoursesResponseMappers.mapToGetCoursesResponse(courses); return new ResponseEntity<>(response, HttpStatus.OK); - } - } \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 90cbdda..0d795ff 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -14,19 +14,22 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @CrossOrigin + @RequestMapping("/api/" + App.API_VERSION + "/groups") public class GroupController { @Autowired private GroupService groupService; - @GetMapping("/getCourseGroups") - public ResponseEntity> getCourses(@RequestParam("id") Long id, + @GetMapping("/course/{id}") + + public ResponseEntity> getCourses(@PathVariable(name = "id") Long id, @RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) { List groups = this.groupService.getGroupsByCourse(id); if (capacity) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java index d4a4ae1..ebfa06e 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java @@ -27,7 +27,7 @@ public class UsersController { @Autowired private UserService userService; - @GetMapping("/searchForStudents") + @GetMapping("/search") @PreAuthorize("hasRole('ROLE_DEANERY')") public ResponseEntity> configApp(@RequestParam("query") String query) { diff --git a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java index 95b3785..4993630 100755 --- a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java +++ b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java @@ -36,8 +36,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(final WebSecurity webSecurity) { - webSecurity.ignoring().antMatchers("/token**").antMatchers("/api/v1/courses/getCourses") - .antMatchers("/api/v1/groups/getCourseGroups").antMatchers("/api/v1/courses/getCoursesWithGroups"); + webSecurity.ignoring().antMatchers("/token**").antMatchers("/api/v1/courses/all") + .antMatchers("/api/v1/groups/course/{id}"); } @Override From 1571bccb499881f37368479eda74735bfe53d15d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Wo=C5=BAniak?= Date: Fri, 30 Oct 2020 17:22:40 +0100 Subject: [PATCH 2/9] Changed api links in the Tests --- restservice/src/main/java/com/plannaplan/App.java | 2 +- .../plannaplan/controllers/AssignmentsControllerTest.java | 2 +- .../com/plannaplan/controllers/CommisionControllerTest.java | 4 ++-- .../com/plannaplan/controllers/CoursesControllerTest.java | 4 ++-- .../com/plannaplan/controllers/GroupControllerTest.java | 6 +++--- .../com/plannaplan/controllers/UsersControllerTest.java | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/App.java b/restservice/src/main/java/com/plannaplan/App.java index 6e91104..0a789c9 100755 --- a/restservice/src/main/java/com/plannaplan/App.java +++ b/restservice/src/main/java/com/plannaplan/App.java @@ -53,7 +53,7 @@ public class App { mar.setEmail("marwoz16@st.amu.edu.pl"); mar.setName("Marcin"); mar.setSurname("Woźniak"); - mar.setRole(UserRoles.STUDENT); + mar.setRole(UserRoles.ADMIN); this.userService.save(mar); } diff --git a/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java index 5e7e578..1af3781 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/AssignmentsControllerTest.java @@ -23,7 +23,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ContextConfiguration public class AssignmentsControllerTest { - private static final String ASSIGFNMENTS_ENDPOINT = "/api/v1/assignments/getCurrentAssignments"; + private static final String ASSIGFNMENTS_ENDPOINT = "/api/v1/assignments/user"; private static final String TEST_MAIL = "notexistingassignmentuser@mail.domain"; @Autowired diff --git a/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java index bf371d7..a4a1ba9 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java @@ -36,8 +36,8 @@ public class CommisionControllerTest { private static User user; - private static final String ADD_COMMISION_ENDPOINT = "/api/v1/commisions/add"; - private static final String GET_COMMISIONS_ENDPOINT = "/api/v1/commisions/getAllCommisions"; + private static final String ADD_COMMISION_ENDPOINT = "/api/v1/commisions/user"; + private static final String GET_COMMISIONS_ENDPOINT = "/api/v1/commisions/user"; private static final String TEST_COMMISIONS_EMAIL = "commisions@notexisting.domain"; private static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); diff --git a/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java index 67af08f..3fa70f3 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/CoursesControllerTest.java @@ -18,8 +18,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ContextConfiguration public class CoursesControllerTest { - private static final String COURSES_ENDPOINT = "/api/v1/courses/getCourses"; - private static final String COURSESGROUPS_ENDPOINT = "/api/v1/courses/getCoursesWithGroups"; + private static final String COURSES_ENDPOINT = "/api/v1/courses/all"; + private static final String COURSESGROUPS_ENDPOINT = "/api/v1/courses/all?groups=true"; @Autowired private WebApplicationContext webApplicationContext; diff --git a/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java index 4698bdc..fef8682 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/GroupControllerTest.java @@ -17,7 +17,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest @ContextConfiguration public class GroupControllerTest { - private static final String GROUPS_BY_COURSE_ENDPOINT = "/api/v1/groups/getCourseGroups"; + private static final String GROUPS_BY_COURSE_ENDPOINT = "/api/v1/groups/course"; @Autowired private WebApplicationContext webApplicationContext; @@ -25,12 +25,12 @@ public class GroupControllerTest { @Test public void shouldFailWithNoParaeter() throws Exception { MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); - mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT)).andExpect(status().isBadRequest()); + mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT)).andExpect(status().isNotFound()); } @Test public void shouldReturnGroupsOk() throws Exception { MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); - mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT).param("id", "2")).andExpect(status().isOk()); + mockMvc.perform(get(GROUPS_BY_COURSE_ENDPOINT + "/2" )).andExpect(status().isOk()); } } diff --git a/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java index b55850d..d5eee16 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java @@ -22,7 +22,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest @ContextConfiguration public class UsersControllerTest { - private static final String ENDPOINT = "/api/v1/users/searchForStudents"; + private static final String ENDPOINT = "/api/v1/users/search"; @Autowired private WebApplicationContext webApplicationContext; From 1a30ac33743a426b85810423d53d1fdc183cf44f Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 15:06:24 +0100 Subject: [PATCH 3/9] Works json endpoint ui dont --- buisnesslogic/pom.xml | 4 ++-- restservice/pom.xml | 21 +++++++++++++++++-- .../src/main/java/com/plannaplan/App.java | 9 ++++++++ .../security/WebSecurityConfig.java | 5 ++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/buisnesslogic/pom.xml b/buisnesslogic/pom.xml index 73b3b1d..2c6b9cb 100755 --- a/buisnesslogic/pom.xml +++ b/buisnesslogic/pom.xml @@ -16,8 +16,8 @@ UTF-8 - 1.14 - 1.14 + 14 + 14 diff --git a/restservice/pom.xml b/restservice/pom.xml index 68b7c09..60714c1 100755 --- a/restservice/pom.xml +++ b/restservice/pom.xml @@ -18,9 +18,10 @@ UTF-8 - 1.14 - 1.14 + 14 + 14 com.plannaplan.App + 2.9.2 @@ -85,6 +86,22 @@ com.plannaplan 1.0-SNAPSHOT + + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + diff --git a/restservice/src/main/java/com/plannaplan/App.java b/restservice/src/main/java/com/plannaplan/App.java index 0a789c9..a929f6d 100755 --- a/restservice/src/main/java/com/plannaplan/App.java +++ b/restservice/src/main/java/com/plannaplan/App.java @@ -8,9 +8,18 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.annotation.Configuration; import org.springframework.context.event.EventListener; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import org.springframework.web.servlet.DispatcherServlet; @SpringBootApplication +@Configuration +@EnableSwagger2 +@EnableWebMvc public class App { public final static String API_VERSION = "v1"; diff --git a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java index 4993630..6fb5b50 100755 --- a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java +++ b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java @@ -12,12 +12,14 @@ import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.security.web.util.matcher.RequestMatcher; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.http.HttpStatus; import org.springframework.security.web.authentication.AnonymousAuthenticationFilter; import org.springframework.security.web.authentication.HttpStatusEntryPoint; @Configuration @EnableWebSecurity + public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private static final RequestMatcher PROTECTED_URLS = new OrRequestMatcher(new AntPathRequestMatcher("/api/**")); @@ -37,7 +39,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(final WebSecurity webSecurity) { webSecurity.ignoring().antMatchers("/token**").antMatchers("/api/v1/courses/all") - .antMatchers("/api/v1/groups/course/{id}"); + .antMatchers("/api/v1/groups/course/{id}").antMatchers("/v2/api-docs", "/configuration/ui", + "/swagger-resources/**", "/configuration/security", "/swagger-ui.html", "/webjars/**"); } @Override From ba26d67cd44e8a38de3c49e44626179a466d3e4a Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 15:09:44 +0100 Subject: [PATCH 4/9] Swagger ui works needs refactor to be done --- .../src/main/java/com/plannaplan/App.java | 10 +---- .../java/com/plannaplan/Swagger2Config.java | 38 +++++++++++++++++++ .../security/WebSecurityConfig.java | 1 - 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100755 restservice/src/main/java/com/plannaplan/Swagger2Config.java diff --git a/restservice/src/main/java/com/plannaplan/App.java b/restservice/src/main/java/com/plannaplan/App.java index a929f6d..d5b08eb 100755 --- a/restservice/src/main/java/com/plannaplan/App.java +++ b/restservice/src/main/java/com/plannaplan/App.java @@ -8,18 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.annotation.Configuration; + import org.springframework.context.event.EventListener; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; - -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import org.springframework.web.servlet.DispatcherServlet; @SpringBootApplication -@Configuration -@EnableSwagger2 -@EnableWebMvc public class App { public final static String API_VERSION = "v1"; diff --git a/restservice/src/main/java/com/plannaplan/Swagger2Config.java b/restservice/src/main/java/com/plannaplan/Swagger2Config.java new file mode 100755 index 0000000..df6d78c --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/Swagger2Config.java @@ -0,0 +1,38 @@ +package com.plannaplan; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class Swagger2Config extends WebMvcConfigurationSupport { + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() + .apis(RequestHandlerSelectors.basePackage("com.plannaplan.controllers")).paths(PathSelectors.any()) + .build(); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder().title("xxxxx").description("Swagger2 builds RESTful APIs") + .termsOfServiceUrl("http://www.baidu.com/") + // .contact("") + .version("1.0").build(); + } +} \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java index 6fb5b50..d41b9f6 100755 --- a/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java +++ b/restservice/src/main/java/com/plannaplan/security/WebSecurityConfig.java @@ -12,7 +12,6 @@ import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.security.web.util.matcher.RequestMatcher; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.http.HttpStatus; import org.springframework.security.web.authentication.AnonymousAuthenticationFilter; import org.springframework.security.web.authentication.HttpStatusEntryPoint; From b308373062c496e624040290cd77ab12ec8fbaab Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 16:40:02 +0100 Subject: [PATCH 5/9] Added controllers description --- .../src/main/java/com/plannaplan/Swagger2Config.java | 4 ++-- .../plannaplan/controllers/AssignmentsController.java | 4 ++++ .../plannaplan/controllers/CommisionController.java | 4 ++++ .../com/plannaplan/controllers/ConfigController.java | 3 +++ .../com/plannaplan/controllers/CoursesController.java | 10 ++++++++-- .../com/plannaplan/controllers/GroupController.java | 9 +++++++-- .../com/plannaplan/controllers/TokenController.java | 3 +++ .../com/plannaplan/controllers/UsersController.java | 4 ++++ 8 files changed, 35 insertions(+), 6 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/Swagger2Config.java b/restservice/src/main/java/com/plannaplan/Swagger2Config.java index df6d78c..5ccbe90 100755 --- a/restservice/src/main/java/com/plannaplan/Swagger2Config.java +++ b/restservice/src/main/java/com/plannaplan/Swagger2Config.java @@ -30,8 +30,8 @@ public class Swagger2Config extends WebMvcConfigurationSupport { } private ApiInfo apiInfo() { - return new ApiInfoBuilder().title("xxxxx").description("Swagger2 builds RESTful APIs") - .termsOfServiceUrl("http://www.baidu.com/") + return new ApiInfoBuilder().title("plannaplan").description("Aplikacja do zapisów na zajęcia UAM.") + .termsOfServiceUrl("https://plannaplan.pl/") // .contact("") .version("1.0").build(); } diff --git a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java index 2158118..3ca9f2e 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java @@ -4,6 +4,8 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.Api; + import java.util.List; import java.util.Optional; @@ -24,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/assignments") +@Api(tags = { + "Assignments" }, value = "Assignments", description = "Assignment is representation of student willing to join given group (lecture or calss)") public class AssignmentsController extends TokenBasedController { @Autowired diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index f3b88fa..9ccd0f5 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -4,6 +4,8 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.Api; + import java.util.List; import com.plannaplan.App; @@ -28,6 +30,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/commisions") +@Api(tags = { + "Commisions" }, value = "Commisions", description = "Commision is representation of student selected assignments at time. All assignments are attached to some commision so we can see current assignments and also browse histroy of changes for given user") public class CommisionController extends TokenBasedController { @Autowired diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index 5d5456b..473c018 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -19,10 +19,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; +import io.swagger.annotations.Api; + @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/configurator") @EnableGlobalMethodSecurity(prePostEnabled = true) +@Api(tags = { "ConfigController" }, value = "ConfigController", description = "All endpoints to configure an app") public class ConfigController { @Autowired diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java index 03db837..d648f61 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -14,6 +14,9 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; + +import io.swagger.annotations.Api; + import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -22,16 +25,19 @@ import com.plannaplan.responses.models.abstracts.CoursesResponse; @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/courses") +@Api(tags = { + "Course" }, value = "Course", description = "Endpoints to deal with courses. All courses can have classes, lectures or both.") public class CoursesController { @Autowired private CourseService courseService; @GetMapping("/all") - public ResponseEntity> getMethodName(@RequestParam(name = "groups", defaultValue = "false") Boolean groups) { + public ResponseEntity> getMethodName( + @RequestParam(name = "groups", defaultValue = "false") Boolean groups) { List courses = this.courseService.getAllCourses(); if (groups) { final List response = CoursesResponseMappers - .mapToGetCoursesWithGroupsResponse(courses); + .mapToGetCoursesWithGroupsResponse(courses); return new ResponseEntity<>(response, HttpStatus.OK); } final List response = CoursesResponseMappers.mapToGetCoursesResponse(courses); diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 0d795ff..1332028 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -19,17 +19,22 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.Api; + @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/groups") +@Api(tags = { + "Group" }, value = "Group", description = "Enpoints to deal with gorups. Group is related directly to course and can be either class and lecture") public class GroupController { @Autowired private GroupService groupService; @GetMapping("/course/{id}") - - public ResponseEntity> getCourses(@PathVariable(name = "id") Long id, + + public ResponseEntity> getCourses( + @PathVariable(name = "id") Long id, @RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) { List groups = this.groupService.getGroupsByCourse(id); if (capacity) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java index 5093783..840dffb 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -13,8 +13,11 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.Api; + @RestController @CrossOrigin +@Api(tags = { "Token" }, value = "Token", description = "Enpoints to get authorization.") public class TokenController { private final static String SERVICE_URL = "http://localhost:3000"; diff --git a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java index ebfa06e..bd5e69a 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java @@ -15,6 +15,9 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; + +import io.swagger.annotations.Api; + import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -23,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestParam; @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/users") @EnableGlobalMethodSecurity(prePostEnabled = true) +@Api(tags = { "Users" }, value = "Users", description = "Endpoints to deal with users.") public class UsersController { @Autowired private UserService userService; From 4818905422003ba2d3588cc140d6ff0bda76d1b9 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 16:58:26 +0100 Subject: [PATCH 6/9] Api operations --- .../java/com/plannaplan/controllers/AssignmentsController.java | 2 ++ .../java/com/plannaplan/controllers/CommisionController.java | 3 +++ .../main/java/com/plannaplan/controllers/ConfigController.java | 3 ++- .../java/com/plannaplan/controllers/CoursesController.java | 2 ++ .../main/java/com/plannaplan/controllers/GroupController.java | 3 ++- .../main/java/com/plannaplan/controllers/TokenController.java | 2 ++ .../main/java/com/plannaplan/controllers/UsersController.java | 3 ++- 7 files changed, 15 insertions(+), 3 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java index 3ca9f2e..8f3a395 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/AssignmentsController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import java.util.List; import java.util.Optional; @@ -37,6 +38,7 @@ public class AssignmentsController extends TokenBasedController { private AssignmentService assignmentService; @GetMapping("/user") + @ApiOperation(value = "Retrun user current assignemts (from newest commision). STUDENT Token needs to be provided.") public ResponseEntity> getCurrentAssignments() throws Exception { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException("User not found")); Optional com = this.commisionService.getNewestCommision(user); diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index 9ccd0f5..4819440 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import java.util.List; @@ -47,6 +48,7 @@ public class CommisionController extends TokenBasedController { } @PostMapping("/user") + @ApiOperation("Create commision with assignents to given groups. If group doesn't exist error will be thrown") public ResponseEntity addCommision(@RequestBody List groups) throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); @@ -63,6 +65,7 @@ public class CommisionController extends TokenBasedController { } @GetMapping("/user") + @ApiOperation("Return list of user all commisions (history of schedules)") public ResponseEntity> getAlCommisions() throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); List result = CommisionResponseMappers diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index 473c018..cb46e85 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; @RestController @CrossOrigin @@ -33,7 +34,7 @@ public class ConfigController { @PostMapping("/config") @PreAuthorize("hasRole('ROLE_ADMIN')") - + @ApiOperation("Imports data to system. To call you need to provide ADMIN token") public ResponseEntity configApp(@RequestParam("file") MultipartFile file) { try { final ConfigData data = new ConfigData(null, null, file.getInputStream()); diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java index d648f61..62c4286 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -32,6 +33,7 @@ public class CoursesController { private CourseService courseService; @GetMapping("/all") + @ApiOperation(value = "Return all courses") public ResponseEntity> getMethodName( @RequestParam(name = "groups", defaultValue = "false") Boolean groups) { List courses = this.courseService.getAllCourses(); diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 1332028..759a7bf 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; @RestController @CrossOrigin @@ -32,7 +33,7 @@ public class GroupController { private GroupService groupService; @GetMapping("/course/{id}") - + @ApiOperation(value = "Return list of lectures and classes (if present) given course") public ResponseEntity> getCourses( @PathVariable(name = "id") Long id, @RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java index 840dffb..b56966e 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; @RestController @CrossOrigin @@ -26,6 +27,7 @@ public class TokenController { private UserService userService; @GetMapping("/token") + @ApiOperation(value = "Endpoint to access token required to call secured endpoints. In order to access token we need to provide access token comming from unviersity CAS system") public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { final CasValidator validator = new CasValidator(SERVICE_URL, ticket); diff --git a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java index bd5e69a..b25671d 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -33,7 +34,7 @@ public class UsersController { @GetMapping("/search") @PreAuthorize("hasRole('ROLE_DEANERY')") - + @ApiOperation(value = "Serch for user by providing query. If query is empty it will return all students. You need token with DEANERY role to call this") public ResponseEntity> configApp(@RequestParam("query") String query) { final List searches = this.userService.searchForStudents(query); final List response = UserResponseMappers.mapToDefaultResponse(searches); From 6a7fc03e7c122716cfa04efba4a29945a6817419 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 17:23:29 +0100 Subject: [PATCH 7/9] Api params --- .../java/com/plannaplan/controllers/CommisionController.java | 5 ++++- .../java/com/plannaplan/controllers/ConfigController.java | 4 +++- .../java/com/plannaplan/controllers/CoursesController.java | 3 ++- .../java/com/plannaplan/controllers/GroupController.java | 5 +++-- .../java/com/plannaplan/controllers/TokenController.java | 4 +++- .../java/com/plannaplan/controllers/UsersController.java | 4 +++- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index 4819440..bcdc56c 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -6,6 +6,7 @@ import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import java.util.List; @@ -49,7 +50,9 @@ public class CommisionController extends TokenBasedController { @PostMapping("/user") @ApiOperation("Create commision with assignents to given groups. If group doesn't exist error will be thrown") - public ResponseEntity addCommision(@RequestBody List groups) throws UserNotFoundException { + public ResponseEntity addCommision( + @RequestBody @ApiParam(value = "List of groups ids user want to assign to. If group doesnt exisit error will be thrown", example = "[12,7,3]") List groups) + throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); Commision com = new Commision(user); diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index cb46e85..58b94e1 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -21,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; @RestController @CrossOrigin @@ -35,7 +36,8 @@ public class ConfigController { @PostMapping("/config") @PreAuthorize("hasRole('ROLE_ADMIN')") @ApiOperation("Imports data to system. To call you need to provide ADMIN token") - public ResponseEntity configApp(@RequestParam("file") MultipartFile file) { + public ResponseEntity configApp( + @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { try { final ConfigData data = new ConfigData(null, null, file.getInputStream()); this.contrl.config(data); diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java index 62c4286..f6ef2c5 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -35,7 +36,7 @@ public class CoursesController { @GetMapping("/all") @ApiOperation(value = "Return all courses") public ResponseEntity> getMethodName( - @RequestParam(name = "groups", defaultValue = "false") Boolean groups) { + @RequestParam(name = "groups", defaultValue = "false") @ApiParam(value = "Boolean if you want to have resopnse with associated groups or without") Boolean groups) { List courses = this.courseService.getAllCourses(); if (groups) { final List response = CoursesResponseMappers diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 759a7bf..0e5dca9 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; @RestController @CrossOrigin @@ -35,8 +36,8 @@ public class GroupController { @GetMapping("/course/{id}") @ApiOperation(value = "Return list of lectures and classes (if present) given course") public ResponseEntity> getCourses( - @PathVariable(name = "id") Long id, - @RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) { + @PathVariable(name = "id") @ApiParam(value = "Id of course") Long id, + @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity) { List groups = this.groupService.getGroupsByCourse(id); if (capacity) { return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK); diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java index b56966e..a66c9f7 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; @RestController @CrossOrigin @@ -28,7 +29,8 @@ public class TokenController { @GetMapping("/token") @ApiOperation(value = "Endpoint to access token required to call secured endpoints. In order to access token we need to provide access token comming from unviersity CAS system") - public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { + public ResponseEntity getToken( + @RequestParam("ticket") @ApiParam(value = "Ticket get from CAS system", example = "ST-1376572-wo41gty5R0JCZFKMMie2-cas.amu.edu.pl") final String ticket) { final CasValidator validator = new CasValidator(SERVICE_URL, ticket); try { diff --git a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java index b25671d..51e27ce 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -35,7 +36,8 @@ public class UsersController { @GetMapping("/search") @PreAuthorize("hasRole('ROLE_DEANERY')") @ApiOperation(value = "Serch for user by providing query. If query is empty it will return all students. You need token with DEANERY role to call this") - public ResponseEntity> configApp(@RequestParam("query") String query) { + public ResponseEntity> configApp( + @RequestParam("query") @ApiParam(value = "Query to filter all students. If empty will match everyone") String query) { final List searches = this.userService.searchForStudents(query); final List response = UserResponseMappers.mapToDefaultResponse(searches); return new ResponseEntity<>(response, HttpStatus.OK); From e0df090a0e612815f3dba63f912f30259eff38e3 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 4 Nov 2020 17:27:20 +0100 Subject: [PATCH 8/9] update docs --- README.md | 4 +++ docs/api.md | 88 ----------------------------------------------------- 2 files changed, 4 insertions(+), 88 deletions(-) delete mode 100755 docs/api.md diff --git a/README.md b/README.md index 88386c8..7001517 100755 --- a/README.md +++ b/README.md @@ -36,6 +36,10 @@ python gettoken.py Na koniec w przęglądarce dostaniesz w odpowiedzi token. W samym pliku można zmienić porty aplikacji jeśli to potrzebne. +## Api docs + +Żeby zobaczyć dokumentację api trzeba wejść w przeglądarce na `http://localhost:1285/swagger-ui.html` po odpaleniu aplikacji. + ## Packaging Zeby spakowac apke do `jara` wystarcza dwie komendy zaczynajac z glownego katalogu projektu diff --git a/docs/api.md b/docs/api.md deleted file mode 100755 index 6556d62..0000000 --- a/docs/api.md +++ /dev/null @@ -1,88 +0,0 @@ -# Dokumetacja API - -| Api | Zadania endpointa | -| ------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| [/api/v1/configurator/config](#config) | Załadowanie konfiguracji startowej do aplikacji PlanNaPlan | -| [/api/v1/courses/getCoursesWithGroups](#getcourseswithgroups) | Zwrócenie wszytskich kursów razem z grupami | -| [/api/v1/groups/getCourseGroups](#getcoursegroups) | Zwrócenie grup dla danego kursu | -| [/api/v1/courses/getCourses](#getcourses) | Zwrócenie wszystkich kursów | -| [/token](#token) | Wymienia ticket z CAS-a na token ktorym beda autoryzowane chronione requesty | - -## config - -Source code: [link](../restservice/src/main/java/com/plannaplan/controllers/ConfigController.java) - -``` -POST /config -``` - -#### Opis - -Endpoint konfigurujacy caly system i importujacy dane do bazy. - -#### Parametry - -| Type | Name | Consumes | Opis | Type | -| ---- | ----------------------- | ------------------- | ------------------------------- | ---- | -| Body | **file**
required | multipart/form-data | Plik .xlsx z potrzebnymi danymi | file | - -## getCoursesWithGroups - -Source code: [link](../restservice/src/main/java/com/plannaplan/controllers/getCoursesWithGroups.java) - -``` -GET /api/v1/courses/getCoursesWithGroups -``` - -#### Opis - -Zwraca wszystkie dostepne kursy wraz z listą grup. - -## getCourseGroups - -Source code: [link](../restservice/src/main/java/com/plannaplan/controllers/GroupController.java) - -``` -GET /api/v1/groups/getCourseGroups -``` - -#### Opis - -Zwraca wszytskie grupy dla danego kursu. - -#### Parametry - -| Type | Name | Consumes | Opis | Type | -| ----------- | --------------------- | -------- | ----------------------------------------- | ---- | -| Query Param | **id**
required | - | id kursu dla ktorego chcemy zwrocic grupy | int | -| Query Param | **capacity**
| - | czy ma zwrocic pole pojemnosci grupy | bool | - -## getCourses - -Source code: [link](../restservice/src/main/java/com/plannaplan/controllers/CoursesController.java) - -``` -GET /api/v1/courses/getCourses -``` - -#### Opis - -Zwraca wszystkie dostepne kursy. - -## token - -Source code: [link](../restservice/src/main/java/com/plannaplan/controllers/TokenController.java) - -``` -GET /token?ticket=ST-668405-W0gfvSVDRBdMUWLweKzv-cas.amu.edu.pl -``` - -#### Opis - -Po odpytaniu tego endpointa z podanym ticketem system zrobi nma nim validate i dostanie uzytkownika dla ktorego zostal on wygenerowany. System utworzy dla niego access token i go zwroci w odpowiedzi - -#### Parametry - -| Type | Name | Consumes | Opis | Type | -| ----------- | ------------------------- | -------- | --------------------------------------- | ------ | -| Query Param | **ticket**
required | - | ticket uzyskany z logowania poprzez CAS | string | From 228969efce3bf5b55c9e6684d2b69c25203ce102 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 5 Nov 2020 14:32:42 +0100 Subject: [PATCH 9/9] Error fix --- .../java/com/plannaplan/controllers/CommisionController.java | 4 ++-- .../main/java/com/plannaplan/controllers/GroupController.java | 2 +- .../main/java/com/plannaplan/controllers/TokenController.java | 2 +- .../main/java/com/plannaplan/controllers/UsersController.java | 2 +- .../java/com/plannaplan/controllers/UsersControllerTest.java | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index bcdc56c..40101f4 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -49,9 +49,9 @@ public class CommisionController extends TokenBasedController { } @PostMapping("/user") - @ApiOperation("Create commision with assignents to given groups. If group doesn't exist error will be thrown") + @ApiOperation(value = "Create commision with assignents to given groups. If group doesn't exist error will be thrown") public ResponseEntity addCommision( - @RequestBody @ApiParam(value = "List of groups ids user want to assign to. If group doesnt exisit error will be thrown", example = "[12,7,3]") List groups) + @RequestBody @ApiParam(value = "List of groups ids user want to assign to. If group doesnt exisit error will be thrown") List groups) throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 0e5dca9..811f43a 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -36,7 +36,7 @@ public class GroupController { @GetMapping("/course/{id}") @ApiOperation(value = "Return list of lectures and classes (if present) given course") public ResponseEntity> getCourses( - @PathVariable(name = "id") @ApiParam(value = "Id of course") Long id, + @PathVariable(name = "id") Long id, @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity) { List groups = this.groupService.getGroupsByCourse(id); if (capacity) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java index a66c9f7..29df59d 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -30,7 +30,7 @@ public class TokenController { @GetMapping("/token") @ApiOperation(value = "Endpoint to access token required to call secured endpoints. In order to access token we need to provide access token comming from unviersity CAS system") public ResponseEntity getToken( - @RequestParam("ticket") @ApiParam(value = "Ticket get from CAS system", example = "ST-1376572-wo41gty5R0JCZFKMMie2-cas.amu.edu.pl") final String ticket) { + @RequestParam("ticket") @ApiParam(value = "Ticket get from CAS system. It should look like ST-1376572-wo41gty5R0JCZFKMMie2-cas.amu.edu.pl") final String ticket) { final CasValidator validator = new CasValidator(SERVICE_URL, ticket); try { diff --git a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java index 51e27ce..4cbe585 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/UsersController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/UsersController.java @@ -33,7 +33,7 @@ public class UsersController { @Autowired private UserService userService; - @GetMapping("/search") + @GetMapping("/student/search") @PreAuthorize("hasRole('ROLE_DEANERY')") @ApiOperation(value = "Serch for user by providing query. If query is empty it will return all students. You need token with DEANERY role to call this") public ResponseEntity> configApp( diff --git a/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java index d5eee16..ce57111 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/UsersControllerTest.java @@ -22,7 +22,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest @ContextConfiguration public class UsersControllerTest { - private static final String ENDPOINT = "/api/v1/users/search"; + private static final String ENDPOINT = "/api/v1/users/student/search"; @Autowired private WebApplicationContext webApplicationContext;