def find(options, &block)
      check = options.dup
      check.delete(:limit)
      check.delete(:offset)
      raise ArgumentError, 'options' if check.empty?

      params = {}

      channels = options[:channel]
      if channels
        if !channels.respond_to?(:map)
          raise ArgumentError, ':channel'
        end

        params[:channel] = channels.map { |channel|
          if channel.respond_to?(:name)
            channel.name
          else
            channel.to_s
          end
        }.join(',')
      end

      game = options[:game]
      if game
        if game.respond_to?(:name)
          params[:game] = game.name
        else
          params[:game] = game.to_s
        end
      end

      if options[:hls]
        params[:hls] = true
      end

      if options[:embeddable]
        params[:embeddable] = true
      end

      return @query.connection.accumulate(
        :path => 'streams',
        :params => params,
        :json => 'streams',
        :create => -> hash { Stream.new(hash, @query) },
        :limit => options[:limit],
        :offset => options[:offset],
        &block
      )
    end
def find(options, &block)
      check = options.dup
      check.delete(:limit)
      check.delete(:offset)
      raise ArgumentError, 'options' if check.empty?

      params = {}

      channels = options[:channel]
      if channels
        if !channels.respond_to?(:map)
          raise ArgumentError, ':channel'
        end

        params[:channel] = channels.map { |channel|
          if channel.respond_to?(:name)
            channel.name
          else
            channel.to_s
          end
        }.join(',')
      end

      game = options[:game]
      if game
        if game.respond_to?(:name)
          params[:game] = game.name
        else
          params[:game] = game.to_s
        end
      end

      if options[:hls]
        params[:hls] = true
      end

      if options[:embeddable]
        params[:embeddable] = true
      end

      return @query.connection.accumulate(
        :path => 'streams',
        :params => params,
        :json => 'streams',
        :create => -> hash { Stream.new(hash, @query) },
        :limit => options[:limit],
        :offset => options[:offset],
        &block
      )
    end
Get streams for a specific game, for a set of channels, or by other criteria, sorted by descending viewer count.
 @example
   Twitch.streams.find(:game => 'League of Legends', :limit => 50)
 @example
   Twitch.streams.find(:channel => ['fgtvlive', 'incontroltv', 'destiny'])
 @example
   Twitch.streams.find(:game => 'Diablo III', :channel => ['nl_kripp', 'protech'])
 @example
   Twitch.streams.find(:game => 'League of Legends') do |stream|
     next if stream.viewer_count < 1000
     puts stream.url
   end
 @param options [Hash] Search criteria.
 @option options [String, Game, #name] :game Only return streams currently streaming the specified game.
 @option options [Array<String, Channel, #name>] :channel Only return streams for these channels.
   If a channel is not currently streaming, it is omitted. You must specify an array of channels
   or channel names. If you want to find the stream for a single channel, see {Streams#get}.
 @option options [Boolean] :embeddable (nil) If `true`, limit the streams to those that can be embedded. If `false` or `nil`, do not limit.
 @option options [Boolean] :hls (nil) If `true`, limit the streams to those using HLS (HTTP Live Streaming). If `false` or `nil`, do not limit.
 @option options [Fixnum] :limit (nil) Limit on the number of results returned.
 @option options [Fixnum] :offset (0) Offset into the result set to begin enumeration.
 @yield Optional. If a block is given, each stream found is yielded.
 @yieldparam [Stream] stream Current stream.
 @see #get
 @see https://github.com/justintv/Twitch-API/blob/master/v2_resources/streams.md#get-streams GET /streams
 @raise [ArgumentError] If `options` does not specify a search criteria (`:game`, `:channel`, `:embeddable`, or `:hls`).
 @raise [ArgumentError] If `:channel` is not an array.
 @return [Array<Stream>] Streams matching the specified criteria, sorted by
   descending viewer count, if no block is given.
 @return [nil] If a block is given.