module Tamber
  class Discover < APIResource
    def self.next(params={})
      response = request(:get, self.next_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.recommended(params={})
      response = request(:get, self.recommended_url, params)
      Util.convert_to_tamber_object(response)
    end 

    def self.weekly(params={})
      response = request(:get, self.weekly_url, params)
      Util.convert_to_tamber_object(response)
    end 

    def self.daily(params={})
      response = request(:get, self.daily_url, params)
      Util.convert_to_tamber_object(response)
    end 

    def self.meta(params={})
      response = request(:get, self.meta_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.popular(params={})
      response = request(:get, self.popular_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.hot(params={})
      response = request(:get, self.hot_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.uac(params={})
      response = request(:get, self.uac_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.new(params={})
      response = request(:get, self.new_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.uac(params={})
      response = request(:get, self.uac_url, params)
      Util.convert_to_tamber_object(response)
    end

    def self.recommended_url
      url + '/recommended'
    end

    def self.next_url
      url + '/next'
    end

    def self.weekly_url
      url + '/weekly'
    end

    def self.daily_url
      url + '/daily'
    end

    def self.meta_url
      url + '/meta'
    end

    def self.popular_url
      url + '/popular'
    end

    def self.hot_url
      url + '/hot'
    end

    def self.uac_url
      url + '/uac'
    end

    def self.new_url
      url + '/new'
    end

    class UserTrend < APIResource
      def self.popular(params={})
        response = request(:get, self.popular_url, params)
        Util.convert_to_tamber_object(response)
      end 

      def self.hot(params={})
        response = request(:get, self.hot_url, params)
        Util.convert_to_tamber_object(response)
      end

      def self.uac(params={})
        response = request(:get, self.uac_url, params)
        Util.convert_to_tamber_object(response)
      end

      def self.popular_url
        url + '/popular'
      end

      def self.hot_url
        url + '/hot'
      end

      def self.uac_url
        url + '/uac'
      end
    end

    # deprecated
    class Basic < APIResource
      def self.recommended(params={})
        warn "[DEPRECATION] `Discover.Basic.recommended` is deprecated.  Please use `Discover.recommended` instead."
        response = request(:get, self.recommended_url, params)
        Util.convert_to_tamber_object(response)
      end 

      def self.similar(params={})
        warn "[DEPRECATION] `Discover.Basic.similar` is deprecated.  Please use `Discover.next` instead."
        response = request(:get, self.similar_url, params)
        Util.convert_to_tamber_object(response)
      end

      def self.recommendedSimilar(params={})
        warn "[DEPRECATION] `Discover.Basic.recommendedSimilar` is deprecated.  Please use `Discover.next` instead."
        response = request(:get, self.recommendedSimilar_url, params)
        Util.convert_to_tamber_object(response)
      end
      def self.recommended_url
        url + '/recommended'
      end

      def self.similar_url
        url + '/similar'
      end

      def self.recommendedSimilar_url
        url + '/recommended_similar'
      end
    end
  end

  # Discover requests return an array of 'discovery' objects
  class Discovery < TamberObject
  end
end