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": [],
|
"screenshots": [],
|
||||||
"package_name": "com.your.package",
|
"package_name": "com.your.package",
|
||||||
"version_name": "1.0",
|
"version_name": "1.0",
|
||||||
"version_code": "1",
|
"version_code": 1,
|
||||||
"min_sdk": "26",
|
"min_sdk": 26,
|
||||||
"target_sdk": "34",
|
"target_sdk": 34,
|
||||||
"permissions": ["android.permission.INTERNET"]
|
"permissions": ["android.permission.INTERNET"]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Note:** `version_code`, `min_sdk`, and `target_sdk` can be integers or strings — the server converts them automatically.
|
||||||
|
|
||||||
**Field notes:**
|
**Field notes:**
|
||||||
- **`name`**: Human-readable display name shown in the store
|
- **`name`**: Human-readable display name shown in the store
|
||||||
- **`description`**: Short description shown in app details
|
- **`description`**: Short description shown in app details
|
||||||
|
|||||||
@ -309,6 +309,11 @@ async def upload_app(
|
|||||||
apk_target.unlink(missing_ok=True)
|
apk_target.unlink(missing_ok=True)
|
||||||
raise HTTPException(400, f"Metadata JSON requires: {', '.join(missing)}")
|
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 = REPO_PATH / f"{target_id}.json"
|
||||||
json_target.write_text(json.dumps(metadata_json, indent=2))
|
json_target.write_text(json.dumps(metadata_json, indent=2))
|
||||||
|
|
||||||
|
|||||||
@ -202,15 +202,15 @@ def scan_repository(repo_path: str) -> List[Dict]:
|
|||||||
app = {
|
app = {
|
||||||
"id": apk_file.stem,
|
"id": apk_file.stem,
|
||||||
"package_name": metadata["package_name"],
|
"package_name": metadata["package_name"],
|
||||||
"version_name": metadata["version_name"] or "unknown",
|
"version_name": str(metadata["version_name"]) if metadata["version_name"] else "unknown",
|
||||||
"version_code": metadata["version_code"] or "0",
|
"version_code": str(metadata["version_code"]) if metadata["version_code"] else "0",
|
||||||
"name": metadata["label"] or apk_file.stem,
|
"name": metadata["label"] or apk_file.stem,
|
||||||
"description": "",
|
"description": "",
|
||||||
"icon": metadata["icon"],
|
"icon": metadata["icon"],
|
||||||
"size": apk_file.stat().st_size,
|
"size": apk_file.stat().st_size,
|
||||||
"file_path": str(apk_file),
|
"file_path": str(apk_file),
|
||||||
"min_sdk": metadata["min_sdk"],
|
"min_sdk": str(metadata["min_sdk"]) if metadata["min_sdk"] else None,
|
||||||
"target_sdk": metadata["target_sdk"],
|
"target_sdk": str(metadata["target_sdk"]) if metadata["target_sdk"] else None,
|
||||||
"permissions": metadata["permissions"],
|
"permissions": metadata["permissions"],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,9 +222,11 @@ def scan_repository(repo_path: str) -> List[Dict]:
|
|||||||
info = json.load(f)
|
info = json.load(f)
|
||||||
for key in ("name", "description", "icon", "package_name",
|
for key in ("name", "description", "icon", "package_name",
|
||||||
"version_name", "version_code", "min_sdk",
|
"version_name", "version_code", "min_sdk",
|
||||||
"target_sdk", "permissions", "screenshots"):
|
"target_sdk", "screenshots"):
|
||||||
if key in info:
|
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)
|
apps.append(app)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user