Class: Kitsu::User

Inherits:
Object
  • Object
show all
Defined in:
lib/kitsu/user.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ User

Returns a new instance of User.



5
6
7
# File 'lib/kitsu/user.rb', line 5

def initialize(data)
  @data = data
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



3
4
5
# File 'lib/kitsu/user.rb', line 3

def data
  @data
end

Class Method Details

.find(username) ⇒ Object



39
40
41
42
# File 'lib/kitsu/user.rb', line 39

def self.find(username)
  parsed = API.get("users?filter[name]=#{username}")
  self.new(parsed['data'].first)
end

Instance Method Details

#anime(**filters) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/kitsu/user.rb', line 9

def anime(**filters)
  anime = anime_related.map do |parsed|
    Kitsu::Anime.new(parsed)
  end

  anime.select do |a|
    filters.all? do |key, value|
      a.data['attributes'][key.to_s] == value
    end
  end
end


21
22
23
# File 'lib/kitsu/user.rb', line 21

def anime_related
  library_entries.map(&:related_anime).flatten
end

#library_entriesObject



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/kitsu/user.rb', line 25

def library_entries
  parsed = API.get(@data['relationships']['libraryEntries']['links']['related'])

  library_entries = [parsed]
  loop do
    parsed = API.get(parsed['links']['next'])
    library_entries << parsed
    break unless parsed['links'].key? 'next'
  end
  library_entries.flatten.map do |parsed|
    Kitsu::LibraryEntry.new(parsed)
  end
end