This repository has been archived by the owner on Oct 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/master'
- Loading branch information
Showing
19 changed files
with
410 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,48 @@ | ||
plugins { | ||
id 'groovy' | ||
id 'org.springframework.boot' version '3.0.0' | ||
id 'io.spring.dependency-management' version '1.1.0' | ||
id 'groovy' | ||
id 'org.springframework.boot' version '3.0.0' | ||
id 'io.spring.dependency-management' version '1.1.0' | ||
} | ||
|
||
group = 'org.dothem' | ||
version = '0.0.1' | ||
sourceCompatibility = '17' | ||
|
||
configurations { | ||
compileOnly { | ||
extendsFrom annotationProcessor | ||
} | ||
compileOnly { | ||
extendsFrom annotationProcessor | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
mavenCentral() | ||
} | ||
|
||
ext { | ||
set('springBootAdminVersion', "3.0.0-M4") | ||
set('springCloudVersion', "2022.0.0") | ||
set('springBootAdminVersion', "3.0.0-M4") | ||
set('springCloudVersion', "2022.0.0") | ||
} | ||
|
||
dependencies { | ||
implementation 'org.springframework.boot:spring-boot-starter-actuator' | ||
implementation 'org.springframework.boot:spring-boot-starter-webflux' | ||
implementation 'com.playtika.reactivefeign:feign-reactor-spring-cloud-starter:3.2.6' | ||
implementation 'de.codecentric:spring-boot-admin-starter-server' | ||
implementation 'org.apache.groovy:groovy' | ||
implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer' | ||
compileOnly 'org.projectlombok:lombok' | ||
developmentOnly 'org.springframework.boot:spring-boot-devtools' | ||
annotationProcessor 'org.projectlombok:lombok' | ||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
testImplementation 'io.projectreactor:reactor-test' | ||
implementation 'org.springframework.boot:spring-boot-starter-actuator' | ||
implementation 'org.springframework.boot:spring-boot-starter-webflux' | ||
implementation 'de.codecentric:spring-boot-admin-starter-server' | ||
implementation 'org.apache.groovy:groovy' | ||
implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer' | ||
compileOnly 'org.projectlombok:lombok' | ||
developmentOnly 'org.springframework.boot:spring-boot-devtools' | ||
annotationProcessor 'org.projectlombok:lombok' | ||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
testImplementation 'io.projectreactor:reactor-test' | ||
} | ||
|
||
dependencyManagement { | ||
imports { | ||
mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}" | ||
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" | ||
} | ||
imports { | ||
mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}" | ||
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" | ||
} | ||
} | ||
|
||
tasks.named('test') { | ||
useJUnitPlatform() | ||
useJUnitPlatform() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
version: '3.8' | ||
services: | ||
backlog-api: | ||
restart: unless-stopped | ||
environment: | ||
- LOG_LEVEL=INFO | ||
- GITHUB_TOKEN | ||
- TODOIST_TOKEN | ||
build: | ||
context: . | ||
dockerfile: Dockerfile | ||
image: dothem-backlog:latest | ||
ports: | ||
- "8080:8080" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
74 changes: 74 additions & 0 deletions
74
src/main/groovy/org/dothem/backlog/api/BacklogApiController.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package org.dothem.backlog.api | ||
|
||
import org.dothem.backlog.github.CreateGithubIssueRq | ||
import org.dothem.backlog.github.GitHub | ||
import org.dothem.backlog.todoist.CreateTodoistTaskRq | ||
import org.dothem.backlog.todoist.Todoist | ||
import org.dothem.backlog.todoist.TodoistProjectRs | ||
import org.dothem.backlog.todoist.TodoistSectionRs | ||
import org.springframework.beans.factory.annotation.Autowired | ||
import org.springframework.http.HttpStatus | ||
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.RequestBody | ||
import org.springframework.web.bind.annotation.RequestMapping | ||
import org.springframework.web.bind.annotation.ResponseStatus | ||
import org.springframework.web.bind.annotation.RestController | ||
import reactor.core.publisher.Flux | ||
import reactor.core.publisher.Mono | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@RestController | ||
@RequestMapping("/api/v1/backlog") | ||
class BacklogApiController { | ||
|
||
@Autowired | ||
private Todoist todoist | ||
@Autowired | ||
private GitHub gh | ||
|
||
@ResponseStatus(HttpStatus.OK) | ||
@GetMapping("/todoist/projects") | ||
Flux<TodoistProjectRs> projects() { | ||
this.todoist.projects() | ||
} | ||
|
||
@ResponseStatus(HttpStatus.OK) | ||
@GetMapping("/todoist/projects/{id}/sections") | ||
Flux<TodoistSectionRs> sections(@PathVariable String id) { | ||
this.todoist.sections(id) | ||
} | ||
|
||
@ResponseStatus(HttpStatus.CREATED) | ||
@PostMapping | ||
Flux<CreateTaskRs> createTask(@RequestBody CreateTaskRq request) { | ||
this.gh.createIssue( | ||
new CreateGithubIssueRq( | ||
owner: request.owner, | ||
repo: request.repo, | ||
title: request.title, | ||
body: request.body, | ||
labels: request.labels | ||
) | ||
).zipWith( | ||
this.todoist.createTask( | ||
new CreateTodoistTaskRq( | ||
content: request.title, | ||
description: request.body, | ||
projectId: request.projectId, | ||
sectionId: request.sectionId, | ||
priority: request.priority, | ||
lang: request.lang, | ||
due: request.due, | ||
labels: request.labels | ||
) | ||
) | ||
).flatMap(responses -> | ||
Mono.just(new CreateTaskRs(github: responses.t1.url, todoist: responses.t2.url)) | ||
) | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
src/main/groovy/org/dothem/backlog/api/CreateTaskRq.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package org.dothem.backlog.api | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@JsonInclude(JsonInclude.Include.NON_NULL) | ||
class CreateTaskRq { | ||
|
||
String owner | ||
String repo | ||
String projectId | ||
String sectionId | ||
String title | ||
String body | ||
Integer priority | ||
String due | ||
String lang | ||
String[] labels | ||
} |
14 changes: 14 additions & 0 deletions
14
src/main/groovy/org/dothem/backlog/api/CreateTaskRs.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package org.dothem.backlog.api | ||
|
||
import groovy.transform.TupleConstructor | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@TupleConstructor | ||
class CreateTaskRs { | ||
|
||
String github | ||
String todoist | ||
} |
18 changes: 18 additions & 0 deletions
18
src/main/groovy/org/dothem/backlog/api/WebClientConfig.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package org.dothem.backlog.api | ||
|
||
import org.springframework.context.annotation.Bean | ||
import org.springframework.context.annotation.Configuration | ||
import org.springframework.web.reactive.function.client.WebClient | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@Configuration | ||
class WebClientConfig { | ||
|
||
@Bean | ||
WebClient web() { | ||
WebClient.create() | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
src/main/groovy/org/dothem/backlog/api/handler/BacklogApiExceptionHandler.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package org.dothem.backlog.api.handler | ||
|
||
import org.springframework.http.HttpStatus | ||
import org.springframework.web.bind.annotation.ExceptionHandler | ||
import org.springframework.web.bind.annotation.ResponseStatus | ||
import org.springframework.web.bind.annotation.RestControllerAdvice | ||
import org.springframework.web.server.ResponseStatusException | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@RestControllerAdvice | ||
class BacklogApiExceptionHandler { | ||
|
||
@ResponseStatus(HttpStatus.NOT_FOUND) | ||
@ExceptionHandler(ResponseStatusException) | ||
ResponseError handle(ResponseStatusException e) { | ||
new ResponseError(message: e.message, code: 404) | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
src/main/groovy/org/dothem/backlog/api/handler/ResponseError.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package org.dothem.backlog.api.handler | ||
|
||
import groovy.transform.TupleConstructor | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@TupleConstructor | ||
class ResponseError { | ||
|
||
String message | ||
Integer code | ||
} |
13 changes: 13 additions & 0 deletions
13
src/main/groovy/org/dothem/backlog/github/CreateGitHubIssueRs.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.dothem.backlog.github | ||
|
||
import com.fasterxml.jackson.annotation.JsonProperty | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
class CreateGitHubIssueRs { | ||
|
||
@JsonProperty("html_url") | ||
String url | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/groovy/org/dothem/backlog/github/CreateGithubIssueRq.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.dothem.backlog.github | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude | ||
import groovy.transform.TupleConstructor | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@TupleConstructor | ||
@JsonInclude(JsonInclude.Include.NON_NULL) | ||
class CreateGithubIssueRq { | ||
|
||
String owner | ||
String repo | ||
String title | ||
String body | ||
String[] labels | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package org.dothem.backlog.github | ||
|
||
import org.springframework.beans.factory.annotation.Autowired | ||
import org.springframework.beans.factory.annotation.Value | ||
import org.springframework.stereotype.Component | ||
import org.springframework.web.reactive.function.client.WebClient | ||
import reactor.core.publisher.Flux | ||
import reactor.core.publisher.Mono | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@Component | ||
class GitHub { | ||
|
||
@Value('${backlog.github.token}') | ||
private String token | ||
@Value('${backlog.github.api-version}') | ||
private String version | ||
@Autowired | ||
private WebClient web | ||
|
||
Flux<CreateGitHubIssueRs> createIssue(CreateGithubIssueRq request) { | ||
this.web.post() | ||
.uri("https://api.github.com/repos/${request.owner}/${request.repo}/issues") | ||
.header("Authorization", "Bearer ${this.token}") | ||
.header("GitHub-Api-Version", "application/vnd.github+json") | ||
.header("Accept", this.version) | ||
.body(Mono.just(request), CreateGithubIssueRq) | ||
.retrieve() | ||
.bodyToFlux(CreateGitHubIssueRs) | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/main/groovy/org/dothem/backlog/todoist/CreateTodoistTaskRq.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.dothem.backlog.todoist | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude | ||
import com.fasterxml.jackson.annotation.JsonProperty | ||
import groovy.transform.TupleConstructor | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
@TupleConstructor | ||
@JsonInclude(JsonInclude.Include.NON_NULL) | ||
class CreateTodoistTaskRq { | ||
|
||
String content | ||
String description | ||
@JsonProperty("project_id") | ||
String projectId | ||
@JsonProperty("section_id") | ||
String sectionId | ||
String priority | ||
@JsonProperty("due_date") | ||
String due | ||
@JsonProperty("due_lang") | ||
String lang | ||
String[] labels | ||
} |
10 changes: 10 additions & 0 deletions
10
src/main/groovy/org/dothem/backlog/todoist/CreateTodoistTaskRs.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package org.dothem.backlog.todoist | ||
|
||
/** | ||
* @author Aliaksei Bialiauski (abialiauski@solvd.com) | ||
* @since 1.0 | ||
*/ | ||
class CreateTodoistTaskRs { | ||
|
||
String url | ||
} |
Oops, something went wrong.