Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Fauzanmhr committed Aug 23, 2024
2 parents 07396fa + 324e303 commit fa233cc
Show file tree
Hide file tree
Showing 44 changed files with 1,851 additions and 740 deletions.
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
PORT=3000
API_URL=https://wajik-anime-api.vercel.app
NODE_ENV=production
2 changes: 1 addition & 1 deletion .github/workflows/cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
deploy-dev:
if: github.ref == 'refs/heads/dev'
runs-on: ubuntu-latest
environment: main
environment: dev
steps:
- name: Checkout repository
uses: actions/checkout@v2
Expand Down
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/jsLibraryMappings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/zannime.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 69 additions & 0 deletions controllers/animeController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { fetchOngoingAnime, fetchAnimeDetails } from '../services/animeService.js';

export const getAllAnime = async (req, res) => {
const page = req.query.page || 1;
const result = await fetchOngoingAnime(page);
res.render('index', { animes: result.data, pagination: result.pagination });
};

export const getAnimeDetails = async (req, res) => {
const anime = await fetchAnimeDetails(req.params.slug);
if (anime) {
res.render('detail', { anime });
} else {
res.status(500).send('Error fetching anime details');
}
};

export const searchAnime = (req, res) => {
const { q: query, page = 1, limit = 20 } = req.query;
if (!query) return res.json({ results: [] });

const allAnimeData = req.app.locals.allAnimeData;
const filteredResults = allAnimeData.filter(anime => anime.judul.toLowerCase().includes(query.toLowerCase()));
const startIndex = (page - 1) * limit;
const endIndex = page * limit;
const results = filteredResults.slice(startIndex, endIndex);

res.json({
results,
currentPage: parseInt(page, 10),
totalPages: Math.ceil(filteredResults.length / limit)
});
};

export const getAllAnimeAjax = (req, res) => {
const { page = 1, limit = 20 } = req.query;
const allAnimeData = req.app.locals.allAnimeData;

const startIndex = (page - 1) * limit;
const endIndex = page * limit;
const results = allAnimeData.slice(startIndex, endIndex);

res.json({
results,
currentPage: parseInt(page, 10),
totalPages: Math.ceil(allAnimeData.length / limit)
});
};

export const renderAllAnimePage = (req, res) => {
const { page = 1 } = req.query;
const limit = 20;
const allAnimeData = req.app.locals.allAnimeData;

const totalAnimes = allAnimeData.length;
const totalPages = Math.ceil(totalAnimes / limit);
const startIndex = (page - 1) * limit;
const endIndex = startIndex + limit;
const paginatedAnimes = allAnimeData.slice(startIndex, endIndex);

const pagination = {
currentPage: page,
totalPages,
prevPage: page > 1 ? page - 1 : null,
nextPage: page < totalPages ? page + 1 : null
};

res.render('all-anime', { animes: paginatedAnimes, pagination });
};
12 changes: 12 additions & 0 deletions controllers/episodeController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { fetchEpisodeDetails } from '../services/episodeService.js';

export const getEpisodeDetails = async (req, res) => {
if (!req.query.slug) return res.redirect('/');

const episode = await fetchEpisodeDetails(req.query.slug);
if (episode) {
res.render('episode', { episode });
} else {
res.status(500).send('Error fetching episode details');
}
};
13 changes: 13 additions & 0 deletions controllers/genreController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { fetchGenres, fetchAnimeByGenre } from '../services/genreService.js';

export const getGenres = async (req, res) => {
const genres = await fetchGenres();
res.render('genres', { genres });
};

export const getAnimeByGenre = async (req, res) => {
const { slug } = req.params;
const { page = 1 } = req.query;
const result = await fetchAnimeByGenre(slug, page);
res.render('genre-anime', { animes: result.data, pagination: result.pagination, genre: slug });
};
15 changes: 15 additions & 0 deletions controllers/shortlinkController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { fetchShortlink } from '../services/shortlinkService.js';

export const decodeShortlink = async (req, res) => {
const { url: shortlink } = req.query;
if (!shortlink) return res.status(400).send('URL parameter is required');

try {
const redirectionUrl = await fetchShortlink(shortlink);
if (redirectionUrl) return res.send(redirectionUrl);
res.status(404).send('No redirection found');
} catch (error) {
console.error('Error decoding shortlink:', error);
res.status(500).send('Error decoding shortlink');
}
};
Loading

0 comments on commit fa233cc

Please sign in to comment.