Example #1
0
        private IActionResult LikeOrUnlikeTweet(string tweetId, bool value)
        {
            var tweetLike = new TweetLikeData
            {
                TweetId    = tweetId,
                PublicKey  = Base58.Bitcoin.Encode(_publicKey.Bytes),
                PostedDate = DateTime.UtcNow
            };

            var signatureBytes = _cryptoWrapper.StdSign(_privateKey,
                                                        Encoding.UTF8.GetBytes($"{tweetLike.TweetId}{tweetLike.PublicKey}{value}{tweetLike.PostedDate}"),
                                                        _signingContext.ToByteArray()).SignatureBytes;

            tweetLike.Signature = Base58.Bitcoin.Encode(signatureBytes);

            var client   = new RestClient(_twitterModuleConfig.TwitterLikesApiUrl);
            var endpoint = value ? "Like" : "Unlike";
            var request  = new RestRequest($"/api/TweetLike/{endpoint}");

            request.AddJsonBody(tweetLike);
            var response = client.Post(request);

            if (!response.IsSuccessful)
            {
                return(BadRequest(response.ErrorMessage));
            }

            return(Ok());
        }
Example #2
0
        public IActionResult Unlike(TweetLikeData tweetLikeData)
        {
            if (_tweetLikeService.Unlike(tweetLikeData))
            {
                return(Ok());
            }

            return(BadRequest());
        }
        private TweetLike MapTweetLikeToTweetLikeData(TweetLikeData tweetLikeData)
        {
            var tweetLike = new TweetLike
            {
                TweetId    = tweetLikeData.TweetId,
                PublicKey  = tweetLikeData.PublicKey,
                Signature  = tweetLikeData.Signature,
                PostedDate = tweetLikeData.PostedDate
            };

            return(tweetLike);
        }
        private bool UpdateOrCreateTweetLike(TweetLikeData tweetLikeData, bool value)
        {
            var tweetLike = MapTweetLikeToTweetLikeData(tweetLikeData);

            tweetLike.Value = value;

            if (UpdateTweetLikeIfExists(tweetLike))
            {
                return(true);
            }

            tweetLike.DocumentId = Guid.NewGuid().ToString();
            _tweetLikeRepository.Add(tweetLike);
            return(true);
        }
 public bool Unlike(TweetLikeData tweetLikeData)
 {
     return(UpdateOrCreateTweetLike(tweetLikeData, false));
 }
 public bool Like(TweetLikeData tweetLikeData)
 {
     return(UpdateOrCreateTweetLike(tweetLikeData, true));
 }