crowny-brand 외부 API 연동 (유튜브 실연동 + 채널 레지스트리 정직화)
개요
branding.crowny.org:9630(crowny-brand, LaunchAgent org.crowny.branding)의 채널 위젯이
전부 더미 팔로워/connected 상태였던 것을, 실제 채널 현황(유튜브만 핸들 확보·나머지 미생성)으로
정직화하고, 순수 한선씨 raw TLS opcode로 YouTube Data API v3 실연동 경로를 만들었다.
자격증명(API 키) 미보유 상태이므로 503으로 정직하게 표현하고, 키가 들어오면 즉시 동작하도록 완성해둠.
무엇을 했는지
- 외부API.한선 (신규) — HTTPS 클라이언트. TLS연결/TLS쓰기/TLS읽기/TLS닫기 raw opcode 직접
조립. TLS.한선의 HTTPS_GET 래퍼는 빈 응답 버그가 실측 확인되어 사용하지 않음.
CRLF는
글자변환(13)+글자변환(10)로 조립(리터럴 "\r\n" 은 기존 서버.한선에서도 이미
정상 동작 중이라 함께 사용). Transfer-Encoding: chunked 청크 길이줄(16진수)을 직접 파싱해
벗겨내는
_청크디코딩 구현. 반복 읽기 상한 200회, 문자열 60000B 캡(절단 시 마커 append).
셀프테스트(
RUN_SELFTEST 환경변수 가드)로 www.googleapis.com 실호출 검증 완료(상태 200,
본문 765바이트, JSON discovery 응답 확인).
- 유튜브연동.한선 (신규) —
유튜브채널조회(API키, 핸들) → YouTube Data API v3
/youtube/v3/channels?part=snippet,statistics&forHandle=...&key=... 호출, snippet.title/
statistics.subscriberCount/videoCount/viewCount 파싱.
- data/채널.psv 스키마 확장:
id|이름|아이콘|상태|팔로워|마지막동기화|핸들|플랫폼|자격증명상태.
더미 connected/팔로워 수 전부 제거하고 실제 상황 반영:
- 유튜브: handle_only, @today-cosmetic, 팔로워 0(미연동이므로 모름=0)
- 인스타/틱톡/쓰레드/X/치지직/네이버블로그/카카오: not_created
- 티옴타: pending, 핸들=오늘의화장품, 자격증명=internal
- 서버.한선 갱신:
-
/api/channels 응답에 handle/platform/credentialStatus 필드 추가
-
POST /api/channels/youtube/sync 신설:
.env의 YOUTUBE_API_KEY 없으면
503 {"ok":0,"reason":"no_credential"} (200 위장 금지), 있으면 실호출 →
채널.psv 갱신(append) → 결과 반환
-
_응답() 상태코드 매핑표에 502(Bad Gateway) 추가(YouTube API 오류 시 사용) —
신규 상태코드 추가 시 매핑표 누락 = 200 위장 사고 재발 방지 체크 반영
-
.env.example 생성(플레이스홀더만).
.env는 생성하지 않음(실제 키 없음)
public/ 디렉토리는 전혀 건드리지 않음(index 200/155273B, support.js 200/69150B
회귀로 확인).
실측 검증 (2026-07-31)
- 외부API.한선/유튜브연동.한선/서버.한선 3개 파일 모두 hanseonc_high 컴파일 성공(0 에러)
- 셀프테스트:
RUN_SELFTEST=1 crownyc run 외부API.toau → 상태코드=200, 본문길이=765,
googleapis discovery JSON 정상 파싱
라이브 curl 검증(launchctl kickstart 후):
/api/health 200
/api/channels — 9채널 신규 필드 포함, 더미값 없음
POST /api/channels/youtube/sync (자격증명 없음) → 503 {"ok":0,"reason":"no_credential"}
/ 200 155273B, /support.js 200 69150B (public/ 무변경 확인)
/nope 404
/api/track, /api/track/summary, /api/agents, /api/report/daily 전부 기존과 동일하게 정상관련 파일
- /Users/ef/crowny-brand/외부API.한선 (신규)
- /Users/ef/crowny-brand/유튜브연동.한선 (신규)
- /Users/ef/crowny-brand/서버.한선 (수정)
- /Users/ef/crowny-brand/data/채널.psv (스키마 확장 + 실데이터 반영)
- /Users/ef/crowny-brand/.env.example (신규, 플레이스홀더)
- /Users/ef/crowny-brand/서버.toau (재컴파일 배포)
잔여 이슈
- YOUTUBE_API_KEY 미보유 — 발급 후
/Users/ef/crowny-brand/.env에
YOUTUBE_API_KEY=... 추가하면
/api/channels/youtube/sync가 즉시 실동작(코드는 이미 완성).
- 인스타그램/틱톡/쓰레드/X/치지직/네이버블로그/카카오 — 계정/연동 전부 미착수(not_created).
- 티옴타 — "오늘의 화장품" 브랜드/상점 개설 후 pending → live 전환 로직은 아직 미구현(개설 완료
시점에 별도 연동 필요).
- 발견한 VM 함정: 예약키워드
메서드, 계속을 함수 파라미터/변수명으로 쓰면 파싱 에러 —
각각
HTTP동사,
_진행으로 회피.