Sha256: 0889b25b114ee1638607dbdb635f6b6ca01464e99aaaf1ecac76b29387b3df77
Contents?: true
Size: 1.82 KB
Versions: 3
Compression:
Stored size: 1.82 KB
Contents
# frozen_string_literal: true require "zlib" require "stringio" require_relative "../base" module Neetob class CLI module Heroku class AutoscalingConfig < Base attr_accessor :app def initialize(app) super() @app = app end def run raise(StandardError, "HEROKU_API_KEY is not given") if ENV["HEROKU_API_KEY"].nil? url = create_url(app) response = get(url) if response.any? { |addon| addon[:addon_service][:name] == "judoscale" } ui.success("Judoscale addon is enabled for #{app}") else ui.error("Judoscale not present for #{app}") end end private def create_url(app) "https://api.heroku.com/apps/#{app}/addons" end def parse_response(http_result) case http_result when Net::HTTPSuccess compressed_string = StringIO.new(http_result.body) response = Zlib::GzipReader.new(compressed_string).read JSON.parse(response, symbolize_names: true) else error_message = JSON.parse(http_result.body)["message"] raise(StandardError, "Request failed with status code #{http_result.code}: #{error_message}") end end def get(url, headers: { "Accept" => "application/vnd.heroku+json; version=3", "Authorization" => "Bearer #{ENV["HEROKU_API_KEY"]}" }) uri = URI(url) request = Net::HTTP::Get.new(uri) headers.each { |key, value| request[key] = value } response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| http.request(request) end parse_response(response) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
neetob-0.4.36 | lib/neetob/cli/heroku/autoscaling_config.rb |
neetob-0.4.35 | lib/neetob/cli/heroku/autoscaling_config.rb |
neetob-0.4.34 | lib/neetob/cli/heroku/autoscaling_config.rb |