minep-request 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ require 'minep'
@@ -0,0 +1,9 @@
1
+ # Requiring external gems
2
+ require 'eventmachine'
3
+ require 'json'
4
+
5
+ # Requiring internal files
6
+ require 'minep/minep'
7
+ require 'minep/request'
8
+ require 'minep/utils'
9
+ require 'minep/connection'
@@ -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
@@ -0,0 +1,10 @@
1
+ module MINEP
2
+ def self.send type, opts={}
3
+ request = {}
4
+ return false unless Utils.makeRequest request, type, opts
5
+ EM.run do
6
+ EM.connect(opts[:host] || "localhost",
7
+ opts[:port] || 8080, Connection, request)
8
+ end
9
+ end
10
+ end
@@ -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
@@ -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: []