# typed: false module Mangadex class User < MangadexObject has_attributes \ :username, :roles, :version sig { params(args: T::Api::Arguments).returns(Mangadex::Api::Response[Mangadex::Chapter]) } def self.feed(**args) Mangadex::Internal::Request.get( '/user/follows/manga/feed', Mangadex::Internal::Definition.chapter_list(args), content_rating: true, auth: true, ) end sig { params(args: T::Api::Arguments).returns(Mangadex::Api::Response[Mangadex::ScanlationGroup]) } def self.followed_groups(**args) Mangadex::Internal::Request.get( '/user/follows/group', Mangadex::Internal::Definition.validate(args, { limit: { accepts: Integer }, offset: { accepts: Integer }, includes: { accepts: Array }, }), auth: true, ) end sig { params(id: String).returns(T::Boolean) } def self.follows_group(id) Mangadex::Internal::Definition.must(id) data = Mangadex::Internal::Request.get( '/user/follows/group/%{id}' % {id: id}, raw: true, auth: true, ) JSON.parse(data)['result'] == 'ok' rescue JSON::ParserError => error warn(error) false end sig { params(args: T::Api::Arguments).returns(Mangadex::Api::Response[Mangadex::User]) } def self.followed_users(**args) Mangadex::Internal::Request.get( '/user/follows/user', Mangadex::Internal::Definition.validate(args, { limit: { accepts: Integer }, offset: { accepts: Integer }, }), auth: true, ) end sig { params(id: String).returns(T::Boolean) } def self.follows_user(id) Mangadex::Internal::Definition.must(id) return if Mangadex.context.user.nil? data = Mangadex::Internal::Request.get( '/user/follows/user/%{id}' % {id: id}, raw: true, auth: true, ) JSON.parse(data)['result'] == 'ok' rescue JSON::ParserError => error warn(error) false end sig { params(args: T::Api::Arguments).returns(Mangadex::Api::Response[Mangadex::Manga]) } def self.followed_manga(**args) Mangadex::Internal::Request.get( '/user/follows/manga', Mangadex::Internal::Definition.validate(args, { limit: { accepts: Integer }, offset: { accepts: Integer }, includes: { accepts: Array }, }), auth: true, ) end sig { params(id: String).returns(T::Boolean) } def self.follows_manga(id) Mangadex::Internal::Definition.must(id) return if Mangadex.context.user.nil? data = Mangadex::Internal::Request.get( '/user/follows/manga/%{id}' % {id: id}, raw: true, auth: true, ) JSON.parse(data)['result'] == 'ok' rescue JSON::ParserError => error warn(error) false end def self.attributes_to_inspect [:username, :roles] end end end