votifier-ruby 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9bb99cc5b35346803caea52745376caccb105eb
4
+ data.tar.gz: f68525dcf93a9b5202159f776323b132f9f23f6b
5
+ SHA512:
6
+ metadata.gz: 496f99496dc1c982875acf0db4964600adfdabc1e67e465dd107fdea3f82d7dc9487570a931f8dcf675ffee28e7aa80d45efc3c80a986df8518d83d752d23623
7
+ data.tar.gz: 4881372ecd641022229f1534f096f70bcfd6a99266d6a174fa7e7a02e41559ba158fce726576875726389c230eab955d720f300fd1355e1704b3752eb8d041f6
@@ -0,0 +1,10 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ require "votifier/version"
4
+ require "votifier/vote"
5
+ require "votifier/handler"
6
+ require "votifier/listener"
7
+ require "votifier/server"
8
+
9
+ require "socket"
10
+ require "openssl"
@@ -0,0 +1,27 @@
1
+ module Votifier
2
+ class ConnectionHandler
3
+
4
+ def initialize(session, key)
5
+ @session = session
6
+ @key = key
7
+ end
8
+
9
+ def run
10
+ # Send the latest compatible plugin version to the list
11
+ @session.puts "VOTIFIER #{Votifier::PLUGIN_VERSION}\n"
12
+
13
+ # Read and decrypt the 256 byte vote block
14
+ block = @session.read 256
15
+ result = @key.private_decrypt(block).split("\n")
16
+
17
+ # Perform opcode check
18
+ if result[0] != "VOTE"
19
+ raise ArgumentError, "Incorrect block opcode"
20
+ end
21
+
22
+ # Create the vote
23
+ Vote.new(result[1], result[2], result[3], result[4])
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ module Votifier
2
+ class VoteListener
3
+
4
+ def vote_received(vote)
5
+ end
6
+
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ module Votifier
2
+ class VoteServer
3
+
4
+ attr_reader :server
5
+ attr_accessor :listener
6
+
7
+ def initialize(host, port, key, listener)
8
+ @listener = listener
9
+ @server = TCPServer.new(host, port)
10
+ loop do
11
+ Thread.start(@server.accept) do |session|
12
+ vote = ConnectionHandler.new(session, key).run
13
+ listener.vote_received vote
14
+ end
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ module Votifier
2
+
3
+ VERSION = 1.0
4
+ PLUGIN_VERSION = 1.9
5
+
6
+ end
@@ -0,0 +1,14 @@
1
+ module Votifier
2
+ class Vote
3
+
4
+ attr_accessor :service, :player, :address, :time
5
+
6
+ def initialize(service, player, address, time)
7
+ @service = service
8
+ @player = player
9
+ @address = address
10
+ @time = time
11
+ end
12
+
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: votifier-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Kailan Blanks
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Implementation of the Votifier protocol in Ruby
14
+ email: kailan@komputerking.net
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/votifier.rb
20
+ - lib/votifier/handler.rb
21
+ - lib/votifier/listener.rb
22
+ - lib/votifier/server.rb
23
+ - lib/votifier/version.rb
24
+ - lib/votifier/vote.rb
25
+ homepage: https://github.com/kblanks/votifier-ruby
26
+ licenses: []
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.4.6
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Implementation of the Votifier protocol
48
+ test_files: []