• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / cache-warmup / 8011103897

22 Feb 2024 09:17PM UTC coverage: 76.466% (-21.2%) from 97.674%
8011103897

Pull #333

github

web-flow
Merge ca3e396ce into 0442a6074
Pull Request #333: [FEATURE] Introduce Config API

44 of 355 new or added lines in 15 files covered. (12.39%)

6 existing lines in 1 file now uncovered.

1095 of 1432 relevant lines covered (76.47%)

6.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

71.43
/src/Sitemap/Sitemap.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/cache-warmup".
7
 *
8
 * Copyright (C) 2020-2024 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\CacheWarmup\Sitemap;
25

26
use DateTimeInterface;
27
use EliasHaeussler\CacheWarmup\Exception;
28
use EliasHaeussler\CacheWarmup\Helper;
29
use GuzzleHttp\Psr7;
30
use Psr\Http\Message;
31
use Stringable;
32

33
/**
34
 * Sitemap.
35
 *
36
 * @author Elias Häußler <elias@haeussler.dev>
37
 * @license GPL-3.0-or-later
38
 */
39
class Sitemap implements Stringable
40
{
41
    use UriValidationTrait;
42

43
    /**
44
     * @throws Exception\InvalidUrlException
45
     */
46
    public function __construct(
8✔
47
        protected Message\UriInterface $uri,
48
        protected ?DateTimeInterface $lastModificationDate = null,
49
        protected ?self $origin = null,
50
    ) {
51
        $this->validateUri();
8✔
52
    }
53

54
    /**
55
     * @throws Exception\InvalidUrlException
56
     */
NEW
57
    public static function createFromString(string $sitemap): self
×
58
    {
NEW
59
        if (str_contains($sitemap, '://')) {
×
60
            // Sitemap is a remote URL
NEW
61
            $uri = new Psr7\Uri($sitemap);
×
62
        } else {
63
            // Sitemap is a local file
NEW
64
            $file = Helper\FilesystemHelper::resolveRelativePath($sitemap);
×
NEW
65
            $uri = new Psr7\Uri('file://'.$file);
×
66
        }
67

NEW
68
        return new self($uri);
×
69
    }
70

71
    public function getUri(): Message\UriInterface
8✔
72
    {
73
        return $this->uri;
8✔
74
    }
75

76
    public function getLastModificationDate(): ?DateTimeInterface
1✔
77
    {
78
        return $this->lastModificationDate;
1✔
79
    }
80

81
    public function getOrigin(): ?self
2✔
82
    {
83
        return $this->origin;
2✔
84
    }
85

86
    public function getRootOrigin(): ?self
1✔
87
    {
88
        return $this->origin?->getRootOrigin() ?? $this->origin;
1✔
89
    }
90

91
    public function setOrigin(self $origin): self
1✔
92
    {
93
        $this->origin = $origin;
1✔
94

95
        return $this;
1✔
96
    }
97

98
    public function __toString(): string
1✔
99
    {
100
        return (string) $this->uri;
1✔
101
    }
102
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc