Compare commits
2 Commits
08ebe7b53d
...
a1e222acb9
| Author | SHA1 | Date | |
|---|---|---|---|
| a1e222acb9 | |||
| 87fca22ea0 |
@@ -28,6 +28,8 @@ from typing import Any
|
||||
from . import products
|
||||
from .client import Cafe24Client
|
||||
from .config import (
|
||||
DEFAULT_SCOPES,
|
||||
DESIGN_SCOPES,
|
||||
ORDER_SCOPES,
|
||||
PRODUCT_SCOPES,
|
||||
Cafe24Config,
|
||||
@@ -58,6 +60,8 @@ __all__ = [
|
||||
"products",
|
||||
"PRODUCT_SCOPES",
|
||||
"ORDER_SCOPES",
|
||||
"DESIGN_SCOPES",
|
||||
"DEFAULT_SCOPES",
|
||||
"Cafe24Error",
|
||||
"Cafe24ConfigError",
|
||||
"Cafe24AuthError",
|
||||
@@ -75,7 +79,7 @@ class Cafe24Api:
|
||||
client: Cafe24Client
|
||||
|
||||
|
||||
def build_cafe24_api(store: Any, *, scopes: tuple[str, ...] = PRODUCT_SCOPES) -> Cafe24Api:
|
||||
def build_cafe24_api(store: Any, *, scopes: tuple[str, ...] = DEFAULT_SCOPES) -> Cafe24Api:
|
||||
"""Cafe24Store 를 저장소로 쓰는 API 묶음 생성.
|
||||
|
||||
store 는 토큰 3개 메서드(get_token_row/save_token_row/token_lock)와
|
||||
|
||||
@@ -13,6 +13,17 @@ from dataclasses import dataclass
|
||||
PRODUCT_SCOPES: tuple[str, ...] = ("mall.read_product", "mall.write_product")
|
||||
ORDER_SCOPES: tuple[str, ...] = ("mall.read_order", "mall.write_order")
|
||||
|
||||
# 디자인(테마) — 상단 공통 홍보 숨김을 스킨 쪽에서 처리할 수 있는지 확인/구현용.
|
||||
# ⚠️ 카페24 Admin API 에는 스킨 HTML 파일(detail.html)을 직접 읽거나 쓰는
|
||||
# 엔드포인트가 없다. 조회 가능한 것은 테마 목록과 테마 페이지뿐이다.
|
||||
# 스크립트 태그 주입은 디자인이 아니라 mall.write_store(상점) 권한이며
|
||||
# 인라인 코드가 아닌 외부 HTTPS URL 만 받는다.
|
||||
DESIGN_SCOPES: tuple[str, ...] = ("mall.read_design", "mall.write_design")
|
||||
|
||||
# 실제로 요청하는 scope 묶음. 개발자센터 앱에 등록된 권한과 어긋나면 인증이
|
||||
# 거부되므로, 여기에 추가할 때는 앱 권한도 함께 확인해야 한다.
|
||||
DEFAULT_SCOPES: tuple[str, ...] = PRODUCT_SCOPES + DESIGN_SCOPES
|
||||
|
||||
DEFAULT_API_VERSION = "2026-03-01"
|
||||
|
||||
|
||||
@@ -57,7 +68,7 @@ class Cafe24Config:
|
||||
return ",".join(self.scopes)
|
||||
|
||||
|
||||
def load_config(*, scopes: tuple[str, ...] = PRODUCT_SCOPES) -> Cafe24Config:
|
||||
def load_config(*, scopes: tuple[str, ...] = DEFAULT_SCOPES) -> Cafe24Config:
|
||||
"""환경변수에서 설정을 읽는다. 값이 없어도 예외를 던지지 않는다.
|
||||
|
||||
미설정 판단은 호출부가 `configured` / `missing` 으로 한다
|
||||
|
||||
@@ -127,7 +127,11 @@ def test_config_basics():
|
||||
assert config.configured
|
||||
assert config.missing == []
|
||||
assert config.api_base == "https://testmall.cafe24api.com/api/v2"
|
||||
assert config.scope_param == "mall.read_product,mall.write_product"
|
||||
# 요청 scope 는 DEFAULT_SCOPES 한 곳에서 나온다(authorize 와 클라이언트가
|
||||
# 어긋나지 않게). 늘어날 때 이 테스트도 함께 갱신할 것.
|
||||
assert config.scope_param == ",".join(cfgmod.DEFAULT_SCOPES)
|
||||
assert "mall.read_product" in config.scope_param
|
||||
assert "mall.write_product" in config.scope_param
|
||||
|
||||
|
||||
def test_authorize_url_has_state_and_no_secret():
|
||||
|
||||
Reference in New Issue
Block a user