client/src/Iri.Modernisation.Data/Models/HttpSender.cs
author totetm <>
Fri, 12 Feb 2010 16:22:57 +0100
changeset 47 9b26023b8c83
parent 38 bd33267300aa
permissions -rw-r--r--
Fixed| bug si on ferme un livre en le lisant ReFixed|faire fonctionner le seek, même quand play n'est pas activer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     1
using System;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     2
using System.Net;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     3
using System.Windows;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     4
using System.Windows.Controls;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     5
using System.Windows.Documents;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     6
using System.Windows.Ink;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     7
using System.Windows.Input;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     8
using System.Windows.Media;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
     9
using System.Windows.Media.Animation;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    10
using System.Windows.Shapes;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    11
using System.Collections.Generic;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    12
using System.IO;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    13
using System.Threading;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    14
namespace Iri.Modernisation.Data.Models
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    15
{
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    16
    public class HttpSender
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    17
    {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    18
        private HttpWebRequest Request { get; set; }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    19
        public Dictionary<string, string> PostValues { get; private set; }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    20
        public String Response { get; private set; }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    21
        
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    22
        public event HttpResponseCompleteEventHandler ResponseComplete;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    23
        private void OnResponseComplete(HttpResponseCompleteEventArgs e)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    24
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    25
            if (this.ResponseComplete != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    26
            {
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 35
diff changeset
    27
                ThreadPool.QueueUserWorkItem(new WaitCallback((Object o)=>this.ResponseComplete(e)));
bd33267300aa - FranceCulture Project
totetm <>
parents: 35
diff changeset
    28
               // this.ResponseComplete(e);
35
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    29
            }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    30
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    31
        private void OnResponseComplete()
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    32
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    33
            if (this.ResponseComplete != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    34
            {
38
bd33267300aa - FranceCulture Project
totetm <>
parents: 35
diff changeset
    35
                ThreadPool.QueueUserWorkItem(new WaitCallback((Object o) => new HttpResponseCompleteEventArgs(Response)));
35
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    36
                this.ResponseComplete(new HttpResponseCompleteEventArgs(Response));
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    37
            }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    38
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    39
        public HttpSender(Uri requestUri, string method, params KeyValuePair<string, string>[] postValues)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    40
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    41
            this.Request = (HttpWebRequest)WebRequest.Create(requestUri);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    42
            this.Request.ContentType = "application/x-www-form-urlencoded";
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    43
            this.Request.Method = method;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    44
            this.PostValues = new Dictionary<string, string>();
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    45
            if (postValues != null && postValues.Length > 0)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    46
            {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    47
                foreach (var item in postValues)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    48
                {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    49
                    this.PostValues.Add(item.Key, item.Value);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    50
                }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    51
            }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    52
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    53
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    54
        public void Execute()
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    55
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    56
            this.Request.BeginGetRequestStream(new AsyncCallback(BeginRequest), this);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    57
            
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    58
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    59
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    60
        private  void BeginRequest(IAsyncResult ar)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    61
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    62
            HttpSender helper = ar.AsyncState as HttpSender;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    63
            if (helper != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    64
            {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    65
                if (helper.PostValues.Count > 0)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    66
                {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    67
                    using (StreamWriter writer = new StreamWriter(helper.Request.EndGetRequestStream(ar)))
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    68
                    {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    69
                        foreach (var item in helper.PostValues)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    70
                        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    71
                            writer.Write("{0}={1}&", item.Key,item.Value);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    72
                        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    73
                       
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    74
                    }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    75
                }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    76
                helper.Request.BeginGetResponse(new AsyncCallback(BeginResponse), helper);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    77
            }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    78
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    79
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    80
        private  void BeginResponse(IAsyncResult ar)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    81
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    82
            HttpSender helper = ar.AsyncState as HttpSender;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    83
            if (helper != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    84
            {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    85
                HttpWebResponse response = (HttpWebResponse)helper.Request.EndGetResponse(ar);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    86
                if (response != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    87
                {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    88
                    Stream stream = response.GetResponseStream();
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    89
                    if (stream != null)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    90
                    {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    91
                        using (StreamReader reader = new StreamReader(stream))
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    92
                        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    93
                            helper.Response = reader.ReadToEnd();
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    94
                        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    95
                    }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    96
                }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    97
            }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    98
            this.OnResponseComplete();
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
    99
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   100
    }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   101
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   102
    public delegate void HttpResponseCompleteEventHandler(HttpResponseCompleteEventArgs e);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   103
    public class HttpResponseCompleteEventArgs : EventArgs
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   104
    {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   105
        public string Response { get; set; }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   106
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   107
        public HttpResponseCompleteEventArgs(string response)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   108
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   109
            this.Response = response;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   110
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   111
    }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   112
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   113
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   114
    /*
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   115
      using Of the class
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   116
      private void ProcessCommand(short cmd, string msg)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   117
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   118
            App app = App.Current as App;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   119
            HttpHelper helper = new HttpHelper(app.ServerUri, "POST", 
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   120
                new KeyValuePair<string, string>("authKey", app.AuthKey),
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   121
                new KeyValuePair<string, string>("cmd", cmd.ToString()),
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   122
                new KeyValuePair<string, string>("msg", msg));
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   123
            helper.ResponseComplete += new HttpResponseCompleteEventHandler(this.CommandComplete);
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   124
            helper.Execute();
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   125
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   126
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   127
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   128
        private void CommandComplete(HttpResponseCompleteEventArgs e)
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   129
        {
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   130
            txtAlert.Text = e.Response;
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   131
        }
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   132
     */
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   133
43bb1b8ed555 IRIFiles Class
totetm <>
parents:
diff changeset
   134
}