# File lib/heroku-shared-postgresql/client.rb, line 9 def initialize(url) @heroku_shared_postgresql_host = ENV["HEROKU_SHARED_POSTGRESQL_HOST"] || "https://heroku-shared-production.herokuapp.com" @database_sha = sha(url) @heroku_shared_postgresql_resource = RestClient::Resource.new( "#{@heroku_shared_postgresql_host}/client/v1", :headers => { :x_heroku_gem_version => Heroku::Client.version, :x_heroku_shared_postgresql_token => @database_sha, :accept => 'application/json' } ) end
# File lib/heroku-shared-postgresql/client.rb, line 22 def reset_database http_post("/reset-database") end
# File lib/heroku-shared-postgresql/client.rb, line 26 def reset_password http_post("/reset-password") end
# File lib/heroku-shared-postgresql/client.rb, line 30 def show_info http_get("/info") end
# File lib/heroku-shared-postgresql/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
# File lib/heroku-shared-postgresql/client.rb, line 52 def display_heroku_warning(response) warning = response.headers[:x_heroku_warning] display warning if warning response end
# File lib/heroku-shared-postgresql/client.rb, line 58 def http_get(path) checking_client_version do retry_on_exception(RestClient::Exception) do response = @heroku_shared_postgresql_resource[path].get display_heroku_warning response json_decode(response.to_s) end end end
# File lib/heroku-shared-postgresql/client.rb, line 68 def http_post(path, payload = {}) checking_client_version do response = @heroku_shared_postgresql_resource[path].post(json_encode(payload)) display_heroku_warning response json_decode(response.to_s) end end
# File lib/heroku-shared-postgresql/client.rb, line 76 def http_put(path, payload = {}) checking_client_version do response = @heroku_shared_postgresql_resource[path].put(json_encode(payload)) display_heroku_warning response json_decode(response.to_s) end end
# File lib/heroku-shared-postgresql/client.rb, line 36 def sha(url) Digest::SHA2.hexdigest(url) end