aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/zero/request/server.rb7
-rw-r--r--spec/unit/zero/request/server/name_spec.rb20
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/zero/request/server.rb b/lib/zero/request/server.rb
index 0aa82c8..c301fd1 100644
--- a/lib/zero/request/server.rb
+++ b/lib/zero/request/server.rb
@@ -36,6 +36,13 @@ module Zero
# get the server software
# @return [String] the server software name
attr_reader :software
+
+ # returns the full name of the server
+ # @return [String] the full address to the server
+ def name
+ return @name if @name
+ @name = protocol + '://' + hostname + ':' + port.to_s
+ end
end
end
end
diff --git a/spec/unit/zero/request/server/name_spec.rb b/spec/unit/zero/request/server/name_spec.rb
new file mode 100644
index 0000000..0537fb7
--- /dev/null
+++ b/spec/unit/zero/request/server/name_spec.rb
@@ -0,0 +1,20 @@
+require 'spec_helper'
+
+describe Zero::Request::Server, '#name' do
+ subject { Zero::Request::Server.new(env) }
+ let(:hostname) { 'FooName' }
+ let(:port) { '80' }
+ let(:protocol) { 'http' }
+ let(:result) { 'http://FooName:80' }
+
+ let(:env) { EnvGenerator.get('/foo', {
+ 'SERVER_NAME' => hostname,
+ 'SERVER_PROTOCOL' => protocol,
+ 'SERVER_PORT' => port
+ }) }
+
+ it "generates a name" do
+ expect(subject.name).to match(result)
+ end
+end
+