class Heroku::Client::HerokuPostgresql
Constants
- Version
Attributes
attachment[R]
Public Class Methods
add_headers(headers)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 10 def self.add_headers(headers) @headers.merge! headers end
headers()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 14 def self.headers @headers end
new(attachment)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 19 def initialize(attachment) @attachment = attachment require 'rest_client' end
Public Instance Methods
get_database(extended=false)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 65 def get_database(extended=false) query = extended ? '?extended=true' : '' http_get resource_name + query end
get_wait_status()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 70 def get_wait_status http_get "#{resource_name}/wait_status" end
heroku_postgresql_host()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 24 def heroku_postgresql_host if attachment.starter_plan? determine_host(ENV["HEROKU_POSTGRESQL_HOST"], "postgres-starter-api.heroku.com") else if ENV['SHOGUN'] "shogun-#{ENV['SHOGUN']}.herokuapp.com" else determine_host(ENV["HEROKU_POSTGRESQL_HOST"], "postgres-api.heroku.com") end end end
heroku_postgresql_resource()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 40 def heroku_postgresql_resource RestClient::Resource.new( "https://#{heroku_postgresql_host}/client/v11/databases", :user => Heroku::Auth.user, :password => Heroku::Auth.password, :headers => self.class.headers ) end
ingress()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 49 def ingress http_put "#{resource_name}/ingress" end
metrics()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 53 def metrics http_get "#{resource_name}/metrics" end
reset()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 57 def reset http_put "#{resource_name}/reset" end
resource_name()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 36 def resource_name attachment.resource_name end
rotate_credentials()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 61 def rotate_credentials http_post "#{resource_name}/credentials_rotation" end
unfollow()
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 74 def unfollow http_put "#{resource_name}/unfollow" end
Protected Instance Methods
checking_client_version() { || ... }
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 90 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
display_heroku_warning(response)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 102 def display_heroku_warning(response) warning = response.headers[:x_heroku_warning] display warning if warning response end
http_get(path)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 108 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
http_post(path, payload = {})
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 118 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
http_put(path, payload = {})
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 126 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
sym_keys(c)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 80 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
Private Instance Methods
determine_host(value, default)
click to toggle source
# File lib/heroku/client/heroku_postgresql.rb, line 136 def determine_host(value, default) if value.nil? default else "#{value}.herokuapp.com" end end