aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Configuration/HTTP/HTTPConfiguration.cs
blob: 8b741952a60c5f69a4f87ada2edacee8e8d681d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Text;

using OpenSim.Framework.Configuration.Interfaces;

namespace OpenSim.Framework.Configuration.HTTP
{
    public class HTTPConfiguration : IGenericConfig
    {
        RemoteConfigSettings remoteConfigSettings;

        XmlConfiguration xmlConfig;

        private string configFileName = "";

        public HTTPConfiguration()
        {
            remoteConfigSettings = new RemoteConfigSettings("remoteconfig.xml");
            xmlConfig = new XmlConfiguration();
        }

        public void SetFileName(string fileName)
        {
            configFileName = fileName;
        }

        public void LoadData()
        {
            try
            {
                StringBuilder sb = new StringBuilder();

                byte[] buf = new byte[8192];
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.remoteConfigSettings.baseConfigURL + this.configFileName);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                Stream resStream = response.GetResponseStream();

                string tempString = null;
                int count = 0;

                do
                {
                    count = resStream.Read(buf, 0, buf.Length);
                    if (count != 0)
                    {
                        tempString = Encoding.ASCII.GetString(buf, 0, count);
                        sb.Append(tempString);
                    }
                }
                while (count > 0);
                LoadDataFromString(sb.ToString());
            }
            catch (WebException)
            {
                Console.MainLog.Instance.Warn("Unable to connect to remote configuration file (" + remoteConfigSettings.baseConfigURL + configFileName + "). Creating local file instead.");
                xmlConfig.SetFileName(configFileName);
                xmlConfig.LoadData();
            }
        }

        public void LoadDataFromString(string data)
        {
            xmlConfig.LoadDataFromString(data);
            
        }

        public string GetAttribute(string attributeName)
        {
            return xmlConfig.GetAttribute(attributeName);
        }

        public bool SetAttribute(string attributeName, string attributeValue)
        {
            return true;
        }

        public void Commit()
        {
        }

        public void Close()
        {
        }
    }
}