""" Download configuration from GeViServer and analyze the edited mapping """ import requests import json import sys BASE_URL = "http://localhost:8000" def authenticate(): response = requests.post(f'{BASE_URL}/api/v1/auth/login', json={ 'username': 'admin', 'password': 'admin123' }) return response.json()['access_token'] def main(): token = authenticate() headers = {'Authorization': f'Bearer {token}'} print("=" * 80) print("DOWNLOADING AND ANALYZING EDITED MAPPING") print("=" * 80) print() # Download current configuration print("Downloading configuration from GeViServer...") response = requests.get(f'{BASE_URL}/api/v1/configuration/export', headers=headers) if response.status_code != 200: print(f"ERROR: Failed to download configuration: {response.status_code}") print(response.text) return # Save the raw configuration with open('current_config.set', 'wb') as f: f.write(response.content) print(f"Downloaded {len(response.content)} bytes") print("Saved to: current_config.set") print() # Now parse it using the working Python parser print("Parsing configuration...") sys.path.insert(0, r'C:\DEV\COPILOT_codex') from geviset_parser import load_set from pathlib import Path tree = load_set(Path('current_config.set')) # Find MappingRules mapping_rules = None for child in tree.get("children", []): if child.get("name") == "MappingRules" and child.get("type") == "folder": mapping_rules = child break if not mapping_rules: print("ERROR: MappingRules not found!") return # Find FIXED_STRUCTURE_TEST mapping test_mapping = None for mapping in mapping_rules.get("children", []): if mapping.get("type") != "folder": continue name_node = None for child in mapping.get("children", []): if child.get("name") == "@": name_node = child break if name_node and name_node.get("value") == "FIXED_STRUCTURE_TEST": test_mapping = mapping break if not test_mapping: print("ERROR: FIXED_STRUCTURE_TEST mapping not found!") print("Available mappings:") for mapping in mapping_rules.get("children", []): if mapping.get("type") == "folder": for child in mapping.get("children", []): if child.get("name") == "@": print(f" - {child.get('value')}") return print("Found FIXED_STRUCTURE_TEST mapping!") print() # Save full structure to JSON with open('edited_mapping_structure.json', 'w') as f: json.dump(test_mapping, f, indent=2) print("Full structure saved to: edited_mapping_structure.json") print() # Display the structure print("=" * 80) print("MAPPING STRUCTURE AFTER GEVISET EDIT") print("=" * 80) print() print("TOP-LEVEL FIELDS (in order):") for i, child in enumerate(test_mapping.get("children", []), 1): child_type = child.get("type") child_name = child.get("name") child_value = child.get("value") if child_type == "folder": child_count = len(child.get("children", [])) print(f" {i:2d}. {child_name:20s} ({child_type}): {child_count} children") else: print(f" {i:2d}. {child_name:20s} ({child_type}): {child_value}") print() # Find and display Rules folder rules_folder = None for child in test_mapping.get("children", []): if child.get("name") == "Rules" and child.get("type") == "folder": rules_folder = child break if rules_folder: print("OUTPUT ACTIONS:") for output in rules_folder.get("children", []): if output.get("type") != "folder": continue print(f"\nOutput Action (ID: {output.get('name')}):") for field in output.get("children", []): field_name = field.get("name") field_type = field.get("type") field_value = field.get("value") print(f" {field_name:20s} ({field_type}): {field_value}") if __name__ == '__main__': main()