# File lib/heroku/client/heroku_postgresql.rb, line 10 def self.add_headers(headers) @headers.merge! headers end
# File lib/heroku/client/heroku_postgresql.rb, line 14 def self.headers @headers end
# File lib/heroku/client/heroku_postgresql.rb, line 19 def initialize(attachment) @attachment = attachment if attachment.resource_name == 'SHARED_DATABASE' error('This command is not available for shared database') end require 'rest_client' end
# File lib/heroku/client/heroku_postgresql.rb, line 64 def get_database(extended=false) query = extended ? '?extended=true' : '' http_get resource_name + query end
# File lib/heroku/client/heroku_postgresql.rb, line 69 def get_wait_status http_get "#{resource_name}/wait_status" end
# File lib/heroku/client/heroku_postgresql.rb, line 27 def heroku_postgresql_host if attachment.starter_plan? ENV["HEROKU_POSTGRESQL_HOST"] || "postgres-starter-api" else if ENV['SHOGUN'] "shogun-#{ENV['SHOGUN']}" else ENV["HEROKU_POSTGRESQL_HOST"] || "postgres-api" end end end
# File lib/heroku/client/heroku_postgresql.rb, line 43 def heroku_postgresql_resource RestClient::Resource.new( "https://#{heroku_postgresql_host}.heroku.com/client/v11/databases", :user => Heroku::Auth.user, :password => Heroku::Auth.password, :headers => self.class.headers ) end
# File lib/heroku/client/heroku_postgresql.rb, line 52 def ingress http_put "#{resource_name}/ingress" end
# File lib/heroku/client/heroku_postgresql.rb, line 56 def reset http_put "#{resource_name}/reset" end
# File lib/heroku/client/heroku_postgresql.rb, line 39 def resource_name attachment.resource_name end
# File lib/heroku/client/heroku_postgresql.rb, line 60 def rotate_credentials http_post "#{resource_name}/credentials_rotation" end
# File lib/heroku/client/heroku_postgresql.rb, line 73 def unfollow http_put "#{resource_name}/unfollow" end
# File lib/heroku/client/heroku_postgresql.rb, line 89 def checking_client_version begin yield rescue RestClient::BadRequest => e if message = json_decode(e.response.to_s)["upgrade_message"] abort(message) else raise e end end end
# File lib/heroku/client/heroku_postgresql.rb, line 101 def display_heroku_warning(response) warning = response.headers[:x_heroku_warning] display warning if warning response end
# File lib/heroku/client/heroku_postgresql.rb, line 107 def http_get(path) checking_client_version do retry_on_exception(RestClient::Exception) do response = heroku_postgresql_resource[path].get display_heroku_warning response sym_keys(json_decode(response.to_s)) end end end
# File lib/heroku/client/heroku_postgresql.rb, line 117 def http_post(path, payload = {}) checking_client_version do response = heroku_postgresql_resource[path].post(json_encode(payload)) display_heroku_warning response sym_keys(json_decode(response.to_s)) end end
# File lib/heroku/client/heroku_postgresql.rb, line 125 def http_put(path, payload = {}) checking_client_version do response = heroku_postgresql_resource[path].put(json_encode(payload)) display_heroku_warning response sym_keys(json_decode(response.to_s)) end end
# File lib/heroku/client/heroku_postgresql.rb, line 79 def sym_keys(c) if c.is_a?(Array) c.map { |e| sym_keys(e) } else c.inject({}) do |h, (k, v)| h[k.to_sym] = v; h end end end