Perl is a great help for task like this, get things done.
The possible methods to maintain data via Perl scripts are:
- manipulate the database, e.g. using DBIx::Class. This can be a maintenance hell, if the schema of the main application changes.
- compile CSV records, if the application can import it.
- use an API, if the application supports it.
In the case of Shopware an REST API exists, but the documentation targets PHP and suggests to use the PHP layers.
After some trial and error I got success using an ordinary web browser, entering an URL like this:
http://username:apikey@shop.local/api/articles
Should be straight forward with Mojo::UserAgent, but it returned errors.
Exploring the details it took some time to detect the header
Fortunately with the help of search engines I found the module Mojo::UserAgent::DigestAuth which needed some trial and error to understand, but works like this:
May this post help all the people having a problem with the Shopware API or with Mojo::UserAgent::DigestAuth.
Exploring the details it took some time to detect the header
Authorization: Digest
in the browser communication.Fortunately with the help of search engines I found the module Mojo::UserAgent::DigestAuth which needed some trial and error to understand, but works like this:
use Mojo::UserAgent::DigestAuth;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
# e.g. 'http://username:apikey@shop.local/api/articles'
my $url = $protocol . $user . ':' . $apikey . '@' . $host . $path . $object;
my $tx = $ua->$_request_with_digest_auth(get => $url);
my $value = $tx->res->json;
May this post help all the people having a problem with the Shopware API or with Mojo::UserAgent::DigestAuth.