20.12.30 Disqus api 적용 - 댓글수, 추천수 동기화 기능 추가( + 이모지 적용)(feat.jackson)
2020. 12. 30. 22:26ㆍJAVA/Blog 사이트 프로젝트
<BuildService.java>
public void builSite() {
System.out.println("= site 폴더 생성 =");
// Util.rmdir("site"); // 기존 site 폴더 삭제
Util.mkdir("site"); // 신규 site 폴더 생성
// site_template에 있는 app.css(원본)를 복사해 site폴더 생성시 그 안에 복사본 붙여넣기
Util.copy("site_template/app.css", "site/app.css");
Util.copy("site_template/app.js", "site/app.js");
// site_template에 있는 images(원본)폴더를 복사해 site폴더 생성시 그 안에 복사본 붙여넣기
Util.copyDir("site_template/images", "site/images");
// 사이트 생성 전 Discus Data 가져오기
loadDiscusData();
buildIndexPage(); // 인덱스 페이지 생성
buildArticleListPages(); // 각 게시판 별 게시물리스트 페이지 생성
buildArticleDetailPages(); // 게시판 별 게시물 상세페이지 생성
}
// Discus Data 가져오기
private void loadDiscusData() {
List<Article> articles = articleService.getArticlesForPrint();
for (Article article : articles) {
Map<String, Object> discusArticleData = discusApiService.getArticleData(article);
if (discusArticleData != null) {
int likesCount = (int) discusArticleData.get("likesCount");
int commentsCount = (int) discusArticleData.get("commentsCount");
Map<String, Object> modifyArgs = new HashMap<>();
modifyArgs.put("id", article.id);
modifyArgs.put("likesCount", likesCount);
modifyArgs.put("commentsCount", commentsCount);
articleService.articleModify(modifyArgs);
}
}
}
<DiscusApiService.java>
package com.sbs.example.mysqlTextBoard.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sbs.example.mysqlTextBoard.apiDto.DisqusApiDataListThread;
import com.sbs.example.mysqlTextBoard.container.Container;
import com.sbs.example.mysqlTextBoard.dto.Article;
import com.sbs.example.mysqlTextBoard.util.Util;
public class DiscusApiService {
public Map<String, Object> getArticleData(Article article) {
String fileName = Container.buildService.getArticleFileName(article);
String url = "https://disqus.com/api/3.0/forums/listThreads.json";
DisqusApiDataListThread disqusApiDataListThread = (DisqusApiDataListThread) Util.callApiResponseTo(DisqusApiDataListThread.class,
url, "api_key=" + Container.appConfig.getDisqusApiKey(), "forum=" + Container.appConfig.getDisqusForumName(),
"thread:ident=" + fileName);
if(disqusApiDataListThread == null) {
return null;
}
Map<String, Object> rs = new HashMap<>();
rs.put("likesCount", disqusApiDataListThread.response.get(0).likes);
rs.put("commentsCount", disqusApiDataListThread.response.get(0).posts);
System.out.println(rs);
return rs;
}
}
<DisqusApiDataListThread.java>
package com.sbs.example.mysqlTextBoard.apiDto;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class DisqusApiDataListThread {
public int code;
public List<Response> response;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Response{
public int likes;
public int posts;
}
}
<AppConfig.java>
package com.sbs.example.mysqlTextBoard;
public class AppConfig {
public String getSiteDomain() {
return "blog.devj.me";
}
public String getDisqusApiKey() {
return "mr5Mv3I4DJ893SADMVmxOu7iUzXrkL3GvNnWxJ4dBy5ZBHvd32lKlEw0qYI5x76F";
}
public String getDisqusForumName() {
return "devj-blog";
}
}
'JAVA > Blog 사이트 프로젝트' 카테고리의 다른 글
21.01.05 템플릿에 검색어 구현 연습 (0) | 2021.01.05 |
---|---|
20.12.31 GoogleAnalytics API 도입 테스트(feat.Maven) (0) | 2020.12.31 |
20.12.27 사이트 메타태그 적용(상세페이지 내용 나오게 하기 등) (0) | 2020.12.27 |
20.12.21 게시판 사이트 프로젝트(사이드바,top버튼 적용, 홈화면 애니메이션 적용, 로고, open graph, favicon 적용 등) (0) | 2020.12.21 |
20.12.18 게시판 사이트 프로젝트(댓글 유틸(disqus) 추가,검색엔진 등록, 구글 애널리틱스 적용, 구글 ad 추가 등) (0) | 2020.12.18 |