Pprf.vala 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. public static int main(string[] args) {
  2. var creds = new Ppub.CollectionMemberCredentials.from_string("PPCLMC\nPKSIG EDXLsUvOZEne+xcv+huvSaqNBs8TTldCv6hd69GdmYw=\nPKENC WF6pIAlSeol1Ikpr2N5iO8fsjoFGf02DGafJ/aBuSB4=\nSKSIG 0njSgyndiE1tND5IGM8rrd/6QQQ284mDYGarkjfK57MQNcuxS85kSd77Fy/6G69Jqo0GzxNOV0K/qF3r0Z2ZjA==\nSKENC R18jlqqbdjmf4lbocONVudFfNoB+mhSe+iffoH8DEN4=");
  3. // var uri = new Ppub.CollectionUri.from_string(args[2]);
  4. var collection_id = new Invercargill.BinaryData.from_base64("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk="); // new Invercargill.BinaryData.from_byte_array(uri.collection_id); //new Invercargill.BinaryData.from_base64("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk=");
  5. var client = new Pprf.HttpPprfClient("http://localhost:8080/");
  6. var results = client.get_listing(collection_id, 0, 10, Pprf.Messages.ListingColumn.TITLE | Pprf.Messages.ListingColumn.AUTHOR | Pprf.Messages.ListingColumn.POSTER);
  7. foreach (var result in results.results) {
  8. print(@"\t$(result.name): $(result.metadata.title) by $(result.metadata.author)");
  9. if(result.metadata.poster != null) {
  10. print(@" ($(result.metadata.poster))\n");
  11. var save = File.new_for_path("image").create(FileCreateFlags.REPLACE_DESTINATION);
  12. var asset = client.get_asset (collection_id, result.name, result.metadata.poster);
  13. print(@"Downloading $(result.metadata.poster) ($(asset.mime_type)) $(asset.asset_data.body_size)\n");
  14. asset.asset_data.write_to (save);
  15. print(@"Downloading PPUB\n");
  16. var save2 = File.new_for_path("ppub").create(FileCreateFlags.REPLACE_DESTINATION);
  17. var pub = client.get_publication(collection_id, result.name);
  18. pub.ppub_data.write_to(save2);
  19. }
  20. else{
  21. print("\n");
  22. }
  23. }
  24. return 0;
  25. var upload_file = File.new_for_path(args[1]);
  26. var file_size = upload_file.query_info("*", FileQueryInfoFlags.NONE).get_size();
  27. var file_name = upload_file.get_basename();
  28. var collection = client.get_collection(collection_id);
  29. var member = Pprf.MemberIdentity.get_usable_identities(Invercargill.single(creds), collection).first_or_default();
  30. if(member == null) {
  31. print("No usable identity\n");
  32. return -2;
  33. }
  34. // print(@"Acting as $(member.name) on $uri\n");
  35. print("Regisering name\n");
  36. var exists = false;
  37. try {
  38. client.register_name(collection_id, file_name, member);
  39. }
  40. catch(Pprf.Messages.PprfFailureError.NAME_EXISTS e) {
  41. print("Name already exists, will overwrite\n");
  42. exists = true;
  43. }
  44. print("Beginning upload\n");
  45. var file_stream = upload_file.read();
  46. var flags = exists ? Pprf.Messages.FinaliseUploadFlags.OVERWRITE_DESTINATION : 0;
  47. client.upload(collection_id, file_stream, file_size, file_name, exists, member, cb, flags);
  48. print("Computing publication signature\n");
  49. var digest = Pprf.Util.file_checksum(upload_file);
  50. var publication = new Ppub.CollectionPublication(file_name, new DateTime.now_local(), member.name, creds, digest);
  51. print("Publishing publication\n");
  52. client.publish(collection_id, publication, member);
  53. print("Rebuilding index\n");
  54. client.rebuild_index(collection_id, member);
  55. print("Done\n");
  56. return 0;
  57. }
  58. void cb(uint64 sent, uint64 total, Pprf.UploadStatus status) {
  59. var percent = (int)(((float)sent / (float)total)*100);
  60. print(@"Callback: $sent / $total\t\t$percent%\t$status\n");
  61. }