コード例 #1
0
ファイル: Vote.ashx.cs プロジェクト: jkuemerle/DoorComp
 private VoteInfo ParsePayload(HttpRequest Request)
 {
     var vi = new VoteInfo();
     vi.DoorID = Request.Params["DoorID"];
     vi.EventCode = Request.Params["EventCode"];
     vi.Payload.Headers = Request.Headers;
     vi.Payload.IP = Request.UserHostAddress;
     return vi;
 }
コード例 #2
0
ファイル: VoteSource.SQL.cs プロジェクト: jkuemerle/DoorComp
 private void AddVote(VoteInfo Vote)
 {
     var id = CalculateVoterID(Vote);
     if(!string.IsNullOrEmpty(id))
     {
         if (null == _conn)
             InitConnection();
         using (var cmd = new SqlCommand("MERGE INTO Votes AS A " +
             "USING (SELECT @DoorID AS DoorID, @VoterID AS VoterID) B ON (A.DoorID  = B.DoorID) AND (A.VoterID = B.VoterID)" +
             "WHEN NOT MATCHED THEN " +
             "INSERT (DoorID, VoterID) VALUES(@DoorID, @VoterID);"))
         {
             cmd.Parameters.Add(new SqlParameter("@DoorID", Vote.DoorID));
             cmd.Parameters.Add(new SqlParameter("@VoterID", id));
             if (_conn.State != System.Data.ConnectionState.Open)
                 _conn.Open();
             cmd.Connection = _conn;
             cmd.ExecuteNonQuery();
         }
     }
 }
コード例 #3
0
ファイル: VoteSource.SQL.cs プロジェクト: jkuemerle/DoorComp
 public bool PostVote(VoteInfo Vote)
 {
     AddVote(Vote);
     return true;
 }
コード例 #4
0
ファイル: VoteSource.SQL.cs プロジェクト: jkuemerle/DoorComp
 private string CalculateVoterID(VoteInfo Vote)
 {
     if (!string.IsNullOrEmpty(Vote.VoterID))
         return HashValue(Vote.VoterID, _hashSalt);
     StringBuilder sb = new StringBuilder();
     sb.AppendLine(Vote.Payload.IP);
     foreach (var h in Vote.Payload.Headers.AllKeys)
         sb.AppendFormat("{0}:{1}\r\n", h, Vote.Payload.Headers[h]);
     foreach (var c in Vote.Payload.Cookies)
         sb.AppendFormat("{0}:{1}\r\n", c.Key, c.Value);
     if (sb.Length > 0)
         return HashValue(sb.ToString(), _hashSalt);
     return string.Empty;
 }
コード例 #5
0
ファイル: MockVoteSource.cs プロジェクト: jkuemerle/DoorComp
 public bool PostVote(VoteInfo Vote)
 {
     _votes.Add(Vote);
     return true;
 }