Klass COD-failide loomiseks

26.03.2007  |  Gunnar

Mobiilse 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

public class ContentObjectDescriptor
{
    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.

Kommenteeri

sulge
Saada link e-postiga

© DT 2012 | Creative Commons Attribution-Noncommercial 3.0 License | WordPress