libwebsocket 0.0.4 → 0.1.0
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/README.md +2 -2
- data/examples/eventmachine_server.rb +1 -1
- data/examples/plain_client.rb +1 -1
- data/examples/thin_server.rb +1 -1
- data/lib/libwebsocket.rb +9 -9
- data/lib/libwebsocket/{handshake.rb → opening_handshake.rb} +4 -4
- data/lib/libwebsocket/{handshake → opening_handshake}/client.rb +3 -3
- data/lib/libwebsocket/{handshake → opening_handshake}/server.rb +3 -3
- data/lib/libwebsocket/response.rb +1 -1
- data/libwebsocket.gemspec +90 -0
- data/test/libwebsocket/{handshake → opening_handshake}/test_client.rb +5 -5
- data/test/libwebsocket/{handshake → opening_handshake}/test_server.rb +4 -4
- metadata +11 -10
    
        data/README.md
    CHANGED
    
    | @@ -5,7 +5,7 @@ be one. It can be used in any server, event loop etc. | |
| 5 5 |  | 
| 6 6 | 
             
            ## Server handshake
         | 
| 7 7 |  | 
| 8 | 
            -
                h = LibWebSocket:: | 
| 8 | 
            +
                h = LibWebSocket::OpeningHandshake::Server.new
         | 
| 9 9 |  | 
| 10 10 | 
             
                # Parse client request
         | 
| 11 11 | 
             
                h.parse \<<EOF
         | 
| @@ -34,7 +34,7 @@ be one. It can be used in any server, event loop etc. | |
| 34 34 |  | 
| 35 35 | 
             
            ## Client handshake
         | 
| 36 36 |  | 
| 37 | 
            -
                h = LibWebSocket:: | 
| 37 | 
            +
                h = LibWebSocket::OpeningHandshake::Client.new(url => 'ws://example.com')
         | 
| 38 38 |  | 
| 39 39 | 
             
                # Create request
         | 
| 40 40 | 
             
                h.to_s # GET /demo HTTP/1.1
         | 
| @@ -6,7 +6,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/libwebsocket') | |
| 6 6 |  | 
| 7 7 | 
             
            module EchoServer
         | 
| 8 8 | 
             
              def receive_data(data)
         | 
| 9 | 
            -
                @hs ||= LibWebSocket:: | 
| 9 | 
            +
                @hs ||= LibWebSocket::OpeningHandshake::Server.new
         | 
| 10 10 | 
             
                @frame ||= LibWebSocket::Frame.new
         | 
| 11 11 |  | 
| 12 12 | 
             
                if !@hs.done?
         | 
    
        data/examples/plain_client.rb
    CHANGED
    
    | @@ -4,7 +4,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/libwebsocket') | |
| 4 4 | 
             
            class WebSocket
         | 
| 5 5 |  | 
| 6 6 | 
             
              def initialize(url, params = {})
         | 
| 7 | 
            -
                @hs ||= LibWebSocket:: | 
| 7 | 
            +
                @hs ||= LibWebSocket::OpeningHandshake::Client.new(:url => url, :version => params[:version])
         | 
| 8 8 | 
             
                @frame ||= LibWebSocket::Frame.new
         | 
| 9 9 |  | 
| 10 10 | 
             
                @socket = TCPSocket.new(@hs.url.host, @hs.url.port || 80)
         | 
    
        data/examples/thin_server.rb
    CHANGED
    
    
    
        data/lib/libwebsocket.rb
    CHANGED
    
    | @@ -3,15 +3,15 @@ | |
| 3 3 | 
             
            # or clients to provide WebSocket support.
         | 
| 4 4 | 
             
            module LibWebSocket
         | 
| 5 5 |  | 
| 6 | 
            -
              VERSION = '0.0 | 
| 6 | 
            +
              VERSION = '0.1.0' # Version of LibWebSocket
         | 
| 7 7 |  | 
| 8 | 
            -
              autoload :Cookie, | 
| 9 | 
            -
              autoload :Frame, | 
| 10 | 
            -
              autoload : | 
| 11 | 
            -
              autoload :Message, | 
| 12 | 
            -
              autoload :Request, | 
| 13 | 
            -
              autoload :Response, | 
| 14 | 
            -
              autoload :Stateful, | 
| 15 | 
            -
              autoload :URL, | 
| 8 | 
            +
              autoload :Cookie,           "#{File.dirname(__FILE__)}/libwebsocket/cookie"
         | 
| 9 | 
            +
              autoload :Frame,            "#{File.dirname(__FILE__)}/libwebsocket/frame"
         | 
