minep-request 0.0.1
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.
- data/lib/minep-request.rb +1 -0
- data/lib/minep.rb +9 -0
- data/lib/minep/connection.rb +37 -0
- data/lib/minep/minep.rb +10 -0
- data/lib/minep/request.rb +39 -0
- data/lib/minep/utils.rb +52 -0
- metadata +50 -0
@@ -0,0 +1 @@
|
|
1
|
+
require 'minep'
|
data/lib/minep.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module MINEP
|
2
|
+
class Connection < EM::Connection
|
3
|
+
def initialize request
|
4
|
+
super
|
5
|
+
@request = ["#{request[:header][:head]}\n"]
|
6
|
+
request[:header].each do |key, value|
|
7
|
+
if key == :head
|
8
|
+
next
|
9
|
+
elsif key == :contentType
|
10
|
+
@request << "Content-Type: #{value}\n"
|
11
|
+
elsif key == :contentLength
|
12
|
+
@request << "Content-Length: #{value}\n"
|
13
|
+
else
|
14
|
+
@request << "#{key.to_s.capitalize}: #{value}\n"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
@request << "\n"
|
18
|
+
key = request[:body].keys[0]
|
19
|
+
rqst = "#{key.to_s.upcase}="
|
20
|
+
rqst += "#{JSON.dump request[:body][key]}\n"
|
21
|
+
@request << rqst
|
22
|
+
@request = @request.join
|
23
|
+
end
|
24
|
+
|
25
|
+
def post_init
|
26
|
+
send_data @request
|
27
|
+
end
|
28
|
+
|
29
|
+
def receive_data data
|
30
|
+
puts data
|
31
|
+
end
|
32
|
+
|
33
|
+
def unbind
|
34
|
+
EventMachine::stop_event_loop
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/minep/minep.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module MINEP
|
2
|
+
module Request
|
3
|
+
def self.authenticate request, opts={}
|
4
|
+
return false if opts.empty?
|
5
|
+
return false if opts[:name].nil? or opts[:pass].nil?
|
6
|
+
Utils.makeAuthenticate request, opts
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.signup request, opts={}
|
10
|
+
return false if opts.empty?
|
11
|
+
return false if opts[:name].nil? or opts[:pass].nil? or opts[:email].nil?
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.exec request, opts={}
|
15
|
+
return false if opts.empty?
|
16
|
+
return false if opts[:buffer].nil? or opts[:command].nil? or opts[:args].nil?
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.insert request, opts={}
|
20
|
+
return false if opts.empty?
|
21
|
+
return false if opts[:buffer].nil? or opts[:text].nil?
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.move request, opts={}
|
25
|
+
return false if opts.empty?
|
26
|
+
return false if opts[:buffer].nil? or opts[:direction].nil? or opts[:number].nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.backspace request, opts={}
|
30
|
+
return false if opts.empty?
|
31
|
+
return false if opts[:buffer].nil? or opts[:number].nil?
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.delete request, opts={}
|
35
|
+
return false if opts.empty?
|
36
|
+
return false if opts[:buffer].nil? or opts[:number].nil?
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/minep/utils.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
module MINEP
|
2
|
+
module Utils
|
3
|
+
def self.makeRequest request, type, opts
|
4
|
+
Utils.getHeader request, opts[:host], opts[:port]
|
5
|
+
case type
|
6
|
+
when :authenticate then Request.authenticate request, opts
|
7
|
+
when :signup then Request.signup request, opts
|
8
|
+
when :exec then Request.exec request, opts
|
9
|
+
when :insert then Request.insert request, opts
|
10
|
+
when :move then Request.move request, opts
|
11
|
+
when :backspace then Request.backspace request, opts
|
12
|
+
when :delete then Request.delete request, opts
|
13
|
+
else
|
14
|
+
false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.getHeader request, host=nil, port=nil
|
19
|
+
host = "localhost" if host.nil?
|
20
|
+
port = 8080 if host.nil?
|
21
|
+
request[:header] = {
|
22
|
+
:head => "POST /mine/protocol/request HTTP/1.1",
|
23
|
+
:host => "#{host}:#{port}",
|
24
|
+
:connection => "Keep-Alive",
|
25
|
+
:contentType => "application/x-www-form-urlencoded",
|
26
|
+
:contentLength => 0
|
27
|
+
}
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.calcLength request
|
32
|
+
rqst = request[:body].keys[0]
|
33
|
+
cL = rqst.size # rqst
|
34
|
+
cL += 3 # ={..}
|
35
|
+
request[:body][rqst].each do |key, value| # ..
|
36
|
+
cL += 6 + key.size + value.size # "key":"value",
|
37
|
+
end
|
38
|
+
cL -= 1 # the loop counts one inexistant ','
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.makeAuthenticate request, options
|
42
|
+
request[:body] = {
|
43
|
+
:authenticate => {
|
44
|
+
:name => options[:name],
|
45
|
+
:pass => options[:pass]
|
46
|
+
}
|
47
|
+
}
|
48
|
+
request[:header][:contentLength] = calcLength request
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minep-request
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matthieu Ciappara
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-09 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Allows to communicate with a MINE server
|
15
|
+
email: ciappam@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/minep.rb
|
21
|
+
- lib/minep-request.rb
|
22
|
+
- lib/minep/connection.rb
|
23
|
+
- lib/minep/minep.rb
|
24
|
+
- lib/minep/request.rb
|
25
|
+
- lib/minep/utils.rb
|
26
|
+
homepage: https://github.com/Ezveus/minep-request
|
27
|
+
licenses: []
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.24
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: Allows to communicate with a MINE server
|
50
|
+
test_files: []
|