/// <summary>
        /// Create a new listener for the ApiConsumer. This corresponds to the
        /// listener.create Hyves method.
        /// </summary>
        /// <param name="type">Type of listener to create.</param>
        /// <param name="callback">Url to do the callback to.</param>
        /// <returns>The new listener; null if the call fails.</returns>
        public Listener CreateListener(HyvesListenerType type, string callback)
        {
            if (type == HyvesListenerType.NotSpecified)
            {
                throw new ArgumentException("type");
            }

            if (string.IsNullOrEmpty(callback))
            {
                throw new ArgumentException("callback");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            switch (type)
            {
            case HyvesListenerType.AccesstokenRevoke:
                request.Parameters["type"] = "accesstoken_revoke";
                break;
            }

            request.Parameters["callback"] = callback;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersCreate);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessSingleItemResponse <Listener>("listener"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired listeners from the specified type. This corresponds to the
        /// listeners.getByType Hyves method.
        /// </summary>
        /// <param name="type">Type of listeners to retrieve.</param>
        /// <returns>The information about the specified listener; null if the call fails.</returns>
        public Collection <Listener> GetListenersByType(HyvesListenerType type)
        {
            if (type == HyvesListenerType.NotSpecified)
            {
                throw new ArgumentNullException("type");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            switch (type)
            {
            case HyvesListenerType.AccesstokenRevoke:
                request.Parameters["type"] = "accesstoken_revoke";
                break;
            }

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersGetByType, false);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Listener>("listener"));
            }

            return(null);
        }
		/// <summary>
		/// Gets the desired listeners from the specified type. This corresponds to the
		/// listeners.getByType Hyves method.
		/// </summary>
		/// <param name="type">Type of listeners to retrieve.</param>
		/// <returns>The information about the specified listener; null if the call fails.</returns>
		public Collection<Listener> GetListenersByType(HyvesListenerType type)
		{			
			if (type == HyvesListenerType.NotSpecified)
			{
				throw new ArgumentNullException("type");
			}

			HyvesRequest request = new HyvesRequest(this.session);
			switch (type)
			{
				case HyvesListenerType.AccesstokenRevoke:
					request.Parameters["type"] = "accesstoken_revoke";
					break;
			}

			HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersGetByType, false);
			if (response.Status == HyvesResponseStatus.Succeeded)
      {
        return response.ProcessResponse<Listener>("listener");
			}

			return null;
		}
		/// <summary>
		/// Create a new listener for the ApiConsumer. This corresponds to the
		/// listener.create Hyves method.
		/// </summary>
		/// <param name="type">Type of listener to create.</param>
		/// <param name="callback">Url to do the callback to.</param>
		/// <returns>The new listener; null if the call fails.</returns>
		public Listener CreateListener(HyvesListenerType type, string callback)
		{
			if (type == HyvesListenerType.NotSpecified)
			{
				throw new ArgumentException("type");
			}

			if (string.IsNullOrEmpty(callback))
			{
				throw new ArgumentException("callback");
			}

			HyvesRequest request = new HyvesRequest(this.session);
			switch (type)
			{
				case HyvesListenerType.AccesstokenRevoke:
					request.Parameters["type"] = "accesstoken_revoke";
					break;
			}

			request.Parameters["callback"] = callback;
			
			HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersCreate);
			if (response.Status == HyvesResponseStatus.Succeeded)
      {
        return response.ProcessSingleItemResponse<Listener>("listener");
			}

			return null;
		}