| 10 | 
            +
              autoload :OpeningHandshake, "#{File.dirname(__FILE__)}/libwebsocket/opening_handshake"
         | 
| 11 | 
            +
              autoload :Message,          "#{File.dirname(__FILE__)}/libwebsocket/message"
         | 
| 12 | 
            +
              autoload :Request,          "#{File.dirname(__FILE__)}/libwebsocket/request"
         | 
| 13 | 
            +
              autoload :Response,         "#{File.dirname(__FILE__)}/libwebsocket/response"
         | 
| 14 | 
            +
              autoload :Stateful,         "#{File.dirname(__FILE__)}/libwebsocket/stateful"
         | 
| 15 | 
            +
              autoload :URL,              "#{File.dirname(__FILE__)}/libwebsocket/url"
         | 
| 16 16 |  | 
| 17 17 | 
             
            end
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            module LibWebSocket
         | 
| 2 | 
            -
              # This is a base class for LibWebSocket:: | 
| 3 | 
            -
              class  | 
| 2 | 
            +
              # This is a base class for LibWebSocket::OpeningHandshake::Client and LibWebSocket::OpeningHandshake::Server.
         | 
| 3 | 
            +
              class OpeningHandshake
         | 
| 4 4 |  | 
| 5 | 
            -
                autoload :Client, "#{File.dirname(__FILE__)}/ | 
| 6 | 
            -
                autoload :Server, "#{File.dirname(__FILE__)}/ | 
| 5 | 
            +
                autoload :Client, "#{File.dirname(__FILE__)}/opening_handshake/client"
         | 
| 6 | 
            +
                autoload :Server, "#{File.dirname(__FILE__)}/opening_handshake/server"
         | 
| 7 7 |  | 
| 8 8 | 
             
                attr_accessor :secure, :error
         | 
| 9 9 |  | 
| @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            module LibWebSocket
         | 
| 2 | 
            -
              class  | 
| 2 | 
            +
              class OpeningHandshake
         | 
| 3 3 | 
             
                # Construct or parse a client WebSocket handshake. This module is written for
         | 
| 4 4 | 
             
                # convenience, since using request and response directly requires the same code
         | 
| 5 5 | 
             
                # again and again.
         | 
| 6 6 | 
             
                #
         | 
| 7 7 | 
             
                # SYNOPSIS
         | 
| 8 8 | 
             
                #
         | 
| 9 | 
            -
                #   h = LibWebSocket:: | 
| 9 | 
            +
                #   h = LibWebSocket::OpeningHandshake::Client.new(:url => 'ws://example.com')
         | 
| 10 10 | 
             
                #
         | 
| 11 11 | 
             
                #   # Create request
         | 
| 12 12 | 
             
                #   h.to_s # GET /demo HTTP/1.1
         | 
| @@ -32,7 +32,7 @@ module LibWebSocket | |
| 32 32 | 
             
                #
         | 
| 33 33 | 
             
                #   h.error # Check if there were any errors
         | 
| 34 34 | 
             
                #   h.done? # Returns true
         | 
| 35 | 
            -
                class Client <  | 
| 35 | 
            +
                class Client < OpeningHandshake
         | 
| 36 36 |  | 
| 37 37 | 
             
                  attr_accessor :url
         | 
| 38 38 |  | 
| @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            module LibWebSocket
         | 
| 2 | 
            -
              class  | 
| 2 | 
            +
              class OpeningHandshake
         | 
| 3 3 | 
             
                # Construct or parse a server WebSocket handshake. This module is written for
         | 
| 4 4 | 
             
                # convenience, since using request and response directly requires the same code
         | 
| 5 5 | 
             
                # again and again.
         | 
| 6 6 | 
             
                #
         | 
| 7 7 | 
             
                # SYNOPSIS
         | 
| 8 8 | 
             
                #
         | 
| 9 | 
            -
                #   h = LibWebSocket:: | 
| 9 | 
            +
                #   h = LibWebSocket::OpeningHandshake::Server.new
         | 
| 10 10 | 
             
                #
         | 
| 11 11 | 
             
                #   # Parse client request
         | 
| 12 12 | 
             
                #   h.parse \<<EOF
         | 
| @@ -32,7 +32,7 @@ module LibWebSocket | |
| 32 32 | 
             
                #          # Sec-WebSocket-Location: ws://example.com/demo
         | 
| 33 33 | 
             
                #          #
         | 
| 34 34 | 
             
                #          # fQJ,fN/4F4!~K~MH
         | 
| 35 | 
            -
                class Server <  | 
