Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void default_handler (Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) {
- unowned ProxyServer self = server as ProxyServer;
- uint id = self.access_counter++;
- stdout.printf ("Default handler start (%u)\n", id);
- // Simulate asynchronous input / time consuming operations:
- // See GLib.IOSchedulerJob for time consuming operations
- Timeout.add_seconds (0, () => {
- stdout.printf(msg.uri.to_string(false)+"\n");
- stdout.printf(msg.uri.get_path()+"\n");
- int messagelog_id = self.ms.store_message(msg);
- Soup.SessionAsync session = new Soup.SessionAsync ();
- Soup.Message target_msg = new Soup.Message.from_uri (msg.method, msg.uri);
- msg.request_headers.foreach((name, val) => {
- target_msg.request_headers.append(name,val);
- });
- session.queue_message (target_msg,(sess, target_msg_incoming) =>{
- target_msg_incoming.response_headers.foreach ((name, val) => {
- stdout.printf ("%s = %s\n", name, val);
- });
- stdout.printf ("Status Code: %u\n", target_msg_incoming.status_code);
- stdout.printf ("Message length: %lld\n", target_msg_incoming.response_body.length);
- //stdout.printf ("Data: \n%s\n", (string) target_msg_incoming.response_body.data);
- stdout.printf ("Content-type: %s\n", target_msg_incoming.response_headers.get_content_type(null));
- string content_type = target_msg_incoming.response_headers.get_content_type(null);
- msg.set_response (content_type, Soup.MemoryUse.COPY, target_msg_incoming.response_body.data);
- msg.set_status (target_msg_incoming.status_code);
- target_msg_incoming.response_headers.foreach((name, val) => {
- if (name != "Date"){
- msg.response_headers.append(name,val);
- }
- });
- if (content_type == "(null)") {
- msg.response_headers.remove("Content-type");
- }
- self.ms.complete_message(messagelog_id, msg);
- // Resumes HTTP I/O on msg:
- self.unpause_message (msg);
- });
- stdout.printf ("Default handler end (%u)\n", id);
- return false;
- }, Priority.DEFAULT);
- // Pauses HTTP I/O on msg:
- self.pause_message (msg);
- }
Advertisement
Add Comment
Please, Sign In to add comment