Sha256: d66263f656bfeff0a040ce4bc0c16380f07a49106bcbf994c3243274b5057502
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
require 'webmachine' require 'json' require 'cgi' require 'pact_broker/services' require 'pact_broker/resources/json_resource' require 'pact_broker/api/representors' module PactBroker module Resources class Pacticipant < Webmachine::Resource include PactBroker::Services include PactBroker::Resources::PathInfo def content_types_provided [["application/hal+json", :to_json]] end def content_types_accepted [["application/json", :from_json]] end def handle_exception e PactBroker::Resources::ErrorHandler.handle_exception(e, response) end def allowed_methods ["GET", "PATCH"] end def known_methods super + ['PATCH'] end def from_json pacticipant, created = pacticipant_service.create_or_update_pacticipant( name: identifier_from_path[:name], repository_url: params[:repository_url] ) @manual_response_code = 201 if created response.body = generate_json(pacticipant) end def finish_request if @manual_response_code response.code = @manual_response_code end end def resource_exists? #Terrible hack to allow Webmachine to continue when a PATCH is used - does not seem to support it if request.method == 'PATCH' def request.method 'PUT' end end @pacticipant = pacticipant_service.find_pacticipant_by_name(identifier_from_path[:name]) @pacticipant != nil end def to_json generate_json(@pacticipant) end def generate_json pacticipant pacticipant.extend(PactBroker::Api::Representors::PacticipantRepresenter) pacticipant.to_json end def params JSON.parse(request.body.to_s) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pact_broker-0.0.5 | lib/pact_broker/resources/pacticipant.rb |