Zaczynam od pierwszej aplikacji javascript GTK i chcę pobrać plik i śledzić jego postępy za pomocą Gtk.ProgressBar. Jedynymi docs mogę znaleźć o żądań HTTP są niektóre przykładowy kod tutaj:Korzystając z programu gjs, jak utworzyć asynchroniczne żądanie http, aby pobrać plik w porcjach?
http://developer.gnome.org/gnome-devel-demos/unstable/weatherGeonames.js.html.en
I trochę mylące odniesienia Soup tutaj:
http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Soup.SessionAsync.html
Z tego co mogę zebrać, mogę coś zrobić w następujący sposób:
const Soup = imports.gi.Soup;
var _httpSession = new Soup.SessionAsync();
Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());
var request = Soup.Message.new('GET', url);
_httpSession.queue_message(request, function(_httpSession, message) {
print('download is done');
}
Po uruchomieniu pobierania wydaje się, że jest wywołanie zwrotne, a nie mogę znaleźć dowolny sposób ustawienia funkcji zwrotnej dla jakichkolwiek zdarzeń danych. Jak mogę to zrobić?
To jest naprawdę łatwe w node.js:
var req = http.request(url, function(res){
console.log('download starting');
res.on('data', function(chunk) {
console.log('got a chunk of '+chunk.length+' bytes');
});
});
req.end();