RequestService::parseDeviceEntityRequest()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 1
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: famoser
5
 * Date: 14.11.2016
6
 * Time: 12:39
7
 */
8
9
namespace Famoser\SyncApi\Services;
10
11
12
use Famoser\SyncApi\Framework\Json\Models\ObjectProperty;
13
use Famoser\SyncApi\Framework\Json\SimpleJsonMapper;
14
use Famoser\SyncApi\Interfaces\JsonDeserializableInterface;
15
use Famoser\SyncApi\Models\Communication\Request\AuthorizationRequest;
16
use Famoser\SyncApi\Models\Communication\Request\CollectionEntityRequest;
17
use Famoser\SyncApi\Models\Communication\Request\DeviceEntityRequest;
18
use Famoser\SyncApi\Models\Communication\Request\HistoryEntityRequest;
19
use Famoser\SyncApi\Models\Communication\Request\SyncEntityRequest;
20
use Famoser\SyncApi\Services\Base\BaseService;
21
use Famoser\SyncApi\Services\Interfaces\RequestServiceInterface;
22
use Slim\Http\Request;
23
24
/**
25
 * the request service parses & validates requests
26
 *
27
 * @package Famoser\SyncApi\Services
28
 */
29
class RequestService extends BaseService implements RequestServiceInterface
30
{
31
    /**
32
     * @param Request $request
33
     * @return AuthorizationRequest
34
     * @throws \JsonMapper_Exception
35
     */
36 11
    public function parseAuthorizationRequest(Request $request)
37
    {
38 11
        return $this->executeJsonMapper($request, new AuthorizationRequest());
39
    }
40
41
    /**
42
     * @param Request $request
43
     * @return CollectionEntityRequest
44
     * @throws \JsonMapper_Exception
45
     */
46 8
    public function parseCollectionEntityRequest(Request $request)
47
    {
48 8
        return $this->executeJsonMapper($request, new CollectionEntityRequest());
49
    }
50
51
    /**
52
     * @param Request $request
53
     * @return HistoryEntityRequest
54
     * @throws \JsonMapper_Exception
55
     */
56 2
    public function parseHistoryEntityRequest(Request $request)
57
    {
58 2
        return $this->executeJsonMapper($request, new HistoryEntityRequest());
59
    }
60
61
    /**
62
     * @param Request $request
63
     * @return SyncEntityRequest
64
     * @throws \JsonMapper_Exception
65
     */
66 9
    public function parseSyncEntityRequest(Request $request)
67
    {
68 9
        return $this->executeJsonMapper($request, new SyncEntityRequest());
69
    }
70
71
    /**
72
     * @param Request $request
73
     * @param $model
74
     * @return mixed
0 ignored issues
show
Documentation introduced by
Consider making the return type a bit more specific; maybe use object.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
75
     * @throws \JsonMapper_Exception
76
     */
77 29
    private function executeJsonMapper(Request $request, JsonDeserializableInterface $model)
78
    {
79 29
        $json = $request->getBody()->getContents();
80 29
        $mapper = new SimpleJsonMapper();
81 29
        $objProp = new ObjectProperty('root', $model);
82 29
        $resObj = $mapper->mapObject($json, $objProp);
83 29
        return $resObj;
84
    }
85
86
    /**
87
     * @param string $authCode
88
     * @param int $applicationSeed
89
     * @param int $personSeed
90
     * @param int $apiModulo
91
     * @param int $requestCount
92
     * @param int $requestMagicNumber
93
     * @return bool
94
     */
95 27
    public function isAuthenticationCodeValid($authCode, $applicationSeed, $personSeed, $apiModulo, $requestCount, $requestMagicNumber)
96
    {
97
        /* C#:
98
            var authCode = apiRoamingEntity.PersonalSeed * apiRoamingEntity.RequestCount + requestMagicNumber * info.ApplicationSeed;
99
            return (authCode % info.ApiModulo).ToString();
100
101
           php:
102
            $expectedAuthCode = $personSeed * $requestCount + $requestMagicNumber * $applicationSeed;
103
            return ($expectedAuthCode % $apiModulo) == $authCode;
104
        */
105
        //to come in future version
106 27
        return true;
107
    }
108
109
    /**
110
     * @param Request $request
111
     * @return DeviceEntityRequest
112
     * @throws \JsonMapper_Exception
113
     */
114 3
    public function parseDeviceEntityRequest(Request $request)
115
    {
116 3
        return $this->executeJsonMapper($request, new DeviceEntityRequest());
117
    }
118
}