Extension provider (webservice)
Extensions are provided by the Extension Provider. An Extension Provider is a webservice that obeys a certain interface described below. Extension Provider can easily be registered in the Lucee Administrator. All you have to do is to enter and save the URL address pointing to it.
Let’s have a look at the interface of the extension providers. As already said it is a webservice that can be programmed in any given technology. In our examples we are using a CFC (CF Component).
The interface of the Extension Provider contains two public methods:
- getInfo(): struct - Returns information about the provider
- listApplications():query - Lists all the applications provided by the provider
This method returns information about the extension provider itself. It returns a struct that contains the following Data (still under construction):
|title||Title of the extension provider|
|description||Description of the extension provider|
|image||Link to an image|
|url||URL for more information|
|mode||Defines how the Information of the ExtensionProvider is cached in the client (Lucee Administrator). Valid values are:|
- develop - does not cache the result of the extension provider
- production (or no value) - caches the result in the session scope of the consumer
This method returns a query with all available Extensions. One row represents one extension. Below the contents of the columns of the query are described.
|id||Identifier of the extension|
|name||Name of the extension, must be a valid CFML variable name|
|label||Display name of the extension|
|author||Author of the extension|
|codename||Codename of the extension|
|video||Video for the extension (HTTP Link)|
|image||Image for the extension (HTTP Link)|
|support||Support Link of the extension|
|documentation||Documentation link of the extension|
|forum||Link to a forum|
|mailinglist||Link to a mailing list of the extension|
|network||Link to networking|
|created||When has the extension been created|
|version||Version of the extension|
|category||Category of the extension|
|download||Link to the extension itself (more on this below)|
|type||The type of the extension. Is it usable in the Server or Web Administrator. Valid values are: server,web,all - web is default|
Here's a sample code for an extensionProvider.cfc:
<cfsavecontent variable="desc"> BlogCFM is a totally free, open-source blog application for Lucee. BlogCFM supports MySQL, PostgreSQL, Microsoft Access and Microsoft SQL Server databases. * Supports MySQL and SQL Server * Creates search-engine friendly files for each entry, and for monthly archives ... * and more! </cfsavecontent> <cfset QueryAddRow(apps)> <cfset QuerySetCell(apps,'id','9')> <cfset QuerySetCell(apps,'name','blogcfm')> <cfset QuerySetCell(apps,'type','web')> <cfset QuerySetCell(apps,'label','BlogCFM')> <cfset QuerySetCell(apps,'description',desc)> <cfset QuerySetCell(apps,'author','')> <cfset QuerySetCell(apps,'codename','')> <cfset QuerySetCell(apps,'video','')> <cfset QuerySetCell(apps,'image',rootURL & '/images/blogCFM.gif')> <cfset QuerySetCell(apps,'support','')> <cfset QuerySetCell(apps,'documentation','http://www.blogcfm.org/')> <cfset QuerySetCell(apps,'forum','')> <cfset QuerySetCell(apps,'mailinglist','')> <cfset QuerySetCell(apps,'network','')> <cfset QuerySetCell(apps,'created',CreateDate(2005,1,1))> <cfset QuerySetCell(apps,'version',"1.14")> <cfset QuerySetCell(apps,'category',"Blog software")> <cfset QuerySetCell(apps,'download',rootURL & '/ext/blogcfm/archive.zip')> <cfreturn apps> </cffunction> </cfcomponent>
The most important column here is download, since it contains the link to the extension itself. The download file needs to be a zip file that is renamed to .rep (in fact it can be a .zip file as well). The REP file needs to contain the following files:
install.cfc This file contains the installation methods. See Structure of the extension
This file contains the form fields that need to be entered once your extension is installed.
- zipfile containing your application
This zip file should contain the root of your extension. It will be unpacked in the install.cfc:install() method.
Next step - Extension Consumer