module Rollbar::Deploy
Deploy
Tracking API wrapper module
Constants
- ENDPOINT
Public Class Methods
report(opts, access_token, environment, revision)
click to toggle source
# File lib/rollbar/deploy.rb, line 8 def self.report(opts, access_token, environment, revision) return {} unless access_token && !access_token.empty? opts[:status] ||= :started uri = ::URI.parse(::Rollbar::Deploy::ENDPOINT) request_data = { :access_token => access_token, :environment => environment, :revision => revision }.merge(opts) request_data.delete(:proxy) request_data.delete(:dry_run) request = ::Net::HTTP::Post.new(uri.request_uri) request.body = ::JSON.dump(request_data) send_request(opts, uri, request) end
update(opts, access_token, deploy_id, status)
click to toggle source
# File lib/rollbar/deploy.rb, line 29 def self.update(opts, access_token, deploy_id, status) return {} unless access_token && !access_token.empty? uri = ::URI.parse( "#{::Rollbar::Deploy::ENDPOINT}#{deploy_id}?access_token=#{access_token}" ) request = ::Net::HTTP::Patch.new(uri.request_uri) request.body = ::JSON.dump(:status => status.to_s, :comment => opts[:comment]) send_request(opts, uri, request) end
Private Class Methods
build_result(uri, request, response = nil, dry_run = false)
click to toggle source
# File lib/rollbar/deploy.rb, line 56 def build_result(uri, request, response = nil, dry_run = false) result = {} result.merge!(request_result(uri, request)) result.merge!(response_result(response)) unless response.nil? result[:success] = success?(result, dry_run) result end
request_result(uri, request)
click to toggle source
# File lib/rollbar/deploy.rb, line 73 def request_result(uri, request) { :request_info => "#{uri.inspect}: #{request.body}", :request => request } end
response_result(response)
click to toggle source
# File lib/rollbar/deploy.rb, line 80 def response_result(response) code = response.code message = response.message body = response.body.delete("\n") { :response => response, :response_info => "#{code}; #{message}; #{body}" }.merge(::JSON.parse(response.body, :symbolize_names => true)) end
send_request(opts, uri, request)
click to toggle source
# File lib/rollbar/deploy.rb, line 45 def send_request(opts, uri, request) ::Net::HTTP.start(uri.host, uri.port, opts[:proxy], :use_ssl => true) do |http| build_result( uri, request, opts[:dry_run] ? nil : http.request(request), opts[:dry_run] ) end end
success?(result, dry_run = false)
click to toggle source
# File lib/rollbar/deploy.rb, line 64 def success?(result, dry_run = false) return true if dry_run result[:response] && result[:response].is_a?(::Net::HTTPSuccess) && result[:response].code == '200' && (result.key?('err') ? result['err'].to_i.zero? : true) end