public void Share(Action <MinusResult.Share> galleryCreated) { // create a couple of things we're going to need between requests CreateGalleryResult galleryCreatedResult = null; // set up the listeners for CREATE api.CreateGalleryFailed += (sender, e) => LogError(Resources.CreateGalleryFailed, e); api.CreateGalleryComplete += (sender, result) => { // gallery created, trigger upload of the first file galleryCreatedResult = result; LogInfo(Resources.GalleryCreated); LogInfo(Resources.UploadingFiles); FileInfo file = new FileInfo(queuedFiles[uploadedFiles.Count]); LogInfo(Resources.UploadingFile + file.Name + "..."); api.UploadItem(result.EditorId, result.Key, queuedFiles[0]); }; // set up the listeners for UPLOAD api.UploadItemFailed += (sender, e) => LogError(Resources.UploadFailed, e); api.UploadItemComplete += (sender, result) => { // upload complete, either trigger another upload or save the gallery if all files have been uploaded LogInfo(Resources.UploadSuccessful); uploadedFiles.Add(result.Id); if (uploadedFiles.Count == queuedFiles.Count) { // if all the elements are uploaded, then save the gallery LogInfo(Resources.AllUploadSuccessful); api.SaveGallery(title ?? "", galleryCreatedResult.EditorId, galleryCreatedResult.Key, uploadedFiles.ToArray()); } else { // otherwise just keep uploading FileInfo file = new FileInfo(queuedFiles[uploadedFiles.Count]); LogInfo(Resources.UploadingFile + file.Name + "..."); api.UploadItem(galleryCreatedResult.EditorId, galleryCreatedResult.Key, file.FullName); } }; // set up the listeners for SAVE api.SaveGalleryFailed += (sender, e) => LogError(Resources.SaveGalleryFailed, e); api.SaveGalleryComplete += sender => { string readUrl = BaseUrl + galleryCreatedResult.ReaderId; string editUrl = BaseUrl + galleryCreatedResult.EditorId; LogInfo(Resources.GallerySaved); galleryCreated(new MinusResult.Share { EditUrl = editUrl, ShareUrl = readUrl }); }; if (LoginStatus == LoginStatus.Successful) { api.CreateGallery(cookie); } else { api.CreateGallery(); } }
/// <summary> /// Tests the full scope of methods in the API. /// This method creates a gallery, uploads a couple of items, saves them and then retrieves them. /// Make sure you change the values of the items in the "items" array to match actually valid files or this /// will fail. /// </summary> private static void TestAll() { // The call that triggers the program is the near the end of this method // (the rest is pretty much setup to react to events) // create the API MinusApi api = new MinusApi(API_KEY); // Prepare the items to be uploaded String[] items = { @"C:\Users\bruno\Desktop\clown.png", @"C:\Users\bruno\Desktop\small.png" }; IList <String> uploadedItems = new List <String>(items.Length); // create a couple of things we're going to need between requests CreateGalleryResult galleryCreated = null; // set up the listeners for CREATE api.CreateGalleryFailed += delegate(MinusApi sender, Exception e) { // don't do anything else... Console.WriteLine("Failed to create gallery..." + e.Message); }; api.CreateGalleryComplete += delegate(MinusApi sender, CreateGalleryResult result) { // gallery created, trigger upload of the first file galleryCreated = result; Console.WriteLine("Gallery created! " + result); Thread.Sleep(1000); Console.WriteLine("Uploading files..."); api.UploadItem(result.EditorId, result.Key, items[0]); }; // set up the listeners for UPLOAD api.UploadItemFailed += delegate(MinusApi sender, Exception e) { // don't do anything else... Console.WriteLine("Upload failed: " + e.Message); }; api.UploadItemComplete += delegate(MinusApi sender, UploadItemResult result) { // upload complete, either trigger another upload or save the gallery if all files have been uploaded Console.WriteLine("Upload successful: " + result); uploadedItems.Add(result.Id); if (uploadedItems.Count == items.Length) { // if all the elements are uploaded, then save the gallery Console.WriteLine("All uploads complete, saving gallery..."); api.SaveGallery("testGallery", galleryCreated.EditorId, galleryCreated.Key, uploadedItems.ToArray()); } else { // otherwise just keep uploading Console.WriteLine("Uploading item " + (uploadedItems.Count + 1)); api.UploadItem(galleryCreated.EditorId, galleryCreated.Key, items[uploadedItems.Count]); } }; // set up the listeners for SAVE api.SaveGalleryFailed += delegate(MinusApi sender, Exception e) { Console.WriteLine("Failed to save gallery... " + e.Message); }; api.SaveGalleryComplete += delegate(MinusApi sender) { // The extra "m" is appended because minus uses the first character to determine the type of data // you're accessing (image, gallery, etc) and route you accordingly. Console.WriteLine("Gallery saved! You can now access it at http://min.us/m" + galleryCreated.ReaderId); api.SignIn("123test123", "123test123"); }; //set up listeners for SignIn api.SignInFailed += delegate(MinusApi sender, Exception e) { Console.WriteLine("Failed to Sign In... " + e.Message); }; api.SignInComplete += delegate(MinusApi sender, SignInResult result) { Console.WriteLine("Signed In: " + result.Success); }; // this is the call that actually triggers the whole program api.CreateGallery(); }