Skip to content

Commit

Permalink
Merge branch 'development' into internal
Browse files Browse the repository at this point in the history
  • Loading branch information
U-lis committed May 24, 2024
2 parents 806c8fd + 7dd7d91 commit 3987317
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 13 deletions.
2 changes: 1 addition & 1 deletion iap/api/l10n.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@


@router.get("", response_model=L10NSchema)
def l10n_list(x_iap_packagename: Annotated[PackageName | None, Header()]):
def l10n_list(x_iap_packagename: Annotated[PackageName | None, Header()] = PackageName.NINE_CHRONICLES_M):
host = CDN_HOST_DICT.get(x_iap_packagename)
if not host:
msg = f"No CDN host for package {x_iap_packagename}"
Expand Down
5 changes: 3 additions & 2 deletions iap/api/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@


@router.get("", response_model=List[CategorySchema])
def product_list(x_iap_packagename: Annotated[PackageName | None, Header()],
agent_addr: str, planet_id: str = "", sess=Depends(session),
def product_list(agent_addr: str,
x_iap_packagename: Annotated[PackageName | None, Header()] = PackageName.NINE_CHRONICLES_M,
planet_id: str = "", sess=Depends(session),
):
if not planet_id:
planet_id = PlanetID.ODIN if settings.stage == "mainnet" else PlanetID.ODIN_INTERNAL
Expand Down
9 changes: 5 additions & 4 deletions iap/api/purchase.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,9 @@ def check_purchase_limit(sess, receipt: Receipt, product: Product, limit_type: s


@router.post("/request", response_model=ReceiptDetailSchema)
def request_product(x_iap_packagename: Annotated[PackageName | None, Header()],
receipt_data: ReceiptSchema, sess=Depends(session)
def request_product(receipt_data: ReceiptSchema,
x_iap_packagename: Annotated[PackageName | None, Header()] = PackageName.NINE_CHRONICLES_M,
sess=Depends(session)
):
"""
# Purchase Request
Expand Down Expand Up @@ -185,7 +186,7 @@ def request_product(x_iap_packagename: Annotated[PackageName | None, Header()],
# Save incoming data first
receipt = Receipt(
store=receipt_data.store,
package_name=x_iap_packagename,
package_name=x_iap_packagename.value,
data=receipt_data.data,
agent_addr=receipt_data.agentAddress.lower(),
avatar_addr=receipt_data.avatarAddress.lower(),
Expand Down Expand Up @@ -225,7 +226,7 @@ def request_product(x_iap_packagename: Annotated[PackageName | None, Header()],
ack_google(product_id, token)
## Apple
elif receipt_data.store in (Store.APPLE, Store.APPLE_TEST):
success, msg, purchase = validate_apple(order_id)
success, msg, purchase = validate_apple(receipt.package_name, order_id)
if success:
data = receipt_data.data.copy()
data.update(**purchase.json_data)
Expand Down
4 changes: 2 additions & 2 deletions iap/validator/apple.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
from iap.schemas.receipt import ApplePurchaseSchema


def validate_apple(tx_id: str) -> Tuple[bool, str, Optional[ApplePurchaseSchema]]:
def validate_apple(package_name: str, tx_id: str) -> Tuple[bool, str, Optional[ApplePurchaseSchema]]:
headers = {
"Authorization": f"Bearer {get_jwt(settings.APPLE_CREDENTIAL, settings.APPLE_BUNDLE_ID, settings.APPLE_KEY_ID, settings.APPLE_ISSUER_ID)}"
"Authorization": f"Bearer {get_jwt(settings.APPLE_CREDENTIAL, package_name, settings.APPLE_KEY_ID, settings.APPLE_ISSUER_ID)}"
}
encoded_tx_id = urllib.parse.quote_plus(tx_id)
resp = requests.get(settings.APPLE_VALIDATION_URL.format(transactionId=encoded_tx_id), headers=headers)
Expand Down
11 changes: 7 additions & 4 deletions tests/iap/api/test_purchase.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
from iap.validator.google import validate_google

# Both purchases are test purchase.
TEST_APPLE_ORDER_ID = '2000000458219693'
TEST_APPLE_ORDER_DATA = {
'packageName': 'com.planetariumlabs.ninechroniclesmobile',
"orderId": '2000000458219693'
}
TEST_GOOGLE_ORDER_DATA = {
'packageName': 'com.planetariumlabs.ninechroniclesmobile',
'orderId': 'GPA.3392-3387-9900-22421',
Expand All @@ -15,13 +18,13 @@


def test_apple_verify_success():
success, message, data = validate_apple(TEST_APPLE_ORDER_ID)
success, message, data = validate_apple(TEST_APPLE_ORDER_DATA["packageName"], TEST_APPLE_ORDER_DATA["orderId"])
assert success is True


@pytest.mark.parametrize("order_id", [f"{TEST_APPLE_ORDER_ID}#1", f"{TEST_APPLE_ORDER_ID}&1"])
@pytest.mark.parametrize("order_id", [f"{TEST_APPLE_ORDER_DATA['orderId']}#1", f"{TEST_APPLE_ORDER_DATA['orderId']}&1"])
def test_apple_verify_failure_with_fragment(order_id):
success, message, data = validate_apple(order_id)
success, message, data = validate_apple(TEST_APPLE_ORDER_DATA["packageName"], order_id)
assert success is False


Expand Down
12 changes: 12 additions & 0 deletions worker/worker/lambda_warmer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import requests

from common import logger


def heat(event, context):
timeout = 1
try:
resp = requests.get("https://iap-internal.9c.gg/ping?from=warmer", timeout=timeout)
print(resp.text)
except requests.exceptions.Timeout:
logger.error(f"Ping timed out after {timeout} seconds!")
16 changes: 16 additions & 0 deletions worker/worker_cdk_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,3 +275,19 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
environment=env,
memory_size=512,
)

lambda_warmer = _lambda.Function(
self, f"{config.stage}-9c-iap-lambda-warmer",
function_name=f"{config.stage}-9c-iap-lambda-warmer",
runtime=_lambda.Runtime.PYTHON_3_10,
description=f"Warm lambda instance to response fast",
code=_lambda.AssetCode("worker/worker", exclude=exclude_list),
handler="lambda_warmer.heat",
layers=[layer],
role=role,
vpc=shared_stack.vpc,
timeout=cdk_core.Duration.seconds(10),
environment=env,
memory_size=128,
)
minute_event_rule.add_target(_event_targets.LambdaFunction(lambda_warmer))

0 comments on commit 3987317

Please sign in to comment.