package CF2022::Controller::Products; use Mojo::Base 'Mojolicious::Controller'; use Mojo::UserAgent; sub list { my $c = shift->openapi->valid_input or return; my $url = sprintf ('%s/organizers/%s/events/%s/items/', $c->config->{pretix_api}, $c->config->{pretix_organizer}, $c->config->{pretix_event}, ); my $ua = Mojo::UserAgent->new; my $records = $ua->get( $url, { Authorization => 'Token ' . $c->config->{pretix_token} } )->result->json; my @options = (); RECORD: foreach my $record ( @{ $records->{results} } ) { next RECORD if ! $record->{active}; push @options, { id => $record->{id}, name => $record->{name}{en}, price => $record->{default_price} + 0, free_price => $record->{free_price}, category_id => $record->{category}, variations => [ map {{ id => $_->{id}, value => $_->{value}{en}, price => $_->{price} + 0 }} @{ $record->{variations} } ], }; } $c->render(openapi => \@options); } 1;