Fix type coercion for numeric fields in scanner and upload endpoint
This commit is contained in:
parent
549877ab4b
commit
7180de2063
@ -19,13 +19,15 @@ Create a JSON file with app metadata. All fields except `screenshots` are requir
|
||||
"screenshots": [],
|
||||
"package_name": "com.your.package",
|
||||
"version_name": "1.0",
|
||||
"version_code": "1",
|
||||
"min_sdk": "26",
|
||||
"target_sdk": "34",
|
||||
"version_code": 1,
|
||||
"min_sdk": 26,
|
||||
"target_sdk": 34,
|
||||
"permissions": ["android.permission.INTERNET"]
|
||||
}
|
||||
```
|
||||
|
||||
**Note:** `version_code`, `min_sdk`, and `target_sdk` can be integers or strings — the server converts them automatically.
|
||||
|
||||
**Field notes:**
|
||||
- **`name`**: Human-readable display name shown in the store
|
||||
- **`description`**: Short description shown in app details
|
||||
|
||||
@ -309,6 +309,11 @@ async def upload_app(
|
||||
apk_target.unlink(missing_ok=True)
|
||||
raise HTTPException(400, f"Metadata JSON requires: {', '.join(missing)}")
|
||||
|
||||
# Coerce numeric fields to strings for consistency
|
||||
for key in ("version_name", "version_code", "min_sdk", "target_sdk"):
|
||||
if key in metadata_json:
|
||||
metadata_json[key] = str(metadata_json[key])
|
||||
|
||||
json_target = REPO_PATH / f"{target_id}.json"
|
||||
json_target.write_text(json.dumps(metadata_json, indent=2))
|
||||
|
||||
|
||||
@ -202,15 +202,15 @@ def scan_repository(repo_path: str) -> List[Dict]:
|
||||
app = {
|
||||
"id": apk_file.stem,
|
||||
"package_name": metadata["package_name"],
|
||||
"version_name": metadata["version_name"] or "unknown",
|
||||
"version_code": metadata["version_code"] or "0",
|
||||
"version_name": str(metadata["version_name"]) if metadata["version_name"] else "unknown",
|
||||
"version_code": str(metadata["version_code"]) if metadata["version_code"] else "0",
|
||||
"name": metadata["label"] or apk_file.stem,
|
||||
"description": "",
|
||||
"icon": metadata["icon"],
|
||||
"size": apk_file.stat().st_size,
|
||||
"file_path": str(apk_file),
|
||||
"min_sdk": metadata["min_sdk"],
|
||||
"target_sdk": metadata["target_sdk"],
|
||||
"min_sdk": str(metadata["min_sdk"]) if metadata["min_sdk"] else None,
|
||||
"target_sdk": str(metadata["target_sdk"]) if metadata["target_sdk"] else None,
|
||||
"permissions": metadata["permissions"],
|
||||
}
|
||||
|
||||
@ -222,9 +222,11 @@ def scan_repository(repo_path: str) -> List[Dict]:
|
||||
info = json.load(f)
|
||||
for key in ("name", "description", "icon", "package_name",
|
||||
"version_name", "version_code", "min_sdk",
|
||||
"target_sdk", "permissions", "screenshots"):
|
||||
"target_sdk", "screenshots"):
|
||||
if key in info:
|
||||
app[key] = info[key]
|
||||
app[key] = str(info[key]) if key in ("version_name", "version_code", "min_sdk", "target_sdk") else info[key]
|
||||
if "permissions" in info:
|
||||
app["permissions"] = info["permissions"]
|
||||
|
||||
apps.append(app)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user