private string GetWidthAndHeight(string p_identifier, string p_returnType)
        {
            try
            {
                Extractor kdu = new Extractor();

                string xmlMetadata = kdu.GetMetadata(p_identifier.EndsWith(".jp2") ? p_identifier : p_identifier + ".jp2");

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xmlMetadata);

                Metadata data = new Metadata();
                data.profile    = "http://library.stanford.edu/iiif/image-api/compliance.html#level2";
                data.identifier = p_identifier;
                data.width      = int.Parse(doc.GetElementsByTagName("Width")[0].InnerText);
                data.height     = int.Parse(doc.GetElementsByTagName("Height")[0].InnerText);

                scale_factors scaleFactors = new scale_factors();
                for (int i = 0; i < int.Parse(doc.GetElementsByTagName("Jp2levels")[0].InnerText); i++)
                {
                    scaleFactors.Add(Convert.ToInt32(Math.Pow(2, i)));
                }
                data.scale_factors = scaleFactors;

                formats formats = new formats();
                formats.Add("jpg");
                formats.Add("png");
                formats.Add("gif");

                data.formats = formats;

                qualities qualities = new qualities();
                qualities.Add("native");
                qualities.Add("grey");
                qualities.Add("bitonal");

                data.qualities = qualities;

                data.tile_width  = int.Parse(doc.GetElementsByTagName("TileWidth")[0].InnerText);
                data.tile_height = int.Parse(doc.GetElementsByTagName("TileHeight")[0].InnerText);

                if (p_returnType.Equals("json"))
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    return(serializer.Serialize(data));
                }
                else
                {
                    return(getSerializedXML(data));
                }
            }
            catch (Exception e)
            {
                err = new error();

                try
                {
                    err.parameter = "identifier";

                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(e.Message);

                    err.text       = doc.GetElementsByTagName("Message")[0].InnerText;
                    err.statusCode = System.Net.HttpStatusCode.NotFound;
                }
                catch
                {
                    err.statusCode = System.Net.HttpStatusCode.BadRequest;
                    err.parameter  = "unknown";
                    err.text       = e.Message;
                }
                return(getSerializedXML(err));
            }
        }
        private string GetWidthAndHeight(string p_identifier, string p_returnType)
        {
            try
            {
                Extractor kdu = new Extractor();

                string xmlMetadata = kdu.GetMetadata(p_identifier.EndsWith(".jp2") ? p_identifier : p_identifier + ".jp2");

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xmlMetadata);

                Metadata data = new Metadata();
                data.profile = "http://library.stanford.edu/iiif/image-api/compliance.html#level2";
                data.identifier = p_identifier;
                data.width = int.Parse(doc.GetElementsByTagName("Width")[0].InnerText);
                data.height = int.Parse(doc.GetElementsByTagName("Height")[0].InnerText);

                scale_factors scaleFactors = new scale_factors();
                for (int i = 0; i < int.Parse(doc.GetElementsByTagName("Jp2levels")[0].InnerText); i++)
                {
                    scaleFactors.Add(Convert.ToInt32(Math.Pow(2, i)));
                }
                data.scale_factors = scaleFactors;

                formats formats = new formats();
                formats.Add("jpg");
                formats.Add("png");
                formats.Add("gif");

                data.formats = formats;

                qualities qualities = new qualities();
                qualities.Add("native");
                qualities.Add("grey");
                qualities.Add("bitonal");

                data.qualities = qualities;

                data.tile_width = int.Parse(doc.GetElementsByTagName("TileWidth")[0].InnerText);
                data.tile_height = int.Parse(doc.GetElementsByTagName("TileHeight")[0].InnerText);

                if (p_returnType.Equals("json"))
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    return serializer.Serialize(data);
                }
                else
                {
                    return getSerializedXML(data);
                }
            }
            catch (Exception e)
            {
                err = new error();

                try
                {
                    err.parameter = "identifier";

                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(e.Message);

                    err.text = doc.GetElementsByTagName("Message")[0].InnerText;
                    err.statusCode = System.Net.HttpStatusCode.NotFound;
                }
                catch
                {
                    err.statusCode = System.Net.HttpStatusCode.BadRequest;
                    err.parameter = "unknown";
                    err.text = e.Message;
                }
                return getSerializedXML(err);
            }
        }