Passed
Push — master ( aa7db2...49c83f )
by Damjan
41s
created

Serializer::serialize()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 4.0058

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 4
eloc 15
c 4
b 0
f 0
nc 8
nop 5
dl 0
loc 25
ccs 13
cts 14
cp 0.9286
crap 4.0058
rs 8.5806
1
<?php
2
3
namespace SidekiqJob;
4
5
/**
6
 * Class Serializer
7
 * @package SidekiqJob
8
 */
9
class Serializer
10
{
11
    /**
12
     * Serialize and normalize job data
13
     *
14
     * @param string        $jobId
15
     * @param object|string $class
16
     * @param array         $args
17
     * @param bool          $retry
18
     * @param string|null   $queue
19
     *
20
     * @return string
21
     * @throws JsonEncodeException
22
     */
23 3
    public function serialize($jobId, $class, $args = [], $retry = true, $queue = null)
24
    {
25 3
        $class = is_object($class) ? get_class($class) : $class;
26
27
        $data = [
28 3
            'class' => $class,
29 3
            'jid' => $jobId,
30 3
            'created_at' => microtime(true),
31 3
            'enqueued_at' => microtime(true),
32 3
            'args' => $args,
33 3
            'retry' => $retry,
34
        ];
35
36 3
        if ($queue !== null) {
37
            $data['queue'] = $queue;
38
        }
39
40 3
        $jsonEncodedData = json_encode($data);
41
42 3
        if ($jsonEncodedData === false) {
43 1
            throw new JsonEncodeException($data, json_last_error(), json_last_error_msg());
44
        }
45
46 2
        return $jsonEncodedData;
47
    }
48
49
    /**
50
     * @param array $data
51
     * @return array
52
     */
53 1
    public function unserialize($data = [])
54
    {
55 1
        return json_decode($data, true);
56
    }
57
}
58