<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<plugin id="cordova-labs-local-webserver" version="2.4.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>CordovaLocalWebServer</name>
    <description>Cordova Local Web Server Plugin</description>
    <keywords>cordova,local web server</keywords>
    <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugins.git#local-webserver</repo>

    <hook type="after_plugin_install" src="scripts/after_install.js" />
    <hook type="before_plugin_uninstall" src="scripts/before_uninstall.js" />

    <dependency id="cordova-plugin-file" url="https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git" version=">=1.3.4" />

    <engines>
        <engine name="cordova-ios" version=">=4.1.0" />
    </engines>

    <!-- ios -->
    <platform name="ios">

        <config-file target="config.xml" parent="/*">
		    <feature name="CordovaLocalWebServer">
			    <param name="ios-package" value="CDVLocalWebServer"/>
			    <param name="onload" value="true"/>
		    </feature>
            <preference name="CordovaLocalWebServerStartOnSimulator" value="true" />
			<access origin="http://localhost" />
      <allow-navigation href="http://localhost:*/*" />
        </config-file>
		
        
	    <header-file src="src/ios/CDVLocalWebServer.h" />
	    <source-file src="src/ios/CDVLocalWebServer.m" />

	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerHTTPStatusCodes.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerPrivate.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.h" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.m" />

	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.h" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.m" />

	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.h" />
	    <header-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m" />
	    <source-file src="src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m" />

	    <framework src="AssetsLibrary.framework" />
	    <framework src="MobileCoreServices.framework" />
	    <framework src="CFNetwork.framework" />
        <framework src="libz.dylib" />

        <info>
        If your &lt;content&gt; element did not already point to 'http://localhost[:port]', it will now point to a http://localhost:0 location (randomized port), e.g. &lt;content src="http://localhost:0" /&gt;
        WARNING: For localStorage and IndexedDB persistence, you must choose a non-randomized port (between 1 and 49152, to avoid the ephemeral port range 49152 to 65535 on iOS).
    </info>

    </platform>
</plugin>
