public static int main(string[] args) { var creds = new Ppub.CollectionMemberCredentials.from_string("PPCLMC\nPKSIG EDXLsUvOZEne+xcv+huvSaqNBs8TTldCv6hd69GdmYw=\nPKENC WF6pIAlSeol1Ikpr2N5iO8fsjoFGf02DGafJ/aBuSB4=\nSKSIG 0njSgyndiE1tND5IGM8rrd/6QQQ284mDYGarkjfK57MQNcuxS85kSd77Fy/6G69Jqo0GzxNOV0K/qF3r0Z2ZjA==\nSKENC R18jlqqbdjmf4lbocONVudFfNoB+mhSe+iffoH8DEN4="); // var uri = new Ppub.CollectionUri.from_string(args[2]); 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="); var client = new Pprf.HttpPprfClient("http://localhost:8080/"); var results = client.get_listing(collection_id, 0, 10, Pprf.Messages.ListingColumn.TITLE | Pprf.Messages.ListingColumn.AUTHOR | Pprf.Messages.ListingColumn.POSTER); foreach (var result in results.results) { print(@"\t$(result.name): $(result.metadata.title) by $(result.metadata.author)"); if(result.metadata.poster != null) { print(@" ($(result.metadata.poster))\n"); var save = File.new_for_path("image").create(FileCreateFlags.REPLACE_DESTINATION); var asset = client.get_asset (collection_id, result.name, result.metadata.poster); print(@"Downloading $(result.metadata.poster) ($(asset.mime_type)) $(asset.asset_data.body_size)\n"); asset.asset_data.write_to (save); print(@"Downloading PPUB\n"); var save2 = File.new_for_path("ppub").create(FileCreateFlags.REPLACE_DESTINATION); var pub = client.get_publication(collection_id, result.name); pub.ppub_data.write_to(save2); } else{ print("\n"); } } return 0; var upload_file = File.new_for_path(args[1]); var file_size = upload_file.query_info("*", FileQueryInfoFlags.NONE).get_size(); var file_name = upload_file.get_basename(); var collection = client.get_collection(collection_id); var member = Pprf.MemberIdentity.get_usable_identities(Invercargill.single(creds), collection).first_or_default(); if(member == null) { print("No usable identity\n"); return -2; } // print(@"Acting as $(member.name) on $uri\n"); print("Regisering name\n"); var exists = false; try { client.register_name(collection_id, file_name, member); } catch(Pprf.Messages.PprfFailureError.NAME_EXISTS e) { print("Name already exists, will overwrite\n"); exists = true; } print("Beginning upload\n"); var file_stream = upload_file.read(); var flags = exists ? Pprf.Messages.FinaliseUploadFlags.OVERWRITE_DESTINATION : 0; client.upload(collection_id, file_stream, file_size, file_name, exists, member, cb, flags); print("Computing publication signature\n"); var digest = Pprf.Util.file_checksum(upload_file); var publication = new Ppub.CollectionPublication(file_name, new DateTime.now_local(), member.name, creds, digest); print("Publishing publication\n"); client.publish(collection_id, publication, member); print("Rebuilding index\n"); client.rebuild_index(collection_id, member); print("Done\n"); return 0; } void cb(uint64 sent, uint64 total, Pprf.UploadStatus status) { var percent = (int)(((float)sent / (float)total)*100); print(@"Callback: $sent / $total\t\t$percent%\t$status\n"); }