| 35 | 
            +
                class Server < OpeningHandshake
         | 
| 36 36 |  | 
| 37 37 | 
             
                  # Parse client request
         | 
| 38 38 | 
             
                  # @example
         | 
| @@ -0,0 +1,90 @@ | |
| 1 | 
            +
            # Generated by jeweler
         | 
| 2 | 
            +
            # DO NOT EDIT THIS FILE DIRECTLY
         | 
| 3 | 
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
         | 
| 4 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |s|
         | 
| 7 | 
            +
              s.name = %q{libwebsocket}
         | 
| 8 | 
            +
              s.version = "0.1.0"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 | 
            +
              s.authors = ["Bernard Potocki"]
         | 
| 12 | 
            +
              s.date = %q{2010-12-05}
         | 
| 13 | 
            +
              s.description = %q{Universal Ruby library to handle WebSocket protocol}
         | 
| 14 | 
            +
              s.email = %q{bernard.potocki@imanel.org}
         | 
| 15 | 
            +
              s.extra_rdoc_files = [
         | 
| 16 | 
            +
                "README.md"
         | 
| 17 | 
            +
              ]
         | 
| 18 | 
            +
              s.files = [
         | 
| 19 | 
            +
                "README.md",
         | 
| 20 | 
            +
                 "Rakefile",
         | 
| 21 | 
            +
                 "examples/eventmachine_server.rb",
         | 
| 22 | 
            +
                 "examples/plain_client.rb",
         | 
| 23 | 
            +
                 "examples/thin_server.rb",
         | 
| 24 | 
            +
                 "lib/libwebsocket.rb",
         | 
| 25 | 
            +
                 "lib/libwebsocket/cookie.rb",
         | 
| 26 | 
            +
                 "lib/libwebsocket/cookie/request.rb",
         | 
| 27 | 
            +
                 "lib/libwebsocket/cookie/response.rb",
         | 
| 28 | 
            +
                 "lib/libwebsocket/frame.rb",
         | 
| 29 | 
            +
                 "lib/libwebsocket/message.rb",
         | 
| 30 | 
            +
                 "lib/libwebsocket/opening_handshake.rb",
         | 
| 31 | 
            +
                 "lib/libwebsocket/opening_handshake/client.rb",
         | 
| 32 | 
            +
                 "lib/libwebsocket/opening_handshake/server.rb",
         | 
| 33 | 
            +
                 "lib/libwebsocket/request.rb",
         | 
| 34 | 
            +
                 "lib/libwebsocket/response.rb",
         | 
| 35 | 
            +
                 "lib/libwebsocket/stateful.rb",
         | 
| 36 | 
            +
                 "lib/libwebsocket/url.rb",
         | 
| 37 | 
            +
                 "libwebsocket.gemspec",
         | 
| 38 | 
            +
                 "test/libwebsocket/cookie/request.rb",
         | 
| 39 | 
            +
                 "test/libwebsocket/cookie/response.rb",
         | 
| 40 | 
            +
                 "test/libwebsocket/opening_handshake/test_client.rb",
         | 
| 41 | 
            +
                 "test/libwebsocket/opening_handshake/test_server.rb",
         | 
| 42 | 
            +
                 "test/libwebsocket/test_cookie.rb",
         | 
| 43 | 
            +
                 "test/libwebsocket/test_frame.rb",
         | 
| 44 | 
            +
                 "test/libwebsocket/test_message.rb",
         | 
| 45 | 
            +
                 "test/libwebsocket/test_request_75.rb",
         | 
| 46 | 
            +
                 "test/libwebsocket/test_request_76.rb",
         | 
| 47 | 
            +
                 "test/libwebsocket/test_request_common.rb",
         | 
| 48 | 
            +
                 "test/libwebsocket/test_response_75.rb",
         | 
| 49 | 
            +
                 "test/libwebsocket/test_response_76.rb",
         | 
| 50 | 
            +
                 "test/libwebsocket/test_response_common.rb",
         | 
| 51 | 
            +
                 "test/libwebsocket/test_url.rb",
         | 
| 52 | 
            +
                 "test/test_helper.rb"
         | 
| 53 | 
            +
              ]
         | 
