Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions src/Infrastructures/http/createServer.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,23 @@ const comments = require("../../Interfaces/http/api/comments");
const replies = require("../../Interfaces/http/api/replies");
const likes = require("../../Interfaces/http/api/likes");

let schemes = ["https"];
if (process.env.NODE_ENV !== "production") {
schemes = ["http", "https"];
}
const swaggerOptions = {
info: {
title: "Forum API Documentation by Ofren dialsa",
version: "1.0.0",
},
schemes: ['https'],
schemes: schemes,
securityDefinitions: {
jwt: {
type: "apiKey",
name: "Authorization",
in: "header",
},
},
};

const createServer = async (container) => {
Expand Down Expand Up @@ -87,7 +98,6 @@ const createServer = async (container) => {
const { response } = request;

if (response instanceof Error) {

const translatedError = DomainErrorTranslator.translate(response);

if (translatedError instanceof ClientError) {
Expand Down
10 changes: 10 additions & 0 deletions src/Interfaces/http/api/comments/swagger/comments.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ const postAddComment = {
description: "Menambah komentar pada sebuah thread",
notes:
"User harus login (JWT). Komentar akan ditambahkan ke thread tertentu.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
params: Joi.object({
Expand Down Expand Up @@ -46,6 +51,11 @@ const deleteComment = {
tags: ["api", "Comments"],
description: "Menghapus komentar dari thread",
notes: "User harus login. Hanya pemilik komentar yang dapat menghapus.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
params: Joi.object({
Expand Down
24 changes: 15 additions & 9 deletions src/Interfaces/http/api/likes/swagger/likes.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
const Joi = require('joi');
const Joi = require("joi");

const putCommentLike = {
auth: 'forumapi_jwt',
tags: ['api', 'CommentLikes'],
description: 'Memberikan atau menghapus like pada komentar',
notes: 'User harus login. Like bersifat toggle: jika sudah di-like, maka unlike.',
auth: "forumapi_jwt",
tags: ["api", "CommentLikes"],
description: "Memberikan atau menghapus like pada komentar",
notes:
"User harus login. Like bersifat toggle: jika sudah di-like, maka unlike.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
params: Joi.object({
thread_id: Joi.string().required().description('ID thread'),
comment_id: Joi.string().required().description('ID komentar'),
thread_id: Joi.string().required().description("ID thread"),
comment_id: Joi.string().required().description("ID komentar"),
}),

failAction: (request, h, err) => {
Expand All @@ -25,8 +31,8 @@ const putCommentLike = {

response: {
schema: Joi.object({
status: Joi.string().valid('success').required(),
}).label('PutCommentLikeResponse'),
status: Joi.string().valid("success").required(),
}).label("PutCommentLikeResponse"),
},
};

Expand Down
50 changes: 31 additions & 19 deletions src/Interfaces/http/api/replies/swagger/replies.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
const Joi = require('joi');
const Joi = require("joi");

const postAddReply = {
auth: 'forumapi_jwt',
tags: ['api', 'Replies'],
description: 'Menambah reply pada sebuah komentar',
notes: 'User harus login (JWT). Reply akan ditambahkan ke komentar tertentu.',
auth: "forumapi_jwt",
tags: ["api", "Replies"],
description: "Menambah reply pada sebuah komentar",
notes: "User harus login (JWT). Reply akan ditambahkan ke komentar tertentu.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
params: Joi.object({
thread_id: Joi.string().required().description('ID thread'),
comment_id: Joi.string().required().description('ID komentar'),
thread_id: Joi.string().required().description("ID thread"),
comment_id: Joi.string().required().description("ID komentar"),
}),
payload: Joi.object({
content: Joi.string().required().description('Isi reply'),
content: Joi.string().required().description("Isi reply"),
}),

failAction: (request, h, err) => {
Expand All @@ -28,7 +33,7 @@ const postAddReply = {

response: {
schema: Joi.object({
status: Joi.string().valid('success').required(),
status: Joi.string().valid("success").required(),
message: Joi.string().required(),
data: Joi.object({
addedReply: Joi.object({
Expand All @@ -37,28 +42,35 @@ const postAddReply = {
owner: Joi.string().required(),
}),
}),
}).label('AddReplyResponse'),
}).label("AddReplyResponse"),
},
};

const deleteReply = {
auth: 'forumapi_jwt',
tags: ['api', 'Replies'],
description: 'Menghapus reply dari komentar',
notes: 'User harus login. Hanya pemilik reply yang dapat menghapus.',
auth: "forumapi_jwt",
tags: ["api", "Replies"],
description: "Menghapus reply dari komentar",
notes: "User harus login. Hanya pemilik reply yang dapat menghapus.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
params: Joi.object({
thread_id: Joi.string().required().description('ID thread'),
comment_id: Joi.string().required().description('ID komentar'),
reply_id: Joi.string().required().description('ID reply yang akan dihapus'),
thread_id: Joi.string().required().description("ID thread"),
comment_id: Joi.string().required().description("ID komentar"),
reply_id: Joi.string()
.required()
.description("ID reply yang akan dihapus"),
}),
},

response: {
schema: Joi.object({
status: Joi.string().valid('success').required(),
}).label('DeleteReplyResponse'),
status: Joi.string().valid("success").required(),
}).label("DeleteReplyResponse"),
},
};

Expand Down
5 changes: 5 additions & 0 deletions src/Interfaces/http/api/threads/swagger/threads.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ const postAddThread = {
tags: ["api", "Threads"],
description: "Menambah thread baru",
notes: "User harus login (JWT). Thread akan ditambahkan ke forum.",
plugins: {
"hapi-swagger": {
security: [{ jwt: [] }],
},
},

validate: {
payload: Joi.object({
Expand Down