41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
module Support
|
|
module Formats
|
|
def json_response
|
|
response = respond_to?(:last_response) ? last_response : self.response
|
|
ActiveSupport::JSON.decode(response.body)
|
|
end
|
|
|
|
def xml_response
|
|
response = respond_to?(:last_response) ? last_response : self.response
|
|
ActiveSupport::XmlMini.parse(response.body)
|
|
end
|
|
|
|
def json_for_http(object, options = {})
|
|
normalize_json(Travis::Renderer.json(object, options))
|
|
end
|
|
|
|
def json_for_pusher(event, object)
|
|
normalize_json(Travis::Event::Handler::Pusher::Payload.new(event, object).to_hash)
|
|
end
|
|
|
|
def json_for_webhook(object)
|
|
normalize_json(Travis::Event::Handler::Webhook::Payload.new(object).to_hash)
|
|
end
|
|
|
|
def json_for_worker(object, extra = {})
|
|
normalize_json(Travis::Event::Handler::Worker::Payload.new(object).to_hash)
|
|
end
|
|
|
|
# normalizes datetime objects to strings etc. more similar to what the client would see.
|
|
def normalize_json(json)
|
|
json = json.to_json unless json.is_a?(String)
|
|
JSON.parse(json)
|
|
end
|
|
|
|
def json_format_time(time)
|
|
time.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
end
|
|
end
|
|
end
|
|
|