2.패캠 inner circle 첫 수업

Posted by : on

Category : inner-Circle


대망의 첫수업

첫수업은 간단하게 노드어플리케이션을 만들라는 것이였다.

아 근데 내 노트북… github 키체인이 걸려있어서 뭔가 제대로 작동을 안했고..

pullRequest도 제대로 안돼서… 한시간 반을 날렸다…ㅜㅜ 죄송합니다…리더님..

조언들 종합

좀 더 깔끔하고 친절한 설명, 가독성 있는 변수명, 함수명 등이 기본이다.

방법이 중요하다기 보다는, 왜 그랬느냐가 중요하다. 합당한 이유 효율적인 이유가 필요하다.

const baseUrl = 'https://date.nager.at/api/v3/';
const publicHolidaysUrl = `${baseUrl}PublicHolidays`;
const nextPublicHolidaysUrl = `${baseUrl}NextPublicHolidays`;
const availableCountriesUrl = `${baseUrl}AvailableCountries`;

async function getHoliday() {
    const args = process.argv.slice(2);

    if (args.length !== 2) {
        console.error('필요인수: 국가코드 연도_또는_next');
        return;
    }

    const [countryCode, yearOrNext] = args;

    if (!await isValidCountryCode(countryCode)) {
        console.error('Wrong country code');
        return;
    }
    if (yearOrNext.toLowerCase() !== 'next' && !/^\d{4}$/.test(yearOrNext)) {
        console.error('유효하지 않은 연도입니다.');
        return;
    }

    let url;
    if (yearOrNext.toLowerCase() === 'next') {
        url = `${nextPublicHolidaysUrl}/${countryCode}`;
    } else {
        url = `${publicHolidaysUrl}/${yearOrNext}/${countryCode}`;
    }

    try {
        const holidayData = await fetchHolidayData(url);
        if (holidayData) {
            holidayData.forEach(data => {
                console.log(`${data.date} ${data.name} ${data.localName}`);
            });
        }
    } catch (error) {
        console.error('Error data:', error);
    }
}
async function isValidCountryCode(countryCode) {
    try {
        const response = await fetch(availableCountriesUrl);
        if (!response.ok) {
            console.error(`api fetch 오류 상태 코드: ${response.status}`)
            return false;
        }
        const countries = await response.json();
        return countries.find(function(country) {
            return country.countryCode.toLowerCase() === countryCode.toLowerCase();
        });
    } catch (error) {
        console.error(error.message)
        return false;
    }
}
async function fetchHolidayData(url) {
    try {
        const response = await fetch(url);
        if (!response.ok) {
            console.error(`api fetch 오류 상태 코드: ${response.status}`)
            return false;
        }
        return await response.json();
    } catch (error) {
        console.error('Error data:', error);
    }
}

getHoliday();


About 유재석
유재석

개발자 유재석 입니다. Web Developer.

Email : jaeseok9405@gmail.com

Website : https://github.com/yoo94