Sha256: 39f5aeba96f17ae6a2c6593007508601a4b1a335114f908d524ba22544c09e9c
Contents?: true
Size: 1.92 KB
Versions: 2
Compression:
Stored size: 1.92 KB
Contents
require 'capistrano' module Rollbar # Deploy Tracking API wrapper module module Deploy ENDPOINT = 'https://api.rollbar.com/api/1/deploy/'.freeze def self.report(opts = {}, access_token:, environment:, revision:) opts[:status] ||= :started uri = URI.parse(::Rollbar::Deploy::ENDPOINT) request = Net::HTTP::Post.new(uri.request_uri) request.body = ::JSON.dump({ :access_token => access_token, :environment => environment, :revision => revision }.merge(opts)) send_request(opts, :uri => uri, :request => request) end def self.update(opts = {}, deploy_id:, access_token:, status:) uri = URI.parse( ::Rollbar::Deploy::ENDPOINT + deploy_id.to_s + '?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 => uri, :request => request) end class << self private def send_request(opts = {}, uri:, request:) Net::HTTP.start(uri.host, uri.port, opts[:proxy], :use_ssl => true) do |http| build_result( :uri => uri, :request => request, :response => opts[:dry_run] ? nil : http.request(request) ) end end def build_result(uri:, request:, response: nil) result = { :request_info => uri.inspect + ': ' + request.body, :request => request, :response => response } unless result[:response].nil? result.merge!(JSON.parse(result[:response].body, :symbolize_names => true)) result[:response_info] = build_response_info(result[:response]) end result end def build_response_info(response) response.code + '; ' + response.message + '; ' + response.body.delete!("\n") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rollbar-2.19.1 | lib/rollbar/deploy.rb |
rollbar-2.19.0 | lib/rollbar/deploy.rb |