lib/ezid/response.rb in ezid-client-0.1.0 vs lib/ezid/response.rb in ezid-client-0.1.1
- old
+ new
@@ -1,39 +1,56 @@
require "delegate"
module Ezid
+ #
# A response from the EZID service.
+ #
+ # @note A Response should only be created by an Ezid::Client instance.
+ # @api private
class Response < SimpleDelegator
+ # Success response status
SUCCESS = "success"
+
+ # Error response status
ERROR = "error"
- def self.build(http_response)
- Response.new(http_response)
- end
-
+ # The response status -- "success" or "error"
+ # @return [String] the status
def status
@status ||= status_line.split(/: /)
end
+ # The status line of the response
+ # @return [String] the status line
def status_line
content.first
end
+ # The body of the response split into: status line and rest of body
+ # @return [Array] status line, rest of body
def content
@content ||= body.split(/\r?\n/, 2)
end
+ # Metadata (if any) parsed out of the response
+ # @return [Ezid::Metadata] the metadata
def metadata
- content.last if success? && identifier_uri?
+ return @metadata if @metadata
+ if success? && identifier_uri?
+ @metadata = Metadata.new(content.last)
+ end
+ @metadata
end
+ # The identifier string parsed out of the response
+ # @return [String] the identifier
def identifier
message.split(/\s/).first if success? && identifier_uri?
end
def identifier_uri?
- uri.path =~ /^\/(id|shoulder)\//
+ ( uri.path =~ /^\/(id|shoulder)\// ) && true
end
def outcome
status.first
end