Skip to content

Commit

Permalink
#119 Created base controllers for native API
Browse files Browse the repository at this point in the history
  • Loading branch information
jgrim committed Dec 22, 2023
1 parent 8c4aba7 commit 139ae2a
Show file tree
Hide file tree
Showing 10 changed files with 450 additions and 7 deletions.
24 changes: 21 additions & 3 deletions src/main/java/com/sublinks/sublinksapi/SublinksApiApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public static void main(String[] args) {

@Bean
public OpenAPI customOpenAPI() {

return new OpenAPI()
.components(new Components()
.addSecuritySchemes("bearerAuth",
Expand All @@ -41,9 +42,9 @@ public OpenAPI customOpenAPI() {
}

@Bean
public GroupedOpenApi v3OpenApi(@Value("${springdoc.version}") String appVersion,
@Value("${springdoc.pathsToMatch}") String pathsToMatch,
public GroupedOpenApi v3LemmyApi(@Value("${springdoc.version}") String appVersion,
@Value("#{${springdoc.servers}}") List<String> servers) {

return GroupedOpenApi.builder().group("v3")
.addOperationCustomizer((operation, handlerMethod) -> {
operation.addSecurityItem(new SecurityRequirement().addList("bearerAuth"));
Expand All @@ -53,7 +54,24 @@ public GroupedOpenApi v3OpenApi(@Value("${springdoc.version}") String appVersion
.title("Lemmy OpenAPI Documentation")
.version(appVersion))
.servers(servers.stream().map(s -> new Server().url(s)).toList()))
.pathsToMatch(pathsToMatch)
.pathsToMatch("/api/v3/**")
.build();
}

@Bean
public GroupedOpenApi v1SublinksApi(@Value("${springdoc.version}") String appVersion,
@Value("#{${springdoc.servers}}") List<String> servers) {

return GroupedOpenApi.builder().group("v1")
.addOperationCustomizer((operation, handlerMethod) -> {
operation.addSecurityItem(new SecurityRequirement().addList("bearerAuth"));
return operation;
})
.addOpenApiCustomizer(openApi -> openApi.info(new Info()
.title("OpenAPI Documentation")
.version(appVersion))
.servers(servers.stream().map(s -> new Server().url(s)).toList()))
.pathsToMatch("/api/v1/**")
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.sublinks.sublinksapi.api.sublinks.v1.annoucement.controllers;

import com.sublinks.sublinksapi.api.sublinks.v1.common.controllers.AbstractSublinksApiController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("api/v1/announcement")
@Tag(name = "Announcement", description = "Announcement API")
public class AnnouncementController extends AbstractSublinksApiController {

@Operation(summary = "Get a list of announcements")
@GetMapping
@ApiResponses(value = {
// TODO: add responses
})
public void index() {
// TODO: implement
}

@Operation(summary = "Get a specific announcement")
@GetMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void show(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Create a new announcement")
@PostMapping
@ApiResponses(value = {
// TODO: add responses
})
public void create() {
// TODO: implement
}

@Operation(summary = "Update an announcement")
@PostMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void update(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Delete an announcement")
@DeleteMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void delete(@PathVariable String id) {
// TODO: implement
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.sublinks.sublinksapi.api.sublinks.v1.comment.controllers;

import com.sublinks.sublinksapi.api.sublinks.v1.common.controllers.AbstractSublinksApiController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("api/v1/comment")
@Tag(name = "Comment", description = "Comment API")
public class CommentController extends AbstractSublinksApiController {
@Operation(summary = "Get a list of comments")
@GetMapping
@ApiResponses(value = {
// TODO: add responses
})
public void index() {
// TODO: implement
}

@Operation(summary = "Get a specific comment")
@GetMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void show(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Create a new comment")
@PostMapping
@ApiResponses(value = {
// TODO: add responses
})
public void create() {
// TODO: implement
}

@Operation(summary = "Update an comment")
@PostMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void update(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Delete an comment")
@DeleteMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void delete(@PathVariable String id) {
// TODO: implement
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sublinks.sublinksapi.api.sublinks.v1.common.controllers;

public abstract class AbstractSublinksApiController {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.sublinks.sublinksapi.api.sublinks.v1.community.controllers;

import com.sublinks.sublinksapi.api.sublinks.v1.common.controllers.AbstractSublinksApiController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("api/v1/community")
@Tag(name = "Community", description = "Community API")
public class CommunityController extends AbstractSublinksApiController {
@Operation(summary = "Get a list of communities")
@GetMapping
@ApiResponses(value = {
// TODO: add responses
})
public void index() {
// TODO: implement
}

@Operation(summary = "Get a specific community")
@GetMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void show(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Create a new community")
@PostMapping
@ApiResponses(value = {
// TODO: add responses
})
public void create() {
// TODO: implement
}

@Operation(summary = "Update an community")
@PostMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void update(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Delete an community")
@DeleteMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void delete(@PathVariable String id) {
// TODO: implement
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.sublinks.sublinksapi.api.sublinks.v1.instance.controllers;

import com.sublinks.sublinksapi.api.sublinks.v1.common.controllers.AbstractSublinksApiController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("api/v1/instance")
@Tag(name = "Instance", description = "Instance API")
public class InstanceController extends AbstractSublinksApiController {
@Operation(summary = "Get a list of instances")
@GetMapping
@ApiResponses(value = {
// TODO: add responses
})
public void index() {
// TODO: implement
}

@Operation(summary = "Get a specific instance")
@GetMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void show(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Create a new instance")
@PostMapping
@ApiResponses(value = {
// TODO: add responses
})
public void create() {
// TODO: implement
}

@Operation(summary = "Update an instance")
@PostMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void update(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Delete an instance")
@DeleteMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void delete(@PathVariable String id) {
// TODO: implement
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.sublinks.sublinksapi.api.sublinks.v1.person.controllers;

import com.sublinks.sublinksapi.api.sublinks.v1.common.controllers.AbstractSublinksApiController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("api/v1/person")
@Tag(name = "Person", description = "Person API")
public class PersonController extends AbstractSublinksApiController {
@Operation(summary = "Get a list of persons")
@GetMapping
@ApiResponses(value = {
// TODO: add responses
})
public void index() {
// TODO: implement
}

@Operation(summary = "Get a specific person")
@GetMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void show(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Create a new person")
@PostMapping
@ApiResponses(value = {
// TODO: add responses
})
public void create() {
// TODO: implement
}

@Operation(summary = "Update an person")
@PostMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void update(@PathVariable String id) {
// TODO: implement
}

@Operation(summary = "Delete an person")
@DeleteMapping("/{id}")
@ApiResponses(value = {
// TODO: add responses
})
public void delete(@PathVariable String id) {
// TODO: implement
}
}
Loading

0 comments on commit 139ae2a

Please sign in to comment.