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