Klass COD-failide loomiseks
26.03.2007 | GunnarMobiilse sisu allalaadimise protsessi saab teha Nokia COD-formaati toetavate telefonidega külastajate jaoks hulka mugavamaks ja arusaadavamaks. COD (Content Object Descriptor) on sisu allalaadimist juhtiv kirjeldusfail, mis ühelt poolt võimaldab anda külastajale infot allalaaditava sisu kohta ning teiselt poolt võimaldab veaolukordades anda külastajale arusaadavaid teateid allalaadimisel tekkinud probleemide kohta.
COD-formaat võimaldab määrata aadressid, kus asub sisu ja kuhu brauser suunatakse õnnestunud ja kuhu ebaõnnestunud allalaadimise korral. Ebaõnnestumise korral annab brauser päringuga kaasa ka tekkinud vea koodi.
COD-formaat
Oma olemuselt on COD-failid sarnased J2ME-st tuntud JAD-formaadis failidele (JAD = Java Archive Descriptor). Iga parameeter asub eraldi real, parameetri nimi on rea alguses ning nimele järgneb koolon ja parameetri väärtus. Nii COD- kui ka JAD-faile hoitakse tavaliste tekstifailidena.
COD-formaat defineerib kolm kohustuslikku välja: sisutüüp, allalaaditava objekti suurus, allalaaditava objekti asukoht võrgus. Sisutüübi järgi saab telefon aru, mis tüüpi sisuga on tegemist. Allalaaditava objekti suurus on oluline selleks, et telefon teaks, kas sellises mahus objekti on tal võimalik vastu võtta (kas enda või WAP-gateway tehniliste piirangute tõttu).
COD-klass
Et COD-formaadis kirjeldusfaile mugavamalt luua, siis loome spetsiaalse klassi, mis meile eelnevalt omistatud parameetrite põhjal vastava väljundi genereerib. Järgnev tabel annab ülevaate klassis kasutatavatest parameetritest ning selgitab nende otstarvet.
| Parameeter | Väärtus |
| CodType | Allalaaditava objekti MIME-tüüp. |
| CodSize | Allalaaditava objekti suurus baitides. |
| CodUrl | Allalaaditava objekti asukoht. |
| CodDescription | Allalaaditava objekti lühitutvustus. |
| CodVendor | Asutus, kes allalaaditavat objekti müüb. |
| CodPrice | Allalaaditava objekti hind või summa, mis kulub objekti ostmiseks ja allalaadimiseks. |
| CodInstallNotify | Aadress, kuhu saadetakse installeerimise kohta teade. |
| CodInfoUrl | Aadress, millelt saab allalaaditava objekti kohta põhjalikumat infot. |
| CodName | Allalaaditava objekti kasutajasõbralik nimi. |
| CodNextUrl | Aadress, millele külastaja brauser suunatakse, kui allalaadimine ja installeerimine õnnestus. |
| CodNextUrlAtError | Aadress, millele külastaja brauser suunatakse, kui allalaadimine või installeerimine ebaõnnestus. |
| CodIconUrl | Allalaaditava objekti ikooni asukoht. |
Loonud klassi põhjal objekti, tuleb väärtustada tema parameetrid, mille väärtust me teame. Ära ei tohi unustada eelmainitud kohustuslikke parameetreid. Kui oleme parameetrid väärtustanud, määrame käesoleva HTTP-päringu sisutüübiks text/x-co-desc ning kirjutame klassi ToString() meetodi tagastatud väärtuse serveri väljundisse. Seejärel lõpetame skripti töö.
ContentObjectDescriptor.cs
{
private string sType = null;
private int iSize = 0;
private string sUrl = null;
private string sDescription = null;
private string sVendor = null;
private double dPrice = 0;
private string sInstallNotify = null;
private string sInfoUrl = null;
private string sName = null;
private string sNextUrl = null;
private string sNextUrlAtError = null;
private string sIconUrl = null;
public string CodType
{
get { return this.sType; }
set { this.sType = value; }
}
public int CodSize
{
get { return this.iSize; }
set { this.iSize = value; }
}
public string CodUrl
{
get { return this.sUrl; }
set { this.sUrl = value; }
}
public string CodDescription
{
get { return this.sDescription; }
set { this.sDescription = value; }
}
public string CodVendor
{
get { return this.sVendor; }
set { this.sVendor = value; }
}
public double CodPrice
{
get { return this.dPrice; }
set { this.dPrice = value; }
}
public string CodInstallNotify
{
get { return this.sInstallNotify; }
set { this.sInstallNotify = value; }
}
public string CodInfoUrl
{
get { return this.sInfoUrl; }
set { this.sInfoUrl = value; }
}
public string CodName
{
get { return this.sName; }
set { this.sName = value; }
}
public string CodNextUrl
{
get { return this.sNextUrl; }
set { this.sNextUrl = value; }
}
public string CodNextUrlAtError
{
get { return this.sNextUrlAtError; }
set { this.sNextUrlAtError = value; }
}
public string CodIconUrl
{
get { return this.sIconUrl; }
set { this.sIconUrl = value; }
}
public bool HasMandatoryValues
{
get
{
if(this.sType==null || this.sType=="") return false;
if(this.iSize<=0) return false;
if(this.sUrl==null || this.sUrl=="") return false;
return true;
}
}
public override string ToString()
{
if(!this.HasMandatoryValues)
if(this.sType==null || this.sType=="")
throw new ArgumentNullException("CodType");
else if(this.iSize<=0)
throw new ArgumentOutOfRangeException("CodSize");
else if(this.sUrl==null || this.sUrl=="")
throw new ArgumentNullException("CodUrl");
string s = "";
s+="COD-Type: "+this.sType+"\r\n";
s+="COD-Size: "+this.iSize.ToString()+"\r\n";
s+="COD-URL: "+this.sUrl+"\r\n";
if(this.sDescription!=null && this.sDescription!="")
s+="COD-Description: "+this.sDescription+"\r\n";
if(this.sVendor!=null && this.sVendor!="")
s+="COD-Vendor: "+this.sVendor+"\r\n";
if(this.dPrice>0)
s+="COD-Price: "+this.dPrice.ToString()+"\r\n";
if(this.sInstallNotify!=null && this.sInstallNotify!="")
s+="COD-Install-Notify: "+this.sInstallNotify+"\r\n";
if(this.sInfoUrl!=null && this.sInfoUrl!="")
s+="COD-Info-URL: "+this.sInfoUrl+"\r\n";
if(this.sName!=null && this.sName=="")
s+="COD-Name: "+this.sName+"\r\n";
if(this.sNextUrl!=null && this.sNextUrl!="")
s+="COD-Next-URL: "+this.sNextUrl+"\r\n";
if(this.sNextUrlAtError!=null && this.sNextUrlAtError!="")
s+="COD-Next-URLatError: "+this.sNextUrlAtError+"\r\n";
if(this.sIconUrl!=null && this.sIconUrl!="")
s+="COD-Icon-URL: "+this.sIconUrl;
return s.Trim();
}
}
Märkused
- COD-formaati toetavad ainult Nokia mobiiltelefonid. Nii pea kui Open Mobile Alliance annab välja oma kirjeldusfailide standardi, saab see üldkehtivaks standardiks ning asendab COD-formaadi.
- Selgitamaks välja, kas käesolev telefon toetab COD-formaadis kirjeldusi või ei, peame kontrollima, kas brauseri saadetud HTTP_ACCEPT-päises esineb väärtus text/x-co-desc.
