Guest User

Untitled

a guest
Oct 27th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 2.85 KB | None | 0 0
  1. private static void default_handler (Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
  2.             unowned ProxyServer self = server as ProxyServer;
  3.  
  4.             uint id = self.access_counter++;
  5.             stdout.printf ("Default handler start (%u)\n", id);
  6.  
  7.             // Simulate asynchronous input / time consuming operations:
  8.             // See GLib.IOSchedulerJob for time consuming operations
  9.             Timeout.add_seconds (0, () => {
  10.                 stdout.printf(msg.uri.to_string(false)+"\n");
  11.                 stdout.printf(msg.uri.get_path()+"\n");
  12.  
  13.                 int messagelog_id = self.ms.store_message(msg);
  14.  
  15.                 Soup.SessionAsync session = new Soup.SessionAsync ();
  16.  
  17.                 Soup.Message target_msg = new Soup.Message.from_uri (msg.method, msg.uri);
  18.                 msg.request_headers.foreach((name, val) => {
  19.                     target_msg.request_headers.append(name,val);
  20.                 });
  21.                 session.queue_message (target_msg,(sess, target_msg_incoming) =>{
  22.  
  23.                     target_msg_incoming.response_headers.foreach ((name, val) => {
  24.                     stdout.printf ("%s = %s\n", name, val);
  25.                     });
  26.                     stdout.printf ("Status Code: %u\n", target_msg_incoming.status_code);
  27.                     stdout.printf ("Message length: %lld\n", target_msg_incoming.response_body.length);
  28.                     //stdout.printf ("Data: \n%s\n", (string) target_msg_incoming.response_body.data);
  29.                     stdout.printf ("Content-type: %s\n", target_msg_incoming.response_headers.get_content_type(null));
  30.  
  31.                     string content_type = target_msg_incoming.response_headers.get_content_type(null);
  32.                    
  33.                     msg.set_response (content_type, Soup.MemoryUse.COPY, target_msg_incoming.response_body.data);
  34.                     msg.set_status (target_msg_incoming.status_code);
  35.  
  36.                     target_msg_incoming.response_headers.foreach((name, val) => {
  37.                         if (name != "Date"){
  38.                             msg.response_headers.append(name,val);
  39.                         }
  40.                     });
  41.                     if (content_type == "(null)") {
  42.                         msg.response_headers.remove("Content-type");
  43.                     }
  44.                    
  45.                     self.ms.complete_message(messagelog_id, msg);    
  46.                    
  47.                    
  48.                     // Resumes HTTP I/O on msg:
  49.                     self.unpause_message (msg);
  50.                    
  51.  
  52.  
  53.                 });
  54.                
  55.                 stdout.printf ("Default handler end (%u)\n", id);
  56.                 return false;
  57.             }, Priority.DEFAULT);
  58.  
  59.             // Pauses HTTP I/O on msg:
  60.             self.pause_message (msg);
  61.         }
Advertisement
Add Comment
Please, Sign In to add comment