File size: 804 Bytes
c667cc7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from __future__ import annotations
from typing import Dict, Any
from . import storage

class BaseAdapter:
    name = "base"

    def __init__(self, campaign_id: str):
        self.campaign_id = campaign_id

    def send(self, variant_id: str, text: str, context: Dict[str, Any]) -> Dict[str, Any]:
        # 実配信の代わりに監査ログへ記録。実装時はAPI呼び出しに差し替え。
        payload = {"adapter": self.name, "variant_id": variant_id, "text": text, "context": context}
        storage.audit(self.campaign_id, f"adapter_send:{self.name}", payload)
        return {"ok": True, "note": f"stubbed send via {self.name}"}

class XAdapter(BaseAdapter):
    name = "x"

class MetaAdapter(BaseAdapter):
    name = "meta"

class GoogleAdsAdapter(BaseAdapter):
    name = "google"