minep-request 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.dev.rb
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ coverage
7
+ InstalledFiles
8
+ lib/bundler/man
9
+ pkg
10
+ rdoc
11
+ spec/reports
12
+ test/tmp
13
+ test/version_tmp
14
+ tmp
15
+ archives
16
+
17
+ # YARD artifacts
18
+ .yardoc
19
+ _yardoc
20
+ doc/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in minep-request.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Matthieu "Ezveus" Ciappara
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,17 +1,63 @@
1
- minep-request
2
- =============
1
+ # minep-request
3
2
 
4
- minep-request is a ruby gem allowing to communicate with a [MINE server](http://github.com/Ezveus/Mine)
3
+ minep-request is a binary allowing to communicate with a [MINE
4
+ server](http://github.com/Ezveus/Mine).
5
5
 
6
- Requests are AUTHENTICATE, SIGNUP, EXEC, INSERT, MOVE, BACKSPACE and DELETE.
6
+ It uses MINE Protocol over TCP using Ruby Standard Sockets or over
7
+ WebSocket Protocol using
8
+ [WEBSocket](https://rubygems.org/gems/WEBSocket).
7
9
 
8
- Arguments required :
9
- --------------------
10
+ It works as an interactive 'shell' reading some commands (or requests
11
+ arguments) on the standard input and sends valid MINEP requests to the
12
+ server.
10
13
 
11
- - AUTHENTICATE : *name* and *pass*
12
- - SIGNUP : *name*, *pass*, *email* and (optionaly) *website*
13
- - EXEC : Not implemented yet
14
- - INSERT : Not implemented yet
15
- - MOVE : Not implemented yet
16
- - BACKSPACE : Not implemented yet
17
- - DELETE : Not implemented yet
14
+ The known commands are :
15
+ - authenticate : Send an AUTHENTICATE request
16
+ - backspace : Send a BACKSPACE request
17
+ - delete : Send a DELETE request
18
+ - exec : Send an EXEC request
19
+ - exit : Disconnect and quit the program
20
+ - help : Show the list of the commands
21
+ - insert : Send an INSERT request
22
+ - move : Send a MOVE request
23
+ - quit : Disconnect and quit the program
24
+ - signup : Send a SIGNUP request
25
+
26
+ Without arguments, the default communication type is TCP trying to
27
+ connect to localhost on port 8080 (default MINE over TCP port). See
28
+ the [usage](#usage) to change the host, port or communication type.
29
+
30
+ If the communication type is WebSocket and no port is given, the port
31
+ is updated to Mine over WebSocket default port (8081).
32
+
33
+ ## Installation
34
+
35
+ Add this line to your application's Gemfile:
36
+
37
+ gem 'minep-request'
38
+
39
+ And then execute:
40
+
41
+ $ bundle
42
+
43
+ Or install it yourself as:
44
+
45
+ $ gem install minep-request
46
+
47
+ ## <div id="usage">Usage</div>
48
+
49
+ Usage: mine-request [OPTIONS]
50
+ Send a request to a MINE server
51
+ -h, --host HOST server hostname
52
+ -p, --port PORT server port
53
+ -t, --type TYPE type of communication (tcp |
54
+ websocket)
55
+ --help displays this screen
56
+
57
+ ## Contributing
58
+
59
+ 1. Fork it
60
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
61
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
62
+ 4. Push to the branch (`git push origin my-new-feature`)
63
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/mine-request CHANGED
@@ -1,32 +1,65 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ # lib = "lib"
4
+ # $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
3
6
  require 'optparse'
4
- require 'rubygems'
5
- require 'minep'
7
+ require 'socket'
8
+ require 'WEBSocket'
9
+ require 'minep-request'
10
+
11
+ $options = {
12
+ :host => "localhost",
13
+ :port => 8080,
14
+ :type => :tcp
15
+ }
16
+ $goon = true
17
+
18
+ $commands = {
19
+ "authenticate" => Proc.new { |s| Minep::Request.authenticate s},
20
+ "signup" => Proc.new { |s| Minep::Request.signup s},
21
+ "exec" => Proc.new { |s| Minep::Request.exec s},
22
+ "insert" => Proc.new { |s| Minep::Request.insert s},
23
+ "move" => Proc.new { |s| Minep::Request.move s},
24
+ "backspace" => Proc.new { |s| Minep::Request.backspace s},
25
+ "delete" => Proc.new { |s| Minep::Request.delete s},
26
+ "file" => Proc.new { |s| Minep::Request.file s},
27
+ "help" => Proc.new { |s| help s},
28
+ "exit" => Proc.new { |s| quit s},
29
+ "quit" => Proc.new { |s| quit s}
30
+ }
31
+
32
+ def quit socket = nil
33
+ $goon = false
34
+ puts "Exiting"
35
+ end
6
36
 
7
- request = nil
8
- options = {}
37
+ def help socket = nil
38
+ puts "Valid commands are :"
39
+ $commands.keys.sort.each do |c|
40
+ puts "#{c} : #{Minep::Request::CommandsInfo[c]}"
41
+ end
42
+ end
9
43
 
10
44
  optparse = OptionParser.new do |opts|
45
+ portSpecified = false
11
46
  opts.banner = <<-eos
12
- Usage: mine-request -r REQUEST [OPTION]... REQUEST_ARGUMENTS
47
+ Usage: mine-request [OPTIONS]
13
48
  Send a request to a MINE server
14
-
15
- Valid requests are :
16
- #{MINEP.requestList}
17
49
  eos
18
50
 
19
- opts.on("-r", "--request REQUEST",
20
- MINEP.requestList, "request to send") do |r|
21
- request = r
22
- end
23
-
24
51
  opts.on "-h", "--host HOST", "server hostname" do |h|
25
- options[:host] = h
52
+ $options[:host] = h
26
53
  end
27
54
 
28
55
  opts.on "-p", "--port PORT", Integer, "server port" do |p|
29
- options[:port] = p
56
+ $options[:port] = p
57
+ portSpecified = true
58
+ end
59
+
60
+ opts.on "-t", "--type TYPE", [:tcp, :websocket], "type of communication (tcp | websocket)" do |t|
61
+ $options[:type] = t
62
+ $options[:port] = 8081 unless portSpecified
30
63
  end
31
64
 
32
65
  opts.on "--help", "displays this screen" do |h|
@@ -37,25 +70,33 @@ end
37
70
 
38
71
  begin
39
72
  optparse.parse!
40
- if request.nil?
41
- puts "Missing option : request\n"
42
- puts optparse
43
- exit 1
44
- end
45
73
  rescue OptionParser::InvalidOption, OptionParser::MissingArgument, OptionParser::InvalidArgument
46
74
  puts $!.to_s
47
75
  puts optparse
48
76
  exit 1
49
- end
50
-
51
- ARGV.each do |arg|
52
- args = arg.split '='
53
- options[args[0].to_sym] = args[1]
54
77
  end
55
- options[:closeLoop] = true
78
+
56
79
  begin
57
- MINEP.send request, options
58
- rescue MINEP::ArgumentsError => e
59
- $stderr.puts "Error : #{e}"
80
+ if $options[:type] == :tcp
81
+ socket = TCPSocket.new $options[:host], $options[:port]
82
+ elsif $options[:type] == :websocket
83
+ socket = WEBSocket::Socket.new $options[:host], $options[:port]
84
+ end
85
+ rescue => e
86
+ $stderr.puts "Error : #{e} <#{$options[:host]} - #{$options[:port]}>"
60
87
  exit 1
61
88
  end
89
+
90
+ while $goon do
91
+ printf ">> "
92
+ begin
93
+ cmd = Minep.read
94
+ if $commands.key? cmd
95
+ $commands[cmd].call socket
96
+ else
97
+ $stderr.puts "Error : unknown command"
98
+ end
99
+ rescue EOFError
100
+ quit
101
+ end
102
+ end
data/lib/minep-request.rb CHANGED
@@ -1 +1,5 @@
1
- require 'minep'
1
+ require 'json'
2
+
3
+ require "minep-request/version"
4
+ require "minep-request/minep"
5
+ require "minep-request/requests"
@@ -0,0 +1,26 @@
1
+ module Minep
2
+ def self.read
3
+ input = $stdin.readline
4
+ input = input.strip
5
+ end
6
+
7
+ def self.makeMsg request, args
8
+ args.each_key do |k|
9
+ if k == :args
10
+ printf "#{k} as a space-separated list : "
11
+ input = read
12
+ args[k] = input.split
13
+ elsif k == :direction
14
+ printf "#{k} (up, right, down, left, origin, end) : "
15
+ args[k] = read
16
+ elsif k == :number
17
+ printf "#{k} : "
18
+ args[k] = read.to_i
19
+ else
20
+ printf "#{k} : "
21
+ args[k] = read
22
+ end
23
+ end
24
+ "#{request.upcase}=#{JSON.dump args}"
25
+ end
26
+ end
@@ -0,0 +1,102 @@
1
+ module Minep
2
+ module Request
3
+ CommandsInfo ||= {
4
+ "authenticate" => "Send an AUTHENTICATE request",
5
+ "signup" => "Send a SIGNUP request",
6
+ "exec" => "Send an EXEC request",
7
+ "insert" =>"Send an INSERT request",
8
+ "move" => "Send a MOVE request",
9
+ "backspace" => "Send a BACKSPACE request",
10
+ "delete" => "Send a DELETE request",
11
+ "file" => "Send a FILE request",
12
+ "help" => "Show the list of the commands",
13
+ "exit" => "Disconnect and quit the program",
14
+ "quit" => "Disconnect and quit the program"
15
+ }
16
+
17
+ def self.CommandsInfo
18
+ CommandsInfo
19
+ end
20
+
21
+ def self.file socket
22
+ args = {
23
+ :path => "",
24
+ :size => 0,
25
+ :line => 0,
26
+ :port => 0
27
+ }
28
+ printf "path : "
29
+ args[:path] = read
30
+ printf "line number : "
31
+ args[:line] = read.to_i
32
+ if File.exist? args[:path]
33
+ f = File.new args[:path]
34
+ args[:size] = f.size
35
+ args[:content] = f.read
36
+ socket.write "FILE=#{JSON.dump args}"
37
+ else
38
+ $stderr.puts "File #{args[:path]} doesn't exists"
39
+ end
40
+ end
41
+
42
+ def self.authenticate socket
43
+ args = {
44
+ :name => "",
45
+ :pass => ""
46
+ }
47
+ socket.write Minep.makeMsg("AUTHENTICATE", args)
48
+ end
49
+
50
+ def self.signup socket
51
+ args = {
52
+ :name => "",
53
+ :pass => "",
54
+ :email => "",
55
+ :website => ""
56
+ }
57
+ socket.write Minep.makeMsg("SIGNUP", args)
58
+ end
59
+
60
+ def self.exec socket
61
+ args = {
62
+ :buffer => "",
63
+ :command => "",
64
+ :args => []
65
+ }
66
+ socket.write Minep.makeMsg("EXEC", args)
67
+ end
68
+
69
+ def self.insert socket
70
+ args = {
71
+ :buffer => "",
72
+ :text => ""
73
+ }
74
+ socket.write Minep.makeMsg("INSERT", args)
75
+ end
76
+
77
+ def self.move socket
78
+ args = {
79
+ :buffer => "",
80
+ :direction => "",
81
+ :number => 0
82
+ }
83
+ socket.write Minep.makeMsg("MOVE", args)
84
+ end
85
+
86
+ def self.backspace socket
87
+ args = {
88
+ :buffer => "",
89
+ :number => 0
90
+ }
91
+ socket.write Minep.makeMsg("BACKSPACE", args)
92
+ end
93
+
94
+ def self.delete socket
95
+ args = {
96
+ :buffer => "",
97
+ :number => 0
98
+ }
99
+ socket.write Minep.makeMsg("DELETE", args)
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,6 @@
1
+ module Minep
2
+ module Request
3
+ VERSION = "0.0.4"
4
+ DATE = Time.now.to_s.split[0]
5
+ end
6
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'minep-request/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "minep-request"
8
+ gem.version = Minep::Request::VERSION
9
+ gem.date = Minep::Request::DATE
10
+ gem.authors = ["Matthieu \"Ezveus\" Ciappara"]
11
+ gem.email = ["ciappam@gmail.com"]
12
+ gem.description = <<-EOS
13
+ Binary allowing the communication with a MINE server. It support both MINE Protocol over TCP and over WebSocket.
14
+ EOS
15
+ gem.summary = %q{Binary allowing the communication with a MINE server}
16
+ gem.homepage = "https://github.com/Ezveus/minep-request"
17
+
18
+ gem.files = `git ls-files`.split($/)
19
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
+ gem.require_paths = ["lib"]
22
+ gem.add_runtime_dependency 'WEBSocket', '~> 0.0.1', '>= 0.0.1'
23
+ end
metadata CHANGED
@@ -1,37 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minep-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Matthieu Ciappara
8
+ - Matthieu "Ezveus" Ciappara
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-19 00:00:00.000000000 Z
13
- dependencies: []
14
- description: ! 'Allows to communicate with a MINE server.
15
-
16
- Supported requests are the same as the implemented requests in the server : AUTHENTICATE
17
- and SIGNUP.
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: WEBSocket
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.1
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.1
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.1
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: 0.0.1
36
+ description: ! 'Binary allowing the communication with a MINE server. It support both
37
+ MINE Protocol over TCP and over WebSocket.
18
38
 
19
39
  '
20
- email: ciappam@gmail.com
40
+ email:
41
+ - ciappam@gmail.com
21
42
  executables:
22
43
  - mine-request
23
44
  extensions: []
24
45
  extra_rdoc_files: []
25
46
  files:
26
- - lib/minep.rb
27
- - lib/minep-request.rb
28
- - lib/minep/connection.rb
29
- - lib/minep/exceptions.rb
30
- - lib/minep/minep.rb
31
- - lib/minep/request.rb
32
- - lib/minep/utils.rb
47
+ - .gitignore
48
+ - Gemfile
49
+ - LICENSE.txt
33
50
  - README.md
51
+ - Rakefile
34
52
  - bin/mine-request
53
+ - lib/minep-request.rb
54
+ - lib/minep-request/minep.rb
55
+ - lib/minep-request/requests.rb
56
+ - lib/minep-request/version.rb
57
+ - minep-request.gemspec
35
58
  homepage: https://github.com/Ezveus/minep-request
36
59
  licenses: []
37
60
  post_install_message:
@@ -55,6 +78,6 @@ rubyforge_project:
55
78
  rubygems_version: 1.8.24
56
79
  signing_key:
57
80
  specification_version: 3
58
- summary: Allows to communicate with a MINE server
81
+ summary: Binary allowing the communication with a MINE server
59
82
  test_files: []
60
83
  has_rdoc:
data/lib/minep.rb DELETED
@@ -1,8 +0,0 @@
1
- # Requiring external gems
2
- require 'eventmachine'
3
- require 'json'
4
-
5
- # Requiring internal files
6
- %w[minep request utils connection exceptions].each do |file|
7
- require "minep/#{file}"
8
- end
@@ -1,44 +0,0 @@
1
- module MINEP
2
- # This class extends EM::Connection (the connection class of EventMachine)
3
- class Connection < EM::Connection
4
- # Initialize the object
5
- #
6
- # @param [Hash] request is the request, The text request is built from this
7
- def initialize request, closeLoop=false
8
- super
9
- @request = ["#{request[:header][:head]}\n"]
10
- @closeLoop = closeLoop
11
- request[:header].each do |key, value|
12
- if key == :head
13
- next
14
- elsif key == :contentType
15
- @request << "Content-Type: #{value}\n"
16
- elsif key == :contentLength
17
- @request << "Content-Length: #{value}\n"
18
- else
19
- @request << "#{key.to_s.capitalize}: #{value}\n"
20
- end
21
- end
22
- @request << "\n"
23
- key = request[:body].keys[0]
24
- rqst = "#{key.to_s.upcase}="
25
- rqst += "#{JSON.dump request[:body][key]}\n"
26
- @request << rqst
27
- @request = @request.join
28
- end
29
-
30
- # Send the request after the connection initialization
31
- def post_init
32
- send_data @request
33
- end
34
-
35
- # Receive the answer of the server and puts it on standard output
36
- def receive_data data
37
- puts data
38
- end
39
-
40
- def unbind
41
- EventMachine::stop_event_loop if @closeLoop
42
- end
43
- end
44
- end
@@ -1,18 +0,0 @@
1
- module MINEP
2
- class ArgumentsError < Exception
3
- end
4
-
5
- # Raise a ArgumentsError with "Not enough arguments for request" as an argument
6
- #
7
- # @param [String] rqst the request which called the function
8
- def self.notEnoughArgs rqst
9
- raise ArgumentsError, "Not enough arguments for request #{rqst}"
10
- end
11
-
12
- # Raise a ArgumentsError with "Missing mandatory arguments for request" as an argument
13
- #
14
- # @param [String] rqst the request which called the function
15
- def self.missingArgs rqst
16
- raise ArgumentsError, "Missing mandatory arguments for request #{rqst}"
17
- end
18
- end
data/lib/minep/minep.rb DELETED
@@ -1,17 +0,0 @@
1
- module MINEP
2
- # Send a request to opts\[:host\] or localhost on port
3
- # opts\[:port\] or 8080
4
- #
5
- # @param [Symbol] type the request type, see main page for the requests list
6
- # @param [Hash] opts stores the parameters of the request and host and port, see main page for the requests parameters
7
- # @param [Bool] closeLoop define if the event loop has to be closed when unbinding
8
- def self.send type, opts={}
9
- request = {}
10
- return false unless Utils.makeRequest request, type, opts
11
- EM.run do
12
- EM.connect(opts[:host] || "localhost",
13
- opts[:port] || 8080, Connection, request,
14
- opts[:closeLoop])
15
- end
16
- end
17
- end
data/lib/minep/request.rb DELETED
@@ -1,108 +0,0 @@
1
- module MINEP
2
- RequestList = [
3
- :authenticate,
4
- :signup,
5
- :exec,
6
- :insert,
7
- :move,
8
- :backspace,
9
- :delete
10
- ]
11
-
12
- # Returns an array containing the request list
13
- def self.requestList
14
- RequestList
15
- end
16
-
17
- # Returns a string containing the request list under the form "\t-> request\n..."
18
- def RequestList.to_s
19
- "\t-> authenticate\n\t-> signup\n\t-> exec\n\t-> insert\n\t-> move\n\t-> backspace\n\t-> delete\n"
20
- end
21
-
22
- # Module containing methods for checking requests arguments
23
- module Request
24
-
25
- # Checks arguments for authenticate and create the request body
26
- #
27
- # @param [Hash] request will contain the request (headers and body)
28
- # @param [Hash] opts contains the options and arguments get from MINEP.send
29
- # @option opts [String] :name The user login/email
30
- # @option opts [String] :pass The user password
31
- def self.authenticate request, opts={}
32
- MINEP.notEnoughArgs "AUTHENTICATE" if opts.empty?
33
- MINEP.missingArgs "AUTHENTICATE" if opts[:name].nil? or opts[:pass].nil?
34
- Utils.makeAuthenticate request, opts
35
- end
36
-
37
- # Checks arguments for signup and create the request body
38
- # @param [String] website is the url of the website of the new user, passed through opts
39
- #
40
- # @param [Hash] request will contain the request (headers and body)
41
- # @param [Hash] opts contains the options and arguments get from MINEP.send
42
- # @option opts [String] :name The login of the new user
43
- # @option opts [String] :pass The password of the new user
44
- # @option opts [String] :email The email of the new user
45
- def self.signup request, opts={}
46
- MINEP.notEnoughArgs "SIGNUP" if opts.empty?
47
- MINEP.missingArgs "SIGNUP" if opts[:name].nil? or opts[:pass].nil? or opts[:email].nil?
48
- Utils.makeSignup request, opts
49
- end
50
-
51
- # Checks arguments for exec and create the request body
52
- #
53
- # @param [Hash] request will contain the request (headers and body)
54
- # @param [Hash] opts contains the options and arguments get from MINEP.send
55
- # @option opts [String] :buffer The buffer on which you apply the command
56
- # @option opts [String] :command The command to apply
57
- # @option opts [Array] :args The (potentially empty) array containing arguments for the command
58
- def self.exec request, opts={}
59
- MINEP.notEnoughArgs "EXEC" if opts.empty?
60
- MINEP.missingArgs "SIGNUP" if opts[:buffer].nil? or opts[:command].nil? or opts[:args].nil?
61
- end
62
-
63
- # Checks arguments for insert and create the request body
64
- #
65
- # @param [Hash] request will contain the request (headers and body)
66
- # @param [Hash] opts contains the options and arguments get from MINEP.send
67
- # @option opts [String] :buffer The buffer on which you insert text
68
- # @option opts [String] :text The text to insert
69
- def self.insert request, opts={}
70
- MINEP.notEnoughArgs "INSERT" if opts.empty?
71
- MINEP.missingArgs "INSERT" if opts[:buffer].nil? or opts[:text].nil?
72
- end
73
-
74
- # Checks arguments for move and create the request body
75
- #
76
- # @param [Hash] request will contain the request (headers and body)
77
- # @param [Hash] opts contains the options and arguments get from MINEP.send
78
- # @option opts [String] :buffer The buffer on which you move the cursor
79
- # @option opts [Symbol] :direction The direction of the move
80
- # @option opts [Integer] :number The range of the move (unused on :origin or :end move)
81
- def self.move request, opts={}
82
- MINEP.notEnoughArgs "MOVE" if opts.empty?
83
- MINEP.missingArgs "MOVE" if opts[:buffer].nil? or opts[:direction].nil? or opts[:number].nil?
84
- end
85
-
86
- # Checks arguments for backspace and create the request body
87
- #
88
- # @param [Hash] request will contain the request (headers and body)
89
- # @param [Hash] opts contains the options and arguments get from MINEP.send
90
- # @option opts [String] :buffer The buffer on which you suppress
91
- # @option opts [Integer] :number The range of the suppression
92
- def self.backspace request, opts={}
93
- MINEP.notEnoughArgs "BACKSPACE" if opts.empty?
94
- MINEP.missingArgs "BACKSPACE" if opts[:buffer].nil? or opts[:number].nil?
95
- end
96
-
97
- # Checks arguments for delete and create the request body
98
- #
99
- # @param [Hash] request will contain the request (headers and body)
100
- # @param [Hash] opts contains the options and arguments get from MINEP.send
101
- # @option opts [String] :buffer The buffer on which you delete
102
- # @option opts [Integer] :number The range of the deletion
103
- def self.delete request, opts={}
104
- MINEP.notEnoughArgs "DELETE" if opts.empty?
105
- MINEP.missingArgs "DELETE" if opts[:buffer].nil? or opts[:number].nil?
106
- end
107
- end
108
- end
data/lib/minep/utils.rb DELETED
@@ -1,70 +0,0 @@
1
- module MINEP
2
- module Utils
3
- # Make the request (header + body)
4
- def self.makeRequest request, type, opts
5
- Utils.getHeader request, opts[:host], opts[:port]
6
- case type
7
- when :authenticate then Request.authenticate request, opts
8
- when :signup then Request.signup request, opts
9
- when :exec then Request.exec request, opts
10
- when :insert then Request.insert request, opts
11
- when :move then Request.move request, opts
12
- when :backspace then Request.backspace request, opts
13
- when :delete then Request.delete request, opts
14
- else
15
- false
16
- end
17
- end
18
-
19
- # Make the request header
20
- def self.getHeader request, host=nil, port=nil
21
- host = "localhost" if host.nil?
22
- port = 8080 if host.nil?
23
- request[:header] = {
24
- :head => "POST /mine/protocol/request HTTP/1.1",
25
- :host => "#{host}:#{port}",
26
- :connection => "Keep-Alive",
27
- :contentType => "application/x-www-form-urlencoded",
28
- :contentLength => 0
29
- }
30
- true
31
- end
32
-
33
- # Calculate the body length
34
- def self.calcLength request
35
- rqst = request[:body].keys[0]
36
- cL = rqst.size # rqst
37
- cL += 3 # ={..}
38
- request[:body][rqst].each do |key, value| # ..
39
- cL += 6 + key.size + value.size # "key":"value",
40
- end
41
- cL -= 1 # the loop counts one inexistant ','
42
- end
43
-
44
- # Make the body for AUTHENTICATE request
45
- def self.makeAuthenticate request, options
46
- request[:body] = {
47
- :authenticate => {
48
- :name => options[:name],
49
- :pass => options[:pass]
50
- }
51
- }
52
- request[:header][:contentLength] = calcLength request
53
- true
54
- end
55
-
56
- # Make the body for SIGNUP request
57
- def self.makeSignup request, options
58
- request[:body] = {
59
- :signup => {
60
- :name => options[:name],
61
- :pass => options[:pass],
62
- :email => options[:email],
63
- :website => options[:website].to_s
64
- }
65
- }
66
- request[:header][:contentLength] = calcLength request
67
- true
68
- end
69
- end
70
- end