Repository principle

For OvGME, a repository is simply a web server (HTTP) who provides a specifically structured XML data with informations about mod(s) to download. There are two things not to be confused: The repository server, and where mod(s) are downloadable.

#### Repository transaction

The OvGME repository mechanism is pretty simple: A web server hosts an XML file available as any other web page at a specific address, OvGME will query the HTTP server to receive this specific file, then will parse it to gather data about what mods are available and where they can be downloaded.

#### The repository server

The repository server must be a standard HTTP 1.1 server. This is, so to say, mainly the only standard which is currently in service on the web. In other words, a repository server is nothing other than a web site who provide an OvGME compatible XML file. The only rules is that OvGME must be able to access this XML file through the web using a specified URL.
To summarize: If you can open the XML file using your favorite web browser, OvGME will too, and then, this is an "OvGME repository".

#### The standard URL to provide

If you provide a classical XML file in your server, the repository URL provided to users must be the full URL to the XML file, with or without the ".xml" at the end of URL. Indeed, if there is no ".xml" at the end of the URL, OvGME will automatically append ".xml" at the end of URL.
For example, if the full URL to XML file is:
"http://www.example.com:8080/repository/game1.xml"
The following URL is also valid for OvGME:
"http://www.example.com:8080/repository/game1"
OvGME supports all standard url format, with or without protocol or port specified. Here are example of supported URL format:

> http://www.example.com/folder/repository
> www.example.com/folder/repository
> www.example.com:8081/folder/repository
> http://www.example.com:8081/folder/repository

Note: If not port is specified, the default HTTP port 80 is used.

#### Dynamically generated XML data

OvGME supports the chunked transfer-encoding method for simple HTTP GET request (not for file download). In other words, OvGME can gather XML data from any dynamically generated web page such as PHP or ASP page.
However, in this case, the provided repository URL must allow OvGME to recognize this is not a raw XML repository (to not trying to add the ".xml" extension to URL). To do so, the URL must either:

- Be the full URL to the web file including ".php", ".asp" or ".aspx" extension.
- Or containing a "?" character, typical of a dynamic URL request.

Here are some examples of valid provided URL for dynamically generated repository:

> http://www.example.com/repository.php
> http://www.example.com/repo.asp
> http://www.example.com?game=1&type=2

Dynamically generated XML allow repositories managers to create their repositories using real databases with their own XML source generator.