File Coverage

blib/lib/WWW/ARDB/Result/Item.pm
Criterion Covered Total %
statement 14 15 93.3
branch 2 4 50.0
condition 8 8 100.0
subroutine 5 5 100.0
pod 2 2 100.0
total 31 34 91.1


line stmt bran cond sub pod time code
1             package WWW::ARDB::Result::Item;
2             our $AUTHORITY = 'cpan:GETTY';
3              
4             # ABSTRACT: Item result object for WWW::ARDB
5              
6 6     6   85910 use Moo;
  6         9392  
  6         56  
7 6     6   4467 use Types::Standard qw( Str Int Num ArrayRef HashRef Maybe );
  6         128952  
  6         64  
8 6     6   14484 use namespace::clean;
  6         12583  
  6         44  
9              
10             our $VERSION = '0.002';
11              
12              
13             has id => (
14             is => 'ro',
15             isa => Str,
16             required => 1,
17             );
18              
19              
20             has name => (
21             is => 'ro',
22             isa => Str,
23             required => 1,
24             );
25              
26              
27             has description => (
28             is => 'ro',
29             isa => Maybe[Str],
30             default => sub { undef },
31             );
32              
33              
34             has rarity => (
35             is => 'ro',
36             isa => Maybe[Str],
37             default => sub { undef },
38             );
39              
40              
41             has type => (
42             is => 'ro',
43             isa => Maybe[Str],
44             default => sub { undef },
45             );
46              
47              
48             has value => (
49             is => 'ro',
50             isa => Maybe[Num],
51             default => sub { undef },
52             );
53              
54              
55             has weight => (
56             is => 'ro',
57             isa => Maybe[Num],
58             default => sub { undef },
59             );
60              
61              
62             has stack_size => (
63             is => 'ro',
64             isa => Maybe[Int],
65             default => sub { undef },
66             );
67              
68              
69             has icon => (
70             is => 'ro',
71             isa => Maybe[Str],
72             default => sub { undef },
73             );
74              
75              
76             has found_in => (
77             is => 'ro',
78             isa => ArrayRef,
79             default => sub { [] },
80             );
81              
82              
83             has maps => (
84             is => 'ro',
85             isa => ArrayRef,
86             default => sub { [] },
87             );
88              
89              
90             has breakdown => (
91             is => 'ro',
92             isa => ArrayRef,
93             default => sub { [] },
94             );
95              
96              
97             has crafting => (
98             is => 'ro',
99             isa => ArrayRef,
100             default => sub { [] },
101             );
102              
103              
104             has updated_at => (
105             is => 'ro',
106             isa => Maybe[Str],
107             default => sub { undef },
108             );
109              
110              
111             has _raw => (
112             is => 'ro',
113             isa => HashRef,
114             default => sub { {} },
115             );
116              
117             sub from_hashref {
118 39     39 1 373087 my ($class, $data) = @_;
119              
120             return $class->new(
121             id => $data->{id},
122             name => $data->{name},
123             description => $data->{description},
124             rarity => $data->{rarity},
125             type => $data->{type},
126             value => $data->{value},
127             weight => $data->{weight},
128             stack_size => $data->{stackSize},
129             icon => $data->{icon},
130             found_in => $data->{foundIn} // [],
131             maps => $data->{maps} // [],
132             breakdown => $data->{breakdown} // [],
133             crafting => $data->{crafting} // [],
134             updated_at => $data->{updatedAt},
135 39   100     1648 _raw => $data,
      100        
      100        
      100        
136             );
137             }
138              
139              
140             sub icon_url {
141 1     1 1 21024 my $self = shift;
142 1 50       7 return unless $self->icon;
143 1 50       16 return 'https://ardb.app' . $self->icon if $self->icon =~ m{^/};
144 0           return $self->icon;
145             }
146              
147              
148             1;
149              
150             __END__