public bool Upload(ICaptureDetails captureDetails, Image image) { using (MemoryStream stream = new MemoryStream()) { BackgroundForm backgroundForm = BackgroundForm.ShowAndWait(Attributes.Name, lang.GetString(LangKey.communication_wait)); host.SaveToStream(image, stream, config.UploadFormat, config.UploadJpegQuality); byte[] buffer = stream.GetBuffer(); try { string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, captureDetails)); string contentType = "image/" + config.UploadFormat.ToString(); PicasaInfo picasaInfo = PicasaUtils.UploadToPicasa(buffer, captureDetails.DateTime.ToString(), filename, contentType); if (config.PicasaUploadHistory == null) { config.PicasaUploadHistory = new Dictionary <string, string>(); } if (picasaInfo.ID != null) { LOG.InfoFormat("Storing Picasa upload for id {0}", picasaInfo.ID); config.PicasaUploadHistory.Add(picasaInfo.ID, picasaInfo.ID); config.runtimePicasaHistory.Add(picasaInfo.ID, picasaInfo); } picasaInfo.Image = PicasaUtils.CreateThumbnail(image, 90, 90); // Make sure the configuration is save, so we don't lose the deleteHash IniConfig.Save(); // Make sure the history is loaded, will be done only once PicasaUtils.LoadHistory(); // Show if (config.AfterUploadOpenHistory) { PicasaHistory.ShowHistory(); } if (config.AfterUploadLinkToClipBoard) { Clipboard.SetText(picasaInfo.LinkUrl(config.PictureDisplaySize)); } return(true); } catch (Google.GData.Client.InvalidCredentialsException eLo) { MessageBox.Show(lang.GetString(LangKey.InvalidCredentials)); } catch (Exception e) { MessageBox.Show(lang.GetString(LangKey.upload_failure) + " " + e.ToString()); } finally { backgroundForm.CloseDialog(); } } return(false); }
public static void LoadHistory() { if (config.runtimePicasaHistory == null) { return; } if (config.PicasaUploadHistory == null) { return; } if (config.runtimePicasaHistory.Count == config.PicasaUploadHistory.Count) { return; } // Load the Picasa history List <string> hashes = new List <string>(); foreach (string hash in config.PicasaUploadHistory.Keys) { hashes.Add(hash); } bool saveNeeded = false; foreach (string hash in hashes) { if (config.runtimePicasaHistory.ContainsKey(hash)) { // Already loaded continue; } try { PicasaInfo imgurInfo = PicasaUtils.RetrievePicasaInfo(hash); if (imgurInfo != null) { PicasaUtils.RetrievePicasaThumbnail(imgurInfo); config.runtimePicasaHistory.Add(hash, imgurInfo); } else { LOG.DebugFormat("Deleting not found Picasa {0} from config.", hash); config.PicasaUploadHistory.Remove(hash); saveNeeded = true; } } catch (Exception e) { LOG.Error("Problem loading Picasa history for hash " + hash, e); } } if (saveNeeded) { // Save needed changes IniConfig.Save(); } }
public static void RetrievePicasaThumbnail(PicasaInfo imgurInfo) { LOG.InfoFormat("Retrieving Picasa image for {0} with url {1}", imgurInfo.ID, imgurInfo); HttpWebRequest webRequest = (HttpWebRequest)NetworkHelper.CreatedWebRequest(imgurInfo.SquareThumbnailUrl); webRequest.Method = "GET"; webRequest.ServicePoint.Expect100Continue = false; using (WebResponse response = webRequest.GetResponse()) { Stream responseStream = response.GetResponseStream(); imgurInfo.Image = Image.FromStream(responseStream); } return; }
public static void DeletePicasaImage(PicasaInfo picasaInfo) { // Make sure we remove it from the history, if no error occured config.runtimePicasaHistory.Remove(picasaInfo.ID); config.PicasaUploadHistory.Remove(picasaInfo.ID); PicasaEntry picasaEntry = RetrievePicasaEntry(picasaInfo.ID); if (picasaEntry != null) { picasaEntry.Delete(); } picasaInfo.Image = null; }
public static PicasaInfo RetrievePicasaInfo(PicasaEntry picasaEntry) { PhotoAccessor photoAccessor = new PhotoAccessor(picasaEntry); LOG.InfoFormat("Retrieving Picasa info for {0}", photoAccessor.Id); PicasaInfo picasaInfo = new PicasaInfo(); picasaInfo.ID = photoAccessor.Id; picasaInfo.Title = picasaEntry.Title.Text; picasaInfo.Timestamp = picasaEntry.Updated; picasaInfo.Description = picasaEntry.Summary.Text; picasaInfo.SquareThumbnailUrl = picasaEntry.Media.Thumbnails[0].Url; picasaInfo.OriginalUrl = picasaEntry.Media.Content.Url; List <AtomLink> links = picasaEntry.Links.Where(r => r.Type.Equals("text/html", StringComparison.OrdinalIgnoreCase)).ToList(); picasaInfo.WebUrl = string.Empty; if (links.Count > 0) { picasaInfo.WebUrl = links.First().HRef.ToString(); } return(picasaInfo); }
public static PicasaInfo RetrievePicasaInfo(PicasaEntry picasaEntry) { PhotoAccessor photoAccessor = new PhotoAccessor(picasaEntry); LOG.InfoFormat("Retrieving Picasa info for {0}", photoAccessor.Id); PicasaInfo picasaInfo = new PicasaInfo(); picasaInfo.ID = photoAccessor.Id; picasaInfo.Title = picasaEntry.Title.Text; picasaInfo.Timestamp = picasaEntry.Updated; picasaInfo.Description = picasaEntry.Summary.Text; picasaInfo.SquareThumbnailUrl = picasaEntry.Media.Thumbnails[0].Url; picasaInfo.OriginalUrl = picasaEntry.Media.Content.Url; List<AtomLink> links = picasaEntry.Links.Where(r => r.Type.Equals("text/html", StringComparison.OrdinalIgnoreCase)).ToList(); picasaInfo.WebUrl = string.Empty; if (links.Count > 0) { picasaInfo.WebUrl = links.First().HRef.ToString(); } return picasaInfo; }