{app} = require 'electron'

throw new Error('Can not initialize protocol module before app is ready') unless app.isReady()

{protocol} = process.atomBinding 'protocol'

# Warn about removed APIs.
logAndThrow = (callback, message) ->
  console.error message
  if callback then callback(new Error(message)) else throw new Error(message)
protocol.registerProtocol = (scheme, handler, callback) ->
  logAndThrow callback,
              'registerProtocol API has been replaced by the
               register[File/Http/Buffer/String]Protocol API family, please
               switch to the new APIs.'
protocol.isHandledProtocol = (scheme, callback) ->
  logAndThrow callback,
              'isHandledProtocol API has been replaced by isProtocolHandled.'
protocol.interceptProtocol = (scheme, handler, callback) ->
  logAndThrow callback,
              'interceptProtocol API has been replaced by the
               intercept[File/Http/Buffer/String]Protocol API family, please
               switch to the new APIs.'

module.exports = protocol