Completed
Push — master ( b736eb...f06be5 )
by Laurens
03:50 queued 01:55
created

ProductClient   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 91
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 8
dl 0
loc 91
ccs 32
cts 32
cp 1
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A getCategories() 0 6 1
A createCategory() 0 5 1
A getDiscounts() 0 6 1
A createDiscount() 0 6 1
A deleteDiscount() 0 6 1
A getLibrary() 0 6 1
A getProducts() 0 6 1
A createProduct() 0 6 1
A deleteProduct() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LauLamanApps\IzettleApi;
6
7
use LauLamanApps\IzettleApi\API\Product\Category;
8
use LauLamanApps\IzettleApi\API\Product\Discount;
9
use LauLamanApps\IzettleApi\API\Product\Library;
10
use LauLamanApps\IzettleApi\API\Product\Product;
11
use LauLamanApps\IzettleApi\Client\Product\CategoryParser;
12
use LauLamanApps\IzettleApi\Client\Product\DiscountParser;
13
use LauLamanApps\IzettleApi\Client\Product\LibraryParser;
14
use LauLamanApps\IzettleApi\Client\Product\ProductParser;
15
16
final class ProductClient extends AbstractClient
17
{
18
    const BASE_URL = 'https://products.izettle.com/organizations/%s';
19
20
    const POST_CATEGORY = self::BASE_URL . '/categories';
21
    const GET_CATEGORY = self::BASE_URL . '/categories/%s';
22
    const GET_CATEGORIES = self::BASE_URL . '/categories';
23
24
    const POST_DISCOUNT = self::BASE_URL . '/discounts';
25
    const GET_DISCOUNT = self::BASE_URL . '/discounts/%s';
26
    const PUT_DISCOUNT = self::BASE_URL . '/discounts/%s';
27
    const DELETE_DISCOUNT = self::BASE_URL . '/discounts/%s';
28
    const GET_DISCOUNTS = self::BASE_URL . '/discounts';
29
30
    const GET_EXPORT = self::BASE_URL . '/products/%s';
31
    const GET_EXPORT_TEMPLATE = self::BASE_URL . '/products/%s/template';
32
33
    const GET_LIBRARY = self::BASE_URL . '/library';
34
35
    const POST_PRODUCT = self::BASE_URL . '/products';
36
    const GET_PRODUCT = self::BASE_URL . '/products/%s';
37
    const PUT_PRODUCT = self::BASE_URL . '/products/v2/%s';
38
    const DELETE_PRODUCT = self::BASE_URL . '/products/%s';
39
    const POST_PRODUCT_VARIANT = self::BASE_URL . '/products/%s/variants';
40
    const PUT_PRODUCT_VARIANT = self::BASE_URL . '/products/%s/variants/%s';
41
    const DELETE_PRODUCT_VARIANT = self::BASE_URL . '/products/%s/variants/%s';
42
    const GET_PRODUCTS = self::BASE_URL . '/products';
43
    const DELETE_PRODUCTS = self::BASE_URL . '/products';
44
45 1
    public function getCategories(): array
46
    {
47 1
        $url = sprintf(self::GET_CATEGORIES, $this->getOrganizationUuid());
48
49 1
        return CategoryParser::createFromResponse($this->get($url));
50
    }
51
52 1
    public function createCategory(Category $category): void
53
    {
54 1
        $url = sprintf(self::POST_CATEGORY, $this->getOrganizationUuid());
55 1
        $this->post($url, $category->getCreateData());
56 1
    }
57
58 1
    public function getDiscounts(): array
59
    {
60 1
        $url = sprintf(self::GET_DISCOUNTS, $this->getOrganizationUuid());
61
62 1
        return DiscountParser::createFromResponse($this->get($url));
63
    }
64
65 1
    public function createDiscount(Discount $discount): void
66
    {
67 1
        $url = sprintf(self::POST_DISCOUNT, $this->getOrganizationUuid());
68
69 1
        $this->post($url, $discount->getCreateData());
70 1
    }
71
72 1
    public function deleteDiscount(Discount $discount): void
73
    {
74 1
        $url = sprintf(self::DELETE_DISCOUNT, $this->getOrganizationUuid(), (string) $discount->getUuid());
75
76 1
        $this->delete($url);
77 1
    }
78
79 1
    public function getLibrary(): Library
80
    {
81 1
        $url = sprintf(self::GET_LIBRARY, $this->getOrganizationUuid());
82
83 1
        return LibraryParser::createFromResponse($this->get($url));
84
    }
85
86 1
    public function getProducts(): array
87
    {
88 1
        $url = sprintf(self::GET_PRODUCTS, $this->getOrganizationUuid());
89
90 1
        return ProductParser::createFromResponse($this->get($url));
91
    }
92
93 1
    public function createProduct(Product $product): void
94
    {
95 1
        $url = sprintf(self::POST_PRODUCT, $this->getOrganizationUuid());
96
97 1
        $this->post($url, $product->getCreateData());
98 1
    }
99
100 1
    public function deleteProduct(Product $product): void
101
    {
102 1
        $url = sprintf(self::DELETE_PRODUCT, $this->getOrganizationUuid(), (string) $product->getUuid());
103
104 1
        $this->delete($url);
105 1
    }
106
}
107