| 54 | 
            +
              s.homepage = %q{http://github.com/imanel/libwebsocket}
         | 
| 55 | 
            +
              s.rdoc_options = ["--charset=UTF-8"]
         | 
| 56 | 
            +
              s.require_paths = ["lib"]
         | 
| 57 | 
            +
              s.rubygems_version = %q{1.3.7}
         | 
| 58 | 
            +
              s.summary = %q{Universal Ruby library to handle WebSocket protocol}
         | 
| 59 | 
            +
              s.test_files = [
         | 
| 60 | 
            +
                "test/libwebsocket/cookie/request.rb",
         | 
| 61 | 
            +
                 "test/libwebsocket/cookie/response.rb",
         | 
| 62 | 
            +
                 "test/libwebsocket/opening_handshake/test_client.rb",
         | 
| 63 | 
            +
                 "test/libwebsocket/opening_handshake/test_server.rb",
         | 
| 64 | 
            +
                 "test/libwebsocket/test_cookie.rb",
         | 
| 65 | 
            +
                 "test/libwebsocket/test_frame.rb",
         | 
| 66 | 
            +
                 "test/libwebsocket/test_message.rb",
         | 
| 67 | 
            +
                 "test/libwebsocket/test_request_75.rb",
         | 
| 68 | 
            +
                 "test/libwebsocket/test_request_76.rb",
         | 
| 69 | 
            +
                 "test/libwebsocket/test_request_common.rb",
         | 
| 70 | 
            +
                 "test/libwebsocket/test_response_75.rb",
         | 
| 71 | 
            +
                 "test/libwebsocket/test_response_76.rb",
         | 
| 72 | 
            +
                 "test/libwebsocket/test_response_common.rb",
         | 
| 73 | 
            +
                 "test/libwebsocket/test_url.rb",
         | 
| 74 | 
            +
                 "test/test_helper.rb",
         | 
| 75 | 
            +
                 "examples/eventmachine_server.rb",
         | 
| 76 | 
            +
                 "examples/plain_client.rb",
         | 
| 77 | 
            +
                 "examples/thin_server.rb"
         | 
| 78 | 
            +
              ]
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              if s.respond_to? :specification_version then
         | 
| 81 | 
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         | 
| 82 | 
            +
                s.specification_version = 3
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 85 | 
            +
                else
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              else
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
            end
         | 
| 90 | 
            +
             | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            require 'test_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            class  | 
| 3 | 
            +
            class TestServerOpeningHandshake < Test::Unit::TestCase
         | 
| 4 4 |  | 
| 5 5 | 
             
              def test_to_s
         | 
| 6 | 
            -
                h = LibWebSocket:: | 
| 6 | 
            +
                h = LibWebSocket::OpeningHandshake::Client.new
         | 
| 7 7 | 
             
                h.url = 'ws://example.com/demo'
         | 
| 8 8 |  | 
| 9 9 | 
             
                # Mocking
         | 
| @@ -21,7 +21,7 @@ class TestServerHandshake < Test::Unit::TestCase | |
| 21 21 | 
             
                  "Content-Length: 8\x0d\x0a" +
         | 
| 22 22 | 
             
                  "\x0d\x0aTm[K T2u"
         | 
| 23 23 |  | 
| 24 | 
            -
                h = LibWebSocket:: | 
| 24 | 
            +
                h = LibWebSocket::OpeningHandshake::Client.new(:url => 'ws://example.com')
         | 
| 25 25 |  | 
| 26 26 | 
             
                # Mocking
         | 
| 27 27 | 
             
                h.req.key1 = "18x 6]8vM;54 *(5:  {   U1]8  z [  8"
         | 
| @@ -52,11 +52,11 @@ class TestServerHandshake < Test::Unit::TestCase | |
| 52 52 | 
             
                assert h.done?
         | 
| 53 53 |  | 
| 54 54 | 
             
                message = "HTTP/1.1 101 WebSocket Protocol Handshake\x0d\x0a"
         | 
| 55 | 
            -
                h = LibWebSocket:: | 
| 55 | 
            +
                h = LibWebSocket::OpeningHandshake::Client.new(:url => 'ws://example.com')
         | 
| 56 56 | 
             
                assert h.parse(message)
         | 
| 57 57 | 
             
                assert !h.error
         | 
| 58 58 |  | 
| 59 | 
            -
                h = LibWebSocket:: | 
| 59 | 
            +
                h = LibWebSocket::OpeningHandshake::Client.new
         | 
| 60 60 | 
             
                assert !h.parse("HTTP/1.0 foo bar\x0d\x0a")
         | 
| 61 61 | 
             
                assert_equal 'Wrong response line', h.error
         | 
| 62 62 | 
             
              end
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            require 'test_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            class  | 
| 3 | 
            +
            class TestServerOpeningHandshake < Test::Unit::TestCase
         | 
| 4 4 |  | 
| 5 5 | 
             
              def test_parse
         | 
| 6 | 
            -
                h = LibWebSocket:: | 
| 6 | 
            +
                h = LibWebSocket::OpeningHandshake::Server.new
         | 
| 7 7 | 
             
                assert !h.done?
         | 
| 8 8 | 
             
                assert h.parse('')
         | 
| 9 9 |  | 
| @@ -27,11 +27,11 @@ class TestServerHandshake < Test::Unit::TestCase | |
| 27 27 | 
             
                  "fQJ,fN/4F4!~K~MH";
         | 
| 28 28 |  | 
| 29 29 | 
             
                message = "GET /demo HTTP/1.1\x0d\x0a"
         | 
| 30 | 
            -
                h = LibWebSocket:: | 
| 30 | 
            +
                h = LibWebSocket::OpeningHandshake::Server.new
         | 
| 31 31 | 
             
                assert h.parse(message)
         | 
| 32 32 | 
             
                assert_nil h.error
         | 
| 33 33 |  | 
| 34 | 
            -
                h = LibWebSocket:: | 
| 34 | 
            +
                h = LibWebSocket::OpeningHandshake::Server.new
         | 
| 35 35 | 
             
                assert_nil h.parse("GET /demo\x0d\x0a")
         | 
| 36 36 | 
             
                assert_equal 'Wrong request line', h.error
         | 
| 37 37 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: libwebsocket
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 27
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 | 
            +
              - 1
         | 
| 8 9 | 
             
              - 0
         | 
| 9 | 
            -
               | 
| 10 | 
            -
              version: 0.0.4
         | 
| 10 | 
            +
              version: 0.1.0
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Bernard Potocki
         | 
| @@ -38,18 +38,19 @@ files: | |
| 38 38 | 
             
            - lib/libwebsocket/cookie/request.rb
         | 
| 39 39 | 
             
            - lib/libwebsocket/cookie/response.rb
         | 
| 40 40 | 
             
            - lib/libwebsocket/frame.rb
         | 
| 41 | 
            -
            - lib/libwebsocket/handshake.rb
         | 
| 42 | 
            -
            - lib/libwebsocket/handshake/client.rb
         | 
| 43 | 
            -
            - lib/libwebsocket/handshake/server.rb
         | 
| 44 41 | 
             
            - lib/libwebsocket/message.rb
         | 
| 42 | 
            +
            - lib/libwebsocket/opening_handshake.rb
         | 
| 43 | 
            +
            - lib/libwebsocket/opening_handshake/client.rb
         | 
| 44 | 
            +
            - lib/libwebsocket/opening_handshake/server.rb
         | 
| 45 45 | 
             
            - lib/libwebsocket/request.rb
         | 
| 46 46 | 
             
            - lib/libwebsocket/response.rb
         | 
| 47 47 | 
             
            - lib/libwebsocket/stateful.rb
         | 
| 48 48 | 
             
            - lib/libwebsocket/url.rb
         | 
| 49 | 
            +
            - libwebsocket.gemspec
         | 
| 49 50 | 
             
            - test/libwebsocket/cookie/request.rb
         | 
| 50 51 | 
             
            - test/libwebsocket/cookie/response.rb
         | 
| 51 | 
            -
            - test/libwebsocket/ | 
| 52 | 
            -
            - test/libwebsocket/ | 
| 52 | 
            +
            - test/libwebsocket/opening_handshake/test_client.rb
         | 
| 53 | 
            +
            - test/libwebsocket/opening_handshake/test_server.rb
         | 
| 53 54 | 
             
            - test/libwebsocket/test_cookie.rb
         | 
| 54 55 | 
             
            - test/libwebsocket/test_frame.rb
         | 
| 55 56 | 
             
            - test/libwebsocket/test_message.rb
         | 
| @@ -98,8 +99,8 @@ summary: Universal Ruby library to handle WebSocket protocol | |
| 98 99 | 
             
            test_files: 
         | 
| 99 100 | 
             
            - test/libwebsocket/cookie/request.rb
         | 
| 100 101 | 
             
            - test/libwebsocket/cookie/response.rb
         | 
| 101 | 
            -
            - test/libwebsocket/ | 
| 102 | 
            -
            - test/libwebsocket/ | 
| 102 | 
            +
            - test/libwebsocket/opening_handshake/test_client.rb
         | 
| 103 | 
            +
            - test/libwebsocket/opening_handshake/test_server.rb
         | 
| 103 104 | 
             
            - test/libwebsocket/test_cookie.rb
         | 
| 104 105 | 
             
            - test/libwebsocket/test_frame.rb
         | 
| 105 106 | 
             
            - test/libwebsocket/test_message.rb
         |