コード例 #1
0
        public static void Send(IYoutubeAccount from, string to, string title, string message)
        {
            LOGGER.Info($"Sending mail from youtube account {from.Title} to recipient {to} with title {title}");
            LOGGER.Debug($"Message content: {message}");

            var token = YoutubeAccountService.GetAccessToken(from.Access, ac => ac.HasSendMailPrivilegue);

            if (!string.IsNullOrWhiteSpace(token) && !string.IsNullOrWhiteSpace(to))
            {
                LOGGER.Debug($"Access token found. Sending mail");

                // Wir können senden!
                HttpWebRequest request = HttpWebRequestCreator.CreateWithAuthHeader(
                    $"https://www.googleapis.com/gmail/v1/users/me/messages/send?key={from.Access.First(a => a.AccessToken == token).Client.Secret}",
                    "POST",
                    token
                    );
                request.ContentType = "application/json";

                string content = GenerateMail(to, title, message, true);

                RawMail mail = new RawMail()
                {
                    raw = Encode(content)
                };

                var rfcMail = JsonConvert.SerializeObject(mail);

                LOGGER.Debug($"rfc mail json: {rfcMail}");

                string     result     = null;
                SendResult sendResult = null;

                try
                {
                    result = WebService.Communicate(request, Encoding.UTF8.GetBytes(rfcMail));
                    LOGGER.Debug($"response from mail service: {result}");

                    sendResult = JsonConvert.DeserializeObject <SendResult>(result);
                }
                catch (Exception ex)
                {
                    LOGGER.Error($"Exception occured while sending the mail", ex);
                }

                if (sendResult == null || !sendResult.labelIds.Any(label => label.ToUpper() == "SENT"))
                {
                    LOGGER.Error($"Could not send the mail. Result: {result}");
                }
                else
                {
                    LOGGER.Error($"Mail was sent successfully");
                }
            }
        }
コード例 #2
0
        private HttpWebRequest CreateThumbnailUploadRequest()
        {
            var accessToken = Account.GetActiveToken();
            var secret      = Account.Access.First(a => a.AccessToken == accessToken).Client.Secret;

            var request = HttpWebRequestCreator.CreateWithAuthHeader(
                $"https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId={Video.Id}&key={secret}",
                "POST", accessToken);

            FileInfo file = new FileInfo(Video.ThumbnailPath);

            request.ContentLength = file.Length;
            request.ContentType   = MimeMapping.GetMimeMapping(Video.ThumbnailPath);
            return(request);
        }
コード例 #3
0
        private string InitializeUploadOnYoutube()
        {
            var    ytVideo = SerializableYoutubeVideo.Create(Video);
            string content = JsonConvert.SerializeObject(ytVideo);
            var    bytes   = Encoding.UTF8.GetBytes(content);

            var request = HttpWebRequestCreator.CreateWithAuthHeader(
                $"https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable"
                + $"&autoLevels={Video.AutoLevels}&notifySubscribers={Video.NotifySubscribers}"
                + $"&stabilize={Video.Stabilize}&part=snippet,status,contentDetails",
                "POST",
                Account.GetActiveToken());

            request.Headers.Add("Slug", Path.GetFileName(new string(Video.File.Name.Where(c => Convert.ToInt32(c) < 128).ToArray())));
            request.Headers.Add($"x-upload-content-length: {Video.File.Length}");
            request.Headers.Add($"x-upload-content-type: {MimeMapping.GetMimeMapping(Video.File.Name)}");

            request.ContentLength = bytes.Length;
            request.ContentType   = "application/json; charset=utf-8";

            return(WebService.Communicate(request, bytes, "Location"));
        }
コード例 #4
0
        public override bool IsValid(object value)
        {
            var uri = value as Uri;

            if (uri == null)
            {
                return(false);
            }
            try
            {
                var urlAttr = new UrlAttribute();
                if (!urlAttr.IsValid(uri.ToString()))
                {
                    ErrorMessage = urlAttr.ErrorMessage;
                    return(false);
                }
                try
                {
                    var request = new HttpWebRequestCreator().Create(uri);
                    using (var response = (HttpWebResponse)request.GetResponse())
                    {
                        return(response.StatusCode == HttpStatusCode.OK);
                    }
                }
                catch (WebException e)
                {
                    ErrorMessage = e.Message;
                    return(false);
                }
            }
            catch (UriFormatException e)
            {
                ErrorMessage = e.Message;
                return(false);
            }
        }