holoserve-connector 0.1.1 → 0.2.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.rdoc CHANGED
@@ -9,15 +9,16 @@ test suite. See {holoserve}[https://github.com/skrill/holoserve] for details abo
9
9
  require 'holoserve/connector'
10
10
  require 'transport'
11
11
 
12
- holoserve = Holoserve::Connector.new :host => "localhost", :port => 8080
12
+ holoserve = Holoserve::Connector.new :host => "localhost"
13
13
 
14
- holoserve.layouts.upload_yml "./layouts/test.yml"
15
- holoserve.layouts.current = "one"
14
+ holoserve.fixtures.upload "./fixtures/*.json"
15
+ holoserve.pairs.upload "./pairs/*.yaml"
16
+ holoserve.situation.name = "one"
16
17
 
17
18
  Transport::HTTP.request :post, "/test" # handled in test layout one
18
19
  Transport::HTTP.request :delete, "/test" # unhandled
19
20
 
20
- holoserve.history.pair_names
21
+ holoserve.history.pair_ids
21
22
  # => [ "test_requested" ]
22
23
 
23
24
  holoserve.bucket.requsts
@@ -32,13 +33,13 @@ test suite. See {holoserve}[https://github.com/skrill/holoserve] for details abo
32
33
  describe "RSpec matchers" do
33
34
 
34
35
  before :all do
35
- @client = Holoserve::Bond.new
36
- @client.layouts.upload_yml File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "layouts", "test.yml"))
37
- @client.layouts.current = "one"
36
+ @client = Holoserve::Connector.new
37
+ @client.pairs.upload File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "pairs", "test.yaml"))
38
+ @client.situation.name = "one"
38
39
  end
39
40
 
40
41
  it "should test if holoserve received a specified request" do
41
- Transport::HTTP.request :post, "http://localhost:8080/test", :expected_status_code => 201
42
+ Transport::HTTP.request :post, "http://localhost:4250/test", :expected_status_code => 201
42
43
  @client.should have_received("test_request")
43
44
  end
44
45
 
@@ -6,7 +6,11 @@ class Holoserve::Connector::Bucket
6
6
  end
7
7
 
8
8
  def requests
9
- Transport::JSON.request :get, "#{@client.url}/bucket/requests"
9
+ Transport::JSON.request :get, "#{@client.url}/bucket"
10
+ end
11
+
12
+ def clear!
13
+ Transport::JSON.request :delete, "#{@client.url}/bucket"
10
14
  end
11
15
 
12
16
  end
@@ -0,0 +1,42 @@
1
+
2
+ class Holoserve::Connector::Fixtures
3
+
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ def upload(pattern)
9
+ Dir[ pattern ].each do |filename|
10
+ upload_file filename
11
+ end
12
+ end
13
+
14
+ def download(id)
15
+ response = Transport::HTTP.request :get,
16
+ "#{@client.url}/fixtures/#{id}.yaml",
17
+ :expected_status_code => 200
18
+ YAML.load response
19
+ rescue Transport::UnexpectedStatusCodeError => error
20
+ raise Holoserve::Connector::Error, error.message unless error.status_code == 404
21
+ nil
22
+ end
23
+
24
+ def clear!
25
+ Transport::JSON.request :delete, "#{@client.url}/fixtures"
26
+ end
27
+
28
+ private
29
+
30
+ def upload_file(filename)
31
+ uploader = Holoserve::Connector::Tool::Uploader.new filename,
32
+ :post,
33
+ "#{@client.url}/fixtures",
34
+ :expected_status_code => 200
35
+ uploader.upload
36
+ true
37
+ rescue Transport::UnexpectedStatusCodeError => error
38
+ raise Holoserve::Connector::Error, error.message unless error.status_code == 400
39
+ false
40
+ end
41
+
42
+ end
@@ -9,8 +9,8 @@ class Holoserve::Connector::History
9
9
  Transport::JSON.request :delete, "#{@client.url}/history"
10
10
  end
11
11
 
12
- def pair_names
13
- Transport::JSON.request :get, "#{@client.url}/history "
12
+ def pair_ids
13
+ Transport::JSON.request :get, "#{@client.url}/history"
14
14
  end
15
15
 
