File: spec_helper.rb

package info (click to toggle)
ruby-twitter-stream 0.1.16-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 152 kB
  • ctags: 45
  • sloc: ruby: 637; makefile: 2
file content (50 lines) | stat: -rw-r--r-- 1,168 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require 'rspec'
require 'rspec/mocks'

require 'twitter/json_stream'

def fixture_path(path)
  File.join(File.dirname(__FILE__), '..', 'fixtures', path)
end

def read_fixture(path)
  File.read(fixture_path(path))
end

def connect_stream(opts={}, &blk)
  EM.run {
    opts.merge!(:host => Host, :port => Port)
    stop_in = opts.delete(:stop_in) || 0.5
    unless opts[:start_server] == false
      EM.start_server Host, Port, JSONServer
    end
    @stream = JSONStream.connect(opts)
    blk.call if blk
    EM.add_timer(stop_in){ EM.stop }
  }
end

def http_response(status_code, status_text, headers, body)
  res = "HTTP/1.1 #{status_code} #{status_text}\r\n"
  headers = {
    "Content-Type"=>"application/json",
    "Transfer-Encoding"=>"chunked"
  }.merge(headers)
  headers.each do |key,value|
    res << "#{key}: #{value}\r\n"
  end
  res << "\r\n"
  if headers["Transfer-Encoding"] == "chunked" && body.kind_of?(Array)
    body.each do |data|
      res << http_chunk(data)
    end
  else
    res << body
  end
  res
end

def http_chunk(data)
  # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6.1
  "#{data.length.to_s(16)}\r\n#{data}\r\n"
end