harper 0.0.3 → 0.0.4

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/Gemfile.lock CHANGED
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- harper (0.0.3)
4
+ harper (0.0.4)
5
5
  httparty
6
6
  json (>= 1.4.6)
7
7
  sinatra (>= 1.0.0)
8
+ trollop
8
9
 
9
10
  GEM
10
11
  remote: http://rubygems.org/
@@ -27,7 +28,7 @@ GEM
27
28
  multi_json
28
29
  multi_xml
29
30
  json (1.6.5)
30
- multi_json (1.0.4)
31
+ multi_json (1.1.0)
31
32
  multi_xml (0.4.1)
32
33
  rack (1.4.1)
33
34
  rack-protection (1.2.0)
@@ -54,6 +55,7 @@ GEM
54
55
  highline (>= 1.4.0)
55
56
  term-ansicolor (1.0.7)
56
57
  tilt (1.3.3)
58
+ trollop (1.16.2)
57
59
 
58
60
  PLATFORMS
59
61
  ruby
data/bin/harper CHANGED
@@ -1,11 +1,44 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "harper"
4
+ require "trollop"
5
+ require "open3"
4
6
 
5
- port = ARGV.shift || 4567
7
+ opts = Trollop::options do
8
+ opt :port, "The port to run Harper on", :default => 4567
9
+ opt :bg, "Run in the background", :default => false
10
+ end
11
+
12
+ def start(port)
13
+ server = Rack::Server.new :app => Harper::App, :Port => port, :server => 'webrick'
14
+ Harper::App.server(server.server)
15
+ server.start
16
+ end
17
+
18
+ def start_in_background(port)
19
+ read, write = IO.pipe
20
+
21
+ fork do
22
+ read.close
23
+ Open3.popen2({}, "harper --port #{port}", {:err => [:child, :out]}) do |i, o|
24
+ found_start = false
25
+ while !found_start && line = o.readline
26
+ if line =~ /WEBrick::HTTPServer#start/
27
+ write.puts "Harper started"
28
+ found_start = true
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ write.close
35
+ read.readline
36
+ end
6
37
 
7
38
  # Harper needs access to the server hosting itself so that it can shut
8
39
  # it down on demand
9
- server = Rack::Server.new :app => Harper::App, :Port => port, :server => 'webrick'
10
- Harper::App.server(server.server)
11
- server.start
40
+ if opts[:bg]
41
+ start_in_background(opts[:port])
42
+ else
43
+ start(opts[:port])
44
+ end
data/harper.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency "sinatra", ">= 1.0.0"
20
20
  s.add_dependency "httparty"
21
21
  s.add_dependency "json", ">= 1.4.6"
22
+ s.add_dependency "trollop"
22
23
 
23
24
  s.add_development_dependency "rack-test"
24
25
  s.add_development_dependency "sham_rack"
@@ -0,0 +1,36 @@
1
+ require 'httparty'
2
+ require 'json'
3
+
4
+ class HarperClient
5
+ include HTTParty
6
+
7
+ base_uri "localhost:4568"
8
+
9
+ def initialize
10
+ @started = false
11
+ end
12
+
13
+ def started?
14
+ @started
15
+ end
16
+
17
+ def start
18
+ system("harper --port 4568 --bg")
19
+ @started = true
20
+ end
21
+
22
+ def stop
23
+ self.class.put "/h/control", :body => {:command => "quit"}.to_json
24
+ @started = false
25
+ end
26
+
27
+ def mock(mock)
28
+ mock_body = case mock
29
+ when String
30
+ mock
31
+ else
32
+ mock.to_json
33
+ end
34
+ self.class.post "/h/mocks", :body => mock_body
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Harper
2
- Version = "0.0.3"
2
+ Version = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harper
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:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-29 00:00:00.000000000 Z
12
+ date: 2012-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70267968221820 !ruby/object:Gem::Requirement
16
+ requirement: &70306501088500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70267968221820
24
+ version_requirements: *70306501088500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &70267968220540 !ruby/object:Gem::Requirement
27
+ requirement: &70306501087560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70267968220540
35
+ version_requirements: *70306501087560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70267968218680 !ruby/object:Gem::Requirement
38
+ requirement: &70306501086480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,21 @@ dependencies:
43
43
  version: 1.4.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70267968218680
46
+ version_requirements: *70306501086480
47
+ - !ruby/object:Gem::Dependency
48
+ name: trollop
49
+ requirement: &70306501085640 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70306501085640
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: rack-test
49
- requirement: &70267968217900 !ruby/object:Gem::Requirement
60
+ requirement: &70306501084920 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70267968217900
68
+ version_requirements: *70306501084920
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: sham_rack
60
- requirement: &70267968217200 !ruby/object:Gem::Requirement
71
+ requirement: &70306501084320 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70267968217200
79
+ version_requirements: *70306501084320
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rspec
71
- requirement: &70267968216220 !ruby/object:Gem::Requirement
82
+ requirement: &70306501083780 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70267968216220
90
+ version_requirements: *70306501083780
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: cucumber
82
- requirement: &70267968215240 !ruby/object:Gem::Requirement
93
+ requirement: &70306501083040 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: '0.10'
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70267968215240
101
+ version_requirements: *70306501083040
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: cucumber-sinatra
93
- requirement: &70267968214820 !ruby/object:Gem::Requirement
104
+ requirement: &70306501075940 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ! '>='
@@ -98,7 +109,7 @@ dependencies:
98
109
  version: '0'
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *70267968214820
112
+ version_requirements: *70306501075940
102
113
  description: Dead simple mocking for HTTP services, a Sinatra app
103
114
  email:
104
115
  - giles.alexander@gmail.com
@@ -123,6 +134,7 @@ files:
123
134
  - harper.gemspec
124
135
  - lib/harper.rb
125
136
  - lib/harper/app.rb
137
+ - lib/harper/client.rb
126
138
  - lib/harper/version.rb
127
139
  - spec/harper_spec.rb
128
140
  - spec/spec_helper.rb