Skip to content

Commit

Permalink
Merge pull request #8 from readme-generator/feature/fixed_requirement
Browse files Browse the repository at this point in the history
TCP 기능 추가에 따른 백엔드 아키텍처 변경
  • Loading branch information
npole0103 authored Oct 17, 2022
2 parents 31191bc + a1d3884 commit d2d6dcb
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 11 deletions.
24 changes: 24 additions & 0 deletions src/main/java/kr/markdown/alreadyme/controller/AiController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package kr.markdown.alreadyme.controller;

import kr.markdown.alreadyme.domain.dto.ReadmeItemDto;
import kr.markdown.alreadyme.domain.model.ReadmeItem;
import kr.markdown.alreadyme.service.AiService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("api/v1/ai")
@CrossOrigin(origins = "*")
@RequiredArgsConstructor
public class AiController {
private final AiService service;

@PutMapping("readme")
@ResponseStatus(HttpStatus.OK)
public ReadmeItem post(@Valid @RequestBody ReadmeItemDto.UpdateReadmeText updateDto) throws Exception {
return service.responseReadmeText(updateDto);
}
}
13 changes: 13 additions & 0 deletions src/main/java/kr/markdown/alreadyme/domain/dto/ReadmeItemDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ class ObjectUrl {
private String objectUrl;
}

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
class UpdateReadmeText {
@NotNull
private Long id;

@NotBlank
private String readmeText;
}

@Getter
@Setter
@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class ReadmeItem {
@NotBlank
private String githubOriginalUrl;

@NotBlank
@Nullable
@Column(columnDefinition = "MEDIUMTEXT")
private String readmeText;

Expand All @@ -36,4 +36,8 @@ public class ReadmeItem {
public void setObjectUrl(String objectUrl) {
this.objectUrl = objectUrl;
}

public void setReadmeText(String readmeText) {
this.readmeText = readmeText;
}
}
28 changes: 23 additions & 5 deletions src/main/java/kr/markdown/alreadyme/service/AiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,40 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import kr.markdown.alreadyme.domain.dto.ReadmeItemDto.UpdateReadmeText;
import kr.markdown.alreadyme.domain.model.ReadmeItem;
import kr.markdown.alreadyme.repository.ReadmeItemRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import java.io.IOException;
import java.util.Optional;

@Service
@RequiredArgsConstructor
@Log4j2
public class AiService {

private final ReadmeItemRepository readmeItemRepository;

@Value("${ai-server.host}")
private String aiServerHost;

public String getReadmeText(String requestJsonData, String githubOriginalUrl) throws IOException {
public void requestReadmeText(Long id, String githubOriginalUrl, String requestJsonData) throws IOException {

//requestJsonData
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode objectNode = objectMapper.createObjectNode();

objectNode.put("requestId", id);
objectNode.put("githubOriginalUrl", githubOriginalUrl);

ObjectNode jsonDataNode = (ObjectNode) new ObjectMapper().readTree(requestJsonData);
Expand All @@ -40,8 +47,19 @@ public String getReadmeText(String requestJsonData, String githubOriginalUrl) th
httpPost.setHeader("Content-type", "application/json");

httpPost.setEntity(new StringEntity(objectNode.toString(), "UTF-8"));
HttpResponse httpResponse = httpClient.execute(httpPost);
httpClient.execute(httpPost);
}

public ReadmeItem responseReadmeText(UpdateReadmeText updateDto) {
ReadmeItem readmeItem = findReadmeItemThrowException(updateDto.getId());
readmeItem.setReadmeText(updateDto.getReadmeText());

return readmeItemRepository.save(readmeItem);
}

return EntityUtils.toString(httpResponse.getEntity());
private ReadmeItem findReadmeItemThrowException(Long id) {
Optional<ReadmeItem> optionalReadmeItem = readmeItemRepository.findById(id);
return optionalReadmeItem.orElseThrow(() -> new ResponseStatusException(
HttpStatus.NOT_FOUND, String.format("ReadmeItem id %d was not found", id)));
}
}
11 changes: 6 additions & 5 deletions src/main/java/kr/markdown/alreadyme/service/AppService.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,18 @@ public ReadmeItem create(Create createDto) throws Exception {
JGitUtil.close(git);
FileUtils.deleteDirectory(new File(git.getRepository().getDirectory().getParentFile().getPath()));;

//Get readmeText by ai-server
String readmeText = aiService.getReadmeText(requestJsonData, gitUrl);

//Create ReadmeItem
ReadmeItem readmeItem = ReadmeItem.builder()
.githubOriginalUrl(gitUrl)
.readmeText(readmeText)
.createdTime(LocalDateTime.now())
.build();
ReadmeItem newReadmeItem = readmeItemRepository.save(readmeItem);
newReadmeItem = findReadmeItemThrowException(newReadmeItem.getId());

//POST call readmeText by ai-server
aiService.requestReadmeText(newReadmeItem.getId(), gitUrl, requestJsonData);

return readmeItemRepository.save(readmeItem);
return readmeItemRepository.save(newReadmeItem);
}

@Transactional
Expand Down

0 comments on commit d2d6dcb

Please sign in to comment.