endless 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/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README +25 -0
- data/Rakefile +12 -0
- data/endless.gemspec +29 -0
- data/lib/endless.rb +14 -0
- data/lib/endless/app.rb +37 -0
- data/lib/endless/version.rb +3 -0
- data/tasks/console.rake +5 -0
- data/tasks/environment.rake +4 -0
- data/tasks/server.rake +4 -0
- metadata +151 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@endless --create
|
data/Gemfile
ADDED
data/README
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Endless
|
2
|
+
=======
|
3
|
+
A tiny webapp for generating an endless stream of data in an HTTP response.
|
4
|
+
|
5
|
+
|
6
|
+
Installation
|
7
|
+
============
|
8
|
+
|
9
|
+
gem install endless
|
10
|
+
|
11
|
+
|
12
|
+
Usage
|
13
|
+
=====
|
14
|
+
|
15
|
+
rake server[5678]
|
16
|
+
|
17
|
+
curl -s http://localhost:5678/endless | head -c 100
|
18
|
+
|
19
|
+
Caveats
|
20
|
+
=======
|
21
|
+
|
22
|
+
Pre-alpha software. Useful for testing purposes only.
|
23
|
+
|
24
|
+
Currently, I think the server just keeps streaming a response even after the
|
25
|
+
client disconnects, until you kill the server. Pull requests welcome!
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
Bundler.require(:default)
|
5
|
+
|
6
|
+
Dir['tasks/*.rake'].sort.each { |task| load task }
|
7
|
+
|
8
|
+
# Add rake tasks from selected gems
|
9
|
+
gem_names = []
|
10
|
+
gem_names.each do |gem_name|
|
11
|
+
Dir[File.join(Gem.searcher.find(gem_name).full_gem_path, '**', '*.rake')].each{|rake_file| load rake_file }
|
12
|
+
end
|
data/endless.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "endless/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "endless"
|
7
|
+
s.version = Endless::VERSION
|
8
|
+
s.authors = ["Chris Johnson"]
|
9
|
+
s.email = ["chris@kindkid.com"]
|
10
|
+
s.homepage = "https://github.com/kindkid/endless"
|
11
|
+
s.summary = "A tiny webapp for generating an endless stream of data in an HTTP response."
|
12
|
+
s.description = s.summary
|
13
|
+
|
14
|
+
s.rubyforge_project = "endless"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency 'async_sinatra', '~> 1.0.0'
|
22
|
+
s.add_runtime_dependency 'thin', '~> 1.3.1'
|
23
|
+
s.add_development_dependency "rspec", "~> 2.9.0"
|
24
|
+
s.add_development_dependency "simplecov", "~> 0.6.1"
|
25
|
+
s.add_development_dependency("rb-fsevent", "~> 0.9.0") if RUBY_PLATFORM =~ /darwin/i
|
26
|
+
s.add_development_dependency "guard", "~> 1.0.1"
|
27
|
+
s.add_development_dependency "guard-bundler", "~> 0.1.3"
|
28
|
+
s.add_development_dependency "guard-rspec", "~> 0.6.0"
|
29
|
+
end
|
data/lib/endless.rb
ADDED
data/lib/endless/app.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Endless
|
2
|
+
class App < Sinatra::Base
|
3
|
+
register Sinatra::Async
|
4
|
+
|
5
|
+
class DataStream
|
6
|
+
include EventMachine::Deferrable
|
7
|
+
|
8
|
+
def stream(data)
|
9
|
+
@block.call(data)
|
10
|
+
end
|
11
|
+
|
12
|
+
def each(&block)
|
13
|
+
@block = block
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def randomLetters(length)
|
18
|
+
s = []
|
19
|
+
length.times do
|
20
|
+
s << 97+rand(26)
|
21
|
+
end
|
22
|
+
s.pack('c' * s.size)
|
23
|
+
end
|
24
|
+
|
25
|
+
aget '/endless' do
|
26
|
+
out = DataStream.new
|
27
|
+
body(out)
|
28
|
+
EM.next_tick do
|
29
|
+
timer = EM.add_periodic_timer(0.001) do
|
30
|
+
s = randomLetters(8191)
|
31
|
+
s << "\n"
|
32
|
+
out.stream(s)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/tasks/console.rake
ADDED
data/tasks/server.rake
ADDED
metadata
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: endless
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Chris Johnson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: async_sinatra
|
16
|
+
requirement: &70264000444880 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70264000444880
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: thin
|
27
|
+
requirement: &70264000444220 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.3.1
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70264000444220
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70264000442480 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.9.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70264000442480
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: simplecov
|
49
|
+
requirement: &70264000441180 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.1
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70264000441180
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rb-fsevent
|
60
|
+
requirement: &70264000439660 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.9.0
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70264000439660
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard
|
71
|
+
requirement: &70264000438640 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.0.1
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70264000438640
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: guard-bundler
|
82
|
+
requirement: &70264000437440 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.1.3
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70264000437440
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: guard-rspec
|
93
|
+
requirement: &70264000436540 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.6.0
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70264000436540
|
102
|
+
description: A tiny webapp for generating an endless stream of data in an HTTP response.
|
103
|
+
email:
|
104
|
+
- chris@kindkid.com
|
105
|
+
executables: []
|
106
|
+
extensions: []
|
107
|
+
extra_rdoc_files: []
|
108
|
+
files:
|
109
|
+
- .gitignore
|
110
|
+
- .rvmrc
|
111
|
+
- Gemfile
|
112
|
+
- README
|
113
|
+
- Rakefile
|
114
|
+
- endless.gemspec
|
115
|
+
- lib/endless.rb
|
116
|
+
- lib/endless/app.rb
|
117
|
+
- lib/endless/version.rb
|
118
|
+
- tasks/console.rake
|
119
|
+
- tasks/environment.rake
|
120
|
+
- tasks/server.rake
|
121
|
+
homepage: https://github.com/kindkid/endless
|
122
|
+
licenses: []
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: -1761712717339384040
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
segments:
|
143
|
+
- 0
|
144
|
+
hash: -1761712717339384040
|
145
|
+
requirements: []
|
146
|
+
rubyforge_project: endless
|
147
|
+
rubygems_version: 1.8.10
|
148
|
+
signing_key:
|
149
|
+
specification_version: 3
|
150
|
+
summary: A tiny webapp for generating an endless stream of data in an HTTP response.
|
151
|
+
test_files: []
|