16
- end
16
+ end
@@ -0,0 +1,43 @@
1
+ require 'yaml'
2
+
3
+ class Holoserve::Connector::Pairs
4
+
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def upload(pattern)
10
+ Dir[ pattern ].each do |filename|
11
+ upload_file filename
12
+ end
13
+ end
14
+
15
+ def download(id)
16
+ response = Transport::HTTP.request :get,
17
+ "#{@client.url}/pairs/#{id}.yaml",
18
+ :expected_status_code => 200
19
+ YAML.load response
20
+ rescue Transport::UnexpectedStatusCodeError => error
21
+ raise Holoserve::Connector::Error, error.message unless error.status_code == 404
22
+ nil
23
+ end
24
+
25
+ def clear!
26
+ Transport::JSON.request :delete, "#{@client.url}/pairs"
27
+ end
28
+
29
+ private
30
+
31
+ def upload_file(filename)
32
+ uploader = Holoserve::Connector::Tool::Uploader.new filename,
33
+ :post,
34
+ "#{@client.url}/pairs",
35
+ :expected_status_code => 200
36
+ uploader.upload
37
+ true
38
+ rescue Transport::UnexpectedStatusCodeError => error
39
+ raise Holoserve::Connector::Error, error.message unless error.status_code == 400
40
+ false
41
+ end
42
+
43
+ end
@@ -0,0 +1,22 @@
1
+
2
+ class Holoserve::Connector::Situation
3
+
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ def name=(value)
9
+ Transport::JSON.request :put, "#{@client.url}/situation", :parameters => { :name => value }
10
+ end
11
+
12
+ def name
13
+ response = Transport::JSON.request :get, "#{@client.url}/situation"
14
+ name = response["name"]
15
+ name == "" ? nil : name
16
+ end
17
+
18
+ def clear!
19
+ Transport::JSON.request :put, "#{@client.url}/situation", :parameters => { :name => nil }
20
+ end
21
+
22
+ end
@@ -0,0 +1,40 @@
1
+ require 'transport'
2
+
3
+ class Holoserve::Connector::Tool::Uploader
4
+
5
+ def initialize(filename, http_method, url, options = { })
6
+ @filename, @http_method, @url, @options = filename, http_method, url, options
7
+ end
8
+
9
+ def upload
10
+ Transport::HTTP.request @http_method, @url, @options.merge(:headers => headers, :body => body)
11
+ end
12
+
13
+ private
14
+
15
+ def headers
16
+ { "Content-Type" => "multipart/form-data, boundary=#{boundary}" }
17
+ end
18
+
19
+ def body
20
+ "--#{boundary}\r\n" +
21
+ "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(@filename)}\"\r\n" +
22
+ "Content-Type: #{content_type}\r\n" +
23
+ "\r\n" +
24
+ File.read(@filename) +
25
+ "\r\n" +
26
+ "--#{boundary}--\r\n"
27
+ end
28
+
29
+ def content_type
30
+ {
31
+ "yaml" => "application/x-yaml",
32
+ "json" => "application/json"
33
+ }[ File.extname(@filename) ] || "text/plain"
34
+ end
35
+
36
+ def boundary
37
+ "xxx12345xxx"
38
+ end
39
+
40
+ end
@@ -0,0 +1,6 @@
1
+
2
+ module Holoserve::Connector::Tool
3
+
4
+ autoload :Uploader, File.join(File.dirname(__FILE__), "tool", "uploader")
5
+
6
+ end
@@ -2,26 +2,33 @@
2
2
  class Holoserve::Connector
3
3
 
4
4
  autoload :Bucket, File.join(File.dirname(__FILE__), "connector", "bucket")
5
+ autoload :Fixtures, File.join(File.dirname(__FILE__), "connector", "fixtures")
5
6
  autoload :History, File.join(File.dirname(__FILE__), "connector", "history")
6
- autoload :Layout, File.join(File.dirname(__FILE__), "connector", "layout")
7
+ autoload :Pairs, File.join(File.dirname(__FILE__), "connector", "pairs")
8
+ autoload :Situation, File.join(File.dirname(__FILE__), "connector", "situation")
9
+ autoload :Tool, File.join(File.dirname(__FILE__), "connector", "tool")
7
10
 
8
11
  class Error < StandardError; end
9
12
 
10
13
  attr_reader :host
11
14
  attr_reader :port
12
15
 
13
- attr_reader :layout
14
16
  attr_reader :bucket
17
+ attr_reader :fixtures
15
18
  attr_reader :history
19
+ attr_reader :pairs
20
+ attr_reader :situation
16
21
 
