class HerokuPostgresAddon::Client

Public Class Methods

new(url) click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 9
 def initialize(url)
   @heroku_postgres_addon_host = ENV["HEROKU_POSTGRES_ADDON_HOST"] || "https://postgres-addon.herokuapp.com"
   @database_sha = sha(url)
   @heroku_postgres_resource = RestClient::Resource.new(
     "#{@heroku_postgres_addon_host}/client/v1",
     :headers => {
       :x_heroku_gem_version => Heroku::Client.version,
       :x_heroku_shared_postgresql_token => @database_sha,
       :accept => 'application/json'
     }
   )
end

Public Instance Methods

reset_database() click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 22
def reset_database
  http_post("/reset-database")
end
reset_password() click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 26
def reset_password
  http_post("/reset-password")
end
show_info() click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 30
def show_info
  http_get("/info")
end

Protected Instance Methods

checking_client_version() { || ... } click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 40
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-postgres-addon/client.rb, line 52
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-postgres-addon/client.rb, line 58
def http_get(path)
  checking_client_version do
    retry_on_exception(RestClient::Exception) do
      response = @heroku_postgres_resource[path].get
      display_heroku_warning response
      json_decode(response.to_s)
    end
  end
end
http_post(path, payload = {}) click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 68
def http_post(path, payload = {})
  checking_client_version do
    response = @heroku_postgres_resource[path].post(json_encode(payload))
    display_heroku_warning response
    json_decode(response.to_s)
  end
end
http_put(path, payload = {}) click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 76
def http_put(path, payload = {})
  checking_client_version do
    response = @heroku_postgres_resource[path].put(json_encode(payload))
    display_heroku_warning response
    json_decode(response.to_s)
  end
end
sha(url) click to toggle source
# File lib/heroku-postgres-addon/client.rb, line 36
def sha(url)
  Digest::SHA2.hexdigest(url)
end