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.
@@ -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: []