tootle-linux-client/src/NetManager.vala

59 lines
1.8 KiB
Vala
Raw Normal View History

2018-04-14 14:09:06 +02:00
using Soup;
using GLib;
using Json;
public class Tootle.NetManager : GLib.Object{
public abstract signal void started();
public abstract signal void finished();
private int requests_processing = 0;
private Soup.Session session;
construct{
session = new Soup.Session ();
session.request_unqueued.connect (() => {
requests_processing--;
if(requests_processing <= 0)
finished ();
});
}
public NetManager(){
GLib.Object();
}
public Soup.Message queue(Soup.Message msg, Soup.SessionCallback cb){
requests_processing++;
started ();
2018-04-27 20:50:08 +02:00
var token = Tootle.settings.access_token;
2018-04-14 14:09:06 +02:00
if(token != "null")
msg.request_headers.append ("Authorization", "Bearer " + token);
session.queue_message (msg, cb);
return msg;
}
2018-04-27 20:50:08 +02:00
public Json.Object parse(Soup.Message msg) throws GLib.Error{
2018-04-16 20:22:42 +02:00
// stdout.printf ("Status Code: %u\n", msg.status_code);
// stdout.printf ("Message length: %lld\n", msg.response_body.length);
2018-04-25 16:30:44 +02:00
// stdout.printf ("Object: \n%s\n", (string) msg.response_body.data);
2018-04-14 14:09:06 +02:00
var parser = new Json.Parser ();
parser.load_from_data ((string) msg.response_body.flatten ().data, -1);
return parser.get_root ().get_object ();
}
2018-04-27 20:50:08 +02:00
public Json.Array parse_array(Soup.Message msg) throws GLib.Error{
2018-04-16 20:22:42 +02:00
// stdout.printf ("Status Code: %u\n", msg.status_code);
// stdout.printf ("Message length: %lld\n", msg.response_body.length);
2018-04-25 16:30:44 +02:00
// stdout.printf ("Array: \n%s\n", (string) msg.response_body.data);
2018-04-14 14:09:06 +02:00
var parser = new Json.Parser ();
parser.load_from_data ((string) msg.response_body.flatten ().data, -1);
return parser.get_root ().get_array ();
}
}