spyce 1.0.2 copy "spyce: ^1.0.2" to clipboard
spyce: ^1.0.2 copied to clipboard

outdated

An open source and collaborative framework for data collection in a fast, simple, yet extensible way.

example/spyce_example.dart

import 'dart:convert';

import 'package:http/http.dart' as http;
import 'package:spyce/spyce.dart';

class Languages extends Job {
  static const decoder = JsonDecoder();
  String owner, repo;

  Languages(this.owner, this.repo)
      : super('https://api.github.com/repos/$owner/$repo/languages');

  @override
  Stream<Pipeline> exec(Service service) async* {
    var languages = decoder.convert((await service['http'].get(name)).body);
    print(languages);
  }
}

class Repos extends Job {
  static const decoder = JsonDecoder();
  String owner;

  Repos(this.owner) : super('https://api.github.com/users/$owner/repos');

  @override
  Stream<Pipeline> exec(Service service) async* {
    var repos = decoder.convert((await service['http'].get(name)).body);
    yield Pipeline.fromJobs(name, () sync* {
      for (var repo in repos) {
        yield Languages(owner, repo['name']);
      }
    }());
  }
}

Future<void> main(List<String> args) async {
  var owner = args.isNotEmpty ? args[0] : 'github';
  var service = Service();
  service['http'] = http.Client();
  var runnerA = Runner('runnerA', service, 2);
  var runnerB = Runner('runnerB', service, 2);
  var spyce = Spyce('spyce');
  spyce.addRunner(runnerA);
  spyce.addRunner(runnerB);
  spyce.dumpStream.listen(print);
  spyce.logStream.listen(print);
  spyce.addPipeline(Pipeline.fromJob(Repos(owner)));
}
0
likes
30
pub points
0%
popularity

Publisher

unverified uploader

An open source and collaborative framework for data collection in a fast, simple, yet extensible way.

Repository (GitHub)
View/report issues

License

Apache-2.0 (LICENSE)

More

Packages that depend on spyce