Passed
Branch develop (7ed98a)
by Richard
04:39
created

RequestStory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 17
c 1
b 0
f 0
dl 0
loc 34
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A resolveRelations() 0 2 1
A makeRequest() 0 14 3
A get() 0 10 3
1
<?php
2
3
4
namespace Riclep\Storyblok;
5
6
7
use Illuminate\Support\Facades\Cache;
8
use Illuminate\Support\Str;
9
10
class RequestStory
11
{
12
	private $resolveRelations;
13
14
	public function get($slugOrUuid) {
15
		if (request()->has('_storyblok') || !config('storyblok.cache')) {
16
			$response = $this->makeRequest($slugOrUuid);
17
		} else {
18
			$response = Cache::remember($slugOrUuid, config('storyblok.cache_duration') * 60, function () use ($slugOrUuid) {
19
				return $this->makeRequest($slugOrUuid);
20
			});
21
		}
22
23
		return $response['story'];
24
	}
25
26
	public function resolveRelations($resolveRelations) {
27
		$this->resolveRelations = implode(',', $resolveRelations);
28
	}
29
30
	private function makeRequest($slugOrUuid) {
31
		$storyblokClient = resolve('Storyblok\Client');
32
33
		if ($this->resolveRelations) {
34
			$storyblokClient = $storyblokClient->resolveRelations($this->resolveRelations);
35
		}
36
37
		if (Str::isUuid($slugOrUuid)) {
38
			$storyblokClient =  $storyblokClient->getStoryByUuid($slugOrUuid);
39
		} else {
40
			$storyblokClient =  $storyblokClient->getStoryBySlug($slugOrUuid);
41
		}
42
43
		return $storyblokClient->getBody();
44
	}
45
}