private static void AddInternetClientCapability()

in Assets/AppCenter/Editor/AppCenterPostBuild.cs [225:273]


    private static void AddInternetClientCapability(string pathToBuiltProject)
    {
        /* Package.appxmanifest file example:
           <Package>
             <Capabilities>
               <Capability Name="internetClient" />
             </Capabilities>
           </Package> */

        var appManifests = Directory.GetFiles(pathToBuiltProject, AppManifestFileName, SearchOption.AllDirectories);
        if (appManifests.Length == 0)
        {
            Debug.LogWarning("Failed to add the `InternetClient` capability, file `" + AppManifestFileName + "` is not found");
            return;
        }
        else if (appManifests.Length > 1)
        {
            Debug.LogWarning("Failed to add the `InternetClient` capability, multiple `" + AppManifestFileName + "` files found");
            return;
        }

        var appManifestFilePath = appManifests[0];
        var xmlFile = XDocument.Load(appManifestFilePath);
        var defaultNamespace = xmlFile.Root.GetDefaultNamespace().NamespaceName;
        var capabilitiesElements = xmlFile.Root.Elements().Where(element => element.Name.LocalName == CapabilitiesElement).ToList();
        if (capabilitiesElements.Count > 1)
        {
            Debug.LogWarning("Failed to add the `InternetClient` capability, multiple `Capabilities` elements found inside `" + appManifestFilePath + "` file");
            return;
        }
        else if (capabilitiesElements.Count == 0)
        {
            xmlFile.Root.Add(new XElement(XName.Get(CapabilitiesElement, defaultNamespace), GetInternetClientCapabilityElement(defaultNamespace)));
        }
        else // capabilitiesElements.Count == 1
        {
            var capabilitiesElement = capabilitiesElements[0];
            foreach (var element in capabilitiesElement.Elements())
            {
                if (element.Name.LocalName == CapabilityElement &&
                    GetAttributeValue(element, CapabilityNameAttribute) == CapabilityNameAttributeValue)
                {
                    return;
                }
            }
            capabilitiesElement.Add(GetInternetClientCapabilityElement(defaultNamespace));
        }
        xmlFile.Save(appManifestFilePath);
    }