17
22
  def initialize(options = { })
18
23
  @host, @port = *options.values_at(:host, :port)
19
24
  @host ||= "localhost"
20
25
  @port ||= 4250
21
26
 
22
- @layout = Layout.new self
23
27
  @bucket = Bucket.new self
28
+ @fixtures = Fixtures.new self
24
29
  @history = History.new self
30
+ @pairs = Pairs.new self
31
+ @situation = Situation.new self
25
32
  end
26
33
 
27
34
  def url
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holoserve-connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
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-17 00:00:00.000000000 Z
12
+ date: 2012-02-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: transport
16
- requirement: &70248250590080 !ruby/object:Gem::Requirement
16
+ requirement: &70096261721080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70248250590080
24
+ version_requirements: *70096261721080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: holoserve
27
- requirement: &70248250588860 !ruby/object:Gem::Requirement
27
+ requirement: &70096261720480 !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: :development
34
34
  prerelease: false
35
- version_requirements: *70248250588860
35
+ version_requirements: *70096261720480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &70248250587660 !ruby/object:Gem::Requirement
38
+ requirement: &70096261736180 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70248250587660
46
+ version_requirements: *70096261736180
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70248250586220 !ruby/object:Gem::Requirement
49
+ requirement: &70096261735580 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70248250586220
57
+ version_requirements: *70096261735580
58
58
  description: Provides a client for the control interface of holoserve and some RSpec
59
59
  matchers.
60
60
  email: philipp.bruell@skrill.com
@@ -67,8 +67,12 @@ files:
67
67
  - LICENSE
68
68
  - Rakefile
69
69
  - lib/holoserve/connector/bucket.rb
70
+ - lib/holoserve/connector/fixtures.rb
70
71
  - lib/holoserve/connector/history.rb
71
- - lib/holoserve/connector/layout.rb
72
+ - lib/holoserve/connector/pairs.rb
73
+ - lib/holoserve/connector/situation.rb
74
+ - lib/holoserve/connector/tool/uploader.rb
75
+ - lib/holoserve/connector/tool.rb
72
76
  - lib/holoserve/connector.rb
73
77
  - lib/rspec/holoserve.rb
74
78
  - spec/helper.rb
@@ -88,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
92
  version: '0'
89
93
  segments:
90
94
  - 0
91
- hash: 4236575270905341654
95
+ hash: -1743870002252913970
92
96
  required_rubygems_version: !ruby/object:Gem::Requirement
93
97
  none: false
94
98
  requirements:
@@ -1,59 +0,0 @@
1
- require 'transport'
2
-
3
- class Holoserve::Connector::Layout
4
-
5
- def initialize(client)
6
- @client = client
7
-
8
- @boundary = "xxx12345xxx"
9
- end
10
-
11
- def clear!
12
- Transport::JSON.request :delete,
13
- "#{@client.url}/layout",
14
- :expected_status_code => 200
15
- end
16
-
17
- def upload_yaml(filename)
18
- Transport::HTTP.request :post,
19
- "#{@client.url}/layout.yaml",
20
- :body => upload_yaml_file_request_body(filename),
21
- :headers => {
22
- "Content-Type" => "multipart/form-data, boundary=#{@boundary}"
23
- },
24
- :expected_status_code => 200
25
- true
26
- rescue Transport::UnexpectedStatusCodeError => error
27
- raise Holoserve::Connector::Error, error.message
28
- end
29
-
30
- def download_yaml
31
- response = Transport::HTTP.request :get,
32
- "#{@client.url}/layout.yaml",
33
- :expected_status_code => 200
34
- YAML.load response
35
- rescue Transport::UnexpectedStatusCodeError => error
36
- raise Holoserve::Connector::Error, error.message
37
- end
38
-
39
- def situation=(value)
40
- Transport::JSON.request :put, "#{@client.url}/situation/#{value}"
41
- end
42
-
43
- def situation
44
- Transport::HTTP.request :get, "#{@client.url}/situation"
45
- end
46
-
47
- private
48
-
49
- def upload_yaml_file_request_body(filename)
50
- "--#{@boundary}\r\n" +
51
- "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(filename)}\"\r\n" +
52
- "Content-Type: application/x-yaml\r\n" +
53
- "\r\n" +
54
- File.read(filename) +
55
- "\r\n" +
56
- "--#{@boundary}--\r\n"
57
- end
58
-
59
- end