diff --git a/.php_cs b/.php_cs
new file mode 100644
index 0000000..e691cb4
--- /dev/null
+++ b/.php_cs
@@ -0,0 +1,46 @@
+
+
+For the full copyright and license information, please view the LICENSE
+file that was distributed with this source code.
+EOF;
+
+Symfony\CS\Fixer\Contrib\HeaderCommentFixer::setHeader($header);
+
+$finder = Symfony\CS\Finder\DefaultFinder::create()
+ ->exclude('vendor')
+ ->exclude('tests')
+ ->exclude('var')
+ ->exclude('node_modules')
+ ->ignoreDotFiles(true)
+ ->ignoreVCS(true)
+ ->name('*.php')
+ ->in(__DIR__)
+ ;
+
+
+return Symfony\CS\Config\Config::create()
+ ->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
+ ->fixers(
+ [
+ 'header_comment',
+ 'ordered_use',
+ 'php_unit_construct',
+ 'php_unit_strict',
+ 'strict',
+ 'strict_param',
+ 'symfony',
+ 'newline_after_open_tag',
+ 'phpdoc_order',
+ 'short_array_syntax',
+ 'short_echo_tag',
+
+
+ ]
+ )
+ ->finder($finder)
+ ;
\ No newline at end of file
diff --git a/app/App.php b/app/App.php
index 1b64e50..9cd296b 100644
--- a/app/App.php
+++ b/app/App.php
@@ -1,6 +1,17 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
use Sikofitt\Config\ConfigTrait;
+use Sikofitt\Json\JsonFileTrait;
+use Sikofitt\Json\JsonTrait;
use Silex\Application;
require '../vendor/autoload.php';
@@ -8,16 +19,17 @@ require '../vendor/autoload.php';
/**
* Class App
*/
-class App extends Application {
+class App extends Application
+{
- use ConfigTrait;
- use Application\TwigTrait;
- use Application\MonologTrait;
- use Application\SwiftmailerTrait;
- use Application\TranslationTrait;
- use Application\UrlGeneratorTrait;
-
- public $conf;
+ use ConfigTrait;
+ use JsonTrait;
+ use JsonFileTrait;
+ use Application\TwigTrait;
+ use Application\MonologTrait;
+ use Application\SwiftmailerTrait;
+ use Application\TranslationTrait;
+ use Application\UrlGeneratorTrait;
/**
* Returns the application directory.
@@ -25,9 +37,10 @@ class App extends Application {
* @return string
* The main application directory.
*/
- public function getAppDirectory() {
- $r = new ReflectionClass($this);
- return dirname($r->getFileName());
+ public function getAppDirectory()
+ {
+ $r = new ReflectionClass($this);
+ return dirname($r->getFileName());
}
/**
@@ -36,38 +49,48 @@ class App extends Application {
* @return string
* The root directory of the application.
*/
- public function getRootDirectory() {
- return dirname($this->getAppDirectory());
+ public function getRootDirectory()
+ {
+ return dirname($this->getAppDirectory());
}
/**
* @return string
*/
- public function getConfDirectory() {
- return $this->getAppDirectory() . '/config';
+ public function getConfDirectory()
+ {
+ return $this->getAppDirectory() . '/config';
}
/**
* @return string
*/
- public function getDataDirectory() {
- return $this->getRootDirectory() . '/data';
+ public function getDataDirectory()
+ {
+ return $this->getRootDirectory() . '/data';
}
/**
* @return string
*/
- public function getResumeJson() {
- return $this->getDataDirectory() . '/resume.json';
+ public function getResumeJson()
+ {
+ return $this->getDataDirectory() . '/resume.json';
}
/**
* @return string
*/
- public function getResumeSchema() {
- return $this->getDataDirectory() . '/resume.schema.json';
+ public function getResumeSchema()
+ {
+ return $this->getDataDirectory() . '/resume.schema.json';
}
+ public function getLogDirectory()
+ {
+ return $this->getDataDirectory() . '/logs';
+ }
+
/**
* Registers media icons
*
@@ -77,15 +100,64 @@ class App extends Application {
{
$this->config(sprintf('app.icons.%s', $icon->getName()), ['icon' => $icon->getIcon(), 'url' => $icon->getDefaultUrl()]);
}
+ public function setDebug()
+ {
+ $this['debug'] = null !== $this->config('app.debug') ? $this->config('app.debug') : true;
+ $this['env'] = getenv('PHP_ENV');
+ if (!$this['env']) {
+ $this['env'] = null !== $this->config('app.environment') ? $this->config('app.environment') : 'dev';
+ }
+ }
+ public function registerExtenders()
+ {
+ if (!$this['debug']) {
+ $this->error(function (\Exception $e, \Symfony\Component\HttpFoundation\Request $request, $code) {
+ switch ($code) {
+ case 405:
- public function boot() {
- // register default icons
- $this->registerIcon(new \Sikofitt\Image\Profile\TwitterProfileIcon());
- $this->registerIcon(new \Sikofitt\Image\Profile\FacebookProfileIcon());
- $this->registerIcon(new \Sikofitt\Image\Profile\GithubProfileIcon());
- $this->registerIcon(new \Sikofitt\Image\Profile\GitlabProfileIcon());
- $this->registerIcon(new \Sikofitt\Image\Profile\LinkedinProfileIcon());
- return parent::boot();
+
+ preg_match('/\(Allow\:(.+)\)/', $e->getMessage(), $matches);
+ if(isset($matches[1])) {
+ $matches = trim($matches[1]);
+ } elseif(isset($matches[0])) {
+ $matches = trim($matches[0]);
+ } else {
+ $matches = 'Available methods are unknown.';
+ }
+ $message = json_encode(['status' => 'error', 'message' => 'Method not allowed', 'allowedMethods' => $matches, 'requestedMethod' => $request->getMethod(), 'code' => $code]);
+ //$message = 'Sorry bout that.
' . $e->getMessage();
+ break;
+ default:
+ $message = $this['twig']->render('error500.html.twig');
+ }
+ return new \Symfony\Component\HttpFoundation\Response($message, $code);
+ });
+ }
+ $this->extend('twig', function (\Twig_Environment $twig) {
+ if ($this['debug']) {
+ $twig->enableDebug();
+ }
+ $twig->addExtension(new Twig_Extensions_Extension_Date());
+ $twig->addExtension(new Sikofitt\Twig\Date());
+ $twig->addExtension(new Sikofitt\Twig\RenderProfile());
+ $twig->addGlobal('config', $this->config('all'));
+ return $twig;
+ });
}
-}
+ public function boot()
+ {
+ $this->registerExtenders();
+ // register default icons
+ $this->registerDefaultIcons();
+ return parent::boot();
+ }
+ public function registerDefaultIcons()
+ {
+ $this->registerIcon(new \Sikofitt\Image\Profile\TwitterProfileIcon());
+ $this->registerIcon(new \Sikofitt\Image\Profile\FacebookProfileIcon());
+ $this->registerIcon(new \Sikofitt\Image\Profile\GithubProfileIcon());
+ $this->registerIcon(new \Sikofitt\Image\Profile\GitlabProfileIcon());
+ $this->registerIcon(new \Sikofitt\Image\Profile\LinkedinProfileIcon());
+ }
+}
diff --git a/app/config/config.yml b/app/config/config.yml
index 263a067..82ffeed 100644
--- a/app/config/config.yml
+++ b/app/config/config.yml
@@ -1,7 +1,10 @@
app:
- debug: true
- environment: dev
+ debug: false
+ environment: prod
title: R. Eric Wheeler | Resume
+ email: eric@rewiv.com
+ phone: 510-646-2135
+ schema: https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json
twig:
paths:
- views
diff --git a/app/config/default/config.php b/app/config/default/config.php
index 1e0fc24..e0e9429 100644
--- a/app/config/default/config.php
+++ b/app/config/default/config.php
@@ -1,5 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
return [
'app' => 'neat',
-];
\ No newline at end of file
+];
diff --git a/app/providers.php b/app/providers.php
new file mode 100644
index 0000000..e8d14f6
--- /dev/null
+++ b/app/providers.php
@@ -0,0 +1,51 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$app->register(new \Sikofitt\Config\ConfigServiceProvider(), [
+ 'config.path' => $app->getConfDirectory(),
+]);
+
+$app->setDebug();
+
+if (null === $app->config('app.schema')) {
+ $app->config('app.schema', 'https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json');
+}
+
+$app->register(new \Silex\Provider\TwigServiceProvider(), [
+ 'twig.path' => [
+ $app->getRootDirectory() . '/app/views',
+ ],
+]);
+$app->register(new \Sikofitt\Json\JsonServiceProvider());
+
+
+$app->register(new \Silex\Provider\AssetServiceProvider());
+$app->register(new \Silex\Provider\MonologServiceProvider());
+$app->register(new \Silex\Provider\SessionServiceProvider());
+$app->register(new \Silex\Provider\HttpKernelServiceProvider());
+$app->register(new \Silex\Provider\FormServiceProvider());
+
+
+$app->register(new \Silex\Provider\MonologServiceProvider(),
+ [
+ 'monolog.logfile' => sprintf('%s/%s.log', $app->getLogDirectory(), $app['env']),
+ ]
+);
+$app->register(new \Silex\Provider\RoutingServiceProvider());
+$app->register(new \Silex\Provider\ServiceControllerServiceProvider());
+$app->register(new \Silex\Provider\HttpFragmentServiceProvider());
+if ($app['debug'] || 0 === strcasecmp($app['env'], 'dev')) {
+ $app->register(new \Silex\Provider\WebProfilerServiceProvider(), [
+ 'profiler.cache_dir' => $app->getDataDirectory() . '/cache/profiler',
+ ]);
+ $app->register(new \WhoopsSilex\WhoopsServiceProvider());
+ $app->register(new \Silex\Provider\VarDumperServiceProvider());
+}
diff --git a/app/views/resume.html.twig b/app/views/resume.html.twig
index f4a8671..bc14edd 100644
--- a/app/views/resume.html.twig
+++ b/app/views/resume.html.twig
@@ -5,7 +5,6 @@
{% endblock %}
{% block body %}
-
@@ -62,7 +61,7 @@
- Highlights
{% for highlight in position.highlights %}
- - {{ highlight|raw }}
+ - {{ highlight|raw }} {# raw is deprecated in 2.0 #}
{% endfor %}
{% endif %}
@@ -73,6 +72,7 @@
+
+
+
+
+
+
+
+
+
+
Verify
+
+
Verify that you are a human please.
+
+
+
+
+
+
+{% endblock %}
+ {% block javascripts_foot %}
+
+ {% endblock %}
+{% block inline_js_foot %}
+
{% endblock %}
\ No newline at end of file
diff --git a/app/views/uikit.html.twig b/app/views/uikit.html.twig
index 0d175df..964644d 100644
--- a/app/views/uikit.html.twig
+++ b/app/views/uikit.html.twig
@@ -18,6 +18,7 @@
+
{% block javascripts_head %}{% endblock %}
{% block inline_js_head %}{% endblock %}
diff --git a/bower.json b/bower.json
index 1177b88..63ccc61 100644
--- a/bower.json
+++ b/bower.json
@@ -31,7 +31,8 @@
"**/scrollspy.min.js",
"**/parallax.min.js",
"**/offcanvas.min.js",
- "**/sticky.min.js"
+ "**/sticky.min.js",
+ "**/notify.min.js"
]
},
"jquery": {
diff --git a/composer.json b/composer.json
index f39529b..f9f2a27 100644
--- a/composer.json
+++ b/composer.json
@@ -49,11 +49,13 @@
"symfony/var-dumper": "^3.1",
"symfony/console": "^3.1",
"texthtml/whoops-silex": "^1.0",
- "symfony/debug-bundle": "^3.1"
+ "symfony/debug-bundle": "^3.1",
+ "friendsofphp/php-cs-fixer": "^1.11"
},
"autoload": {
"psr-4": {
"Sikofitt\\": "src/Sikofitt"
- }
+ },
+ "classmap": ["app/App.php"]
}
}
diff --git a/composer.lock b/composer.lock
index 4cd9c73..e9f5494 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "2e202af761710c5e2279e9f5b83a5192",
- "content-hash": "3c41da3f56c72d6c1bc86d0a1889d6d9",
+ "hash": "84ec84a01cd2f9b1398d356bc5e7dc63",
+ "content-hash": "d91f02739d0cdaa4d0346a6c0f765fc3",
"packages": [
{
"name": "google/recaptcha",
@@ -719,23 +719,23 @@
},
{
"name": "swiftmailer/swiftmailer",
- "version": "v5.4.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "d8db871a54619458a805229a057ea2af33c753e8"
+ "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d8db871a54619458a805229a057ea2af33c753e8",
- "reference": "d8db871a54619458a805229a057ea2af33c753e8",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
+ "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
- "mockery/mockery": "~0.9.1,<0.9.4"
+ "mockery/mockery": "~0.9.1"
},
"type": "library",
"extra": {
@@ -768,7 +768,7 @@
"mail",
"mailer"
],
- "time": "2016-05-01 08:45:47"
+ "time": "2016-07-08 11:51:25"
},
{
"name": "symfony/asset",
@@ -2506,6 +2506,116 @@
],
"time": "2016-04-07 06:16:25"
},
+ {
+ "name": "friendsofphp/php-cs-fixer",
+ "version": "v1.11.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+ "reference": "d3d08b76753092a232a4d8c3b94095ac06898719"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d3d08b76753092a232a4d8c3b94095ac06898719",
+ "reference": "d3d08b76753092a232a4d8c3b94095ac06898719",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.6",
+ "sebastian/diff": "~1.1",
+ "symfony/console": "~2.3|~3.0",
+ "symfony/event-dispatcher": "~2.1|~3.0",
+ "symfony/filesystem": "~2.1|~3.0",
+ "symfony/finder": "~2.1|~3.0",
+ "symfony/process": "~2.3|~3.0",
+ "symfony/stopwatch": "~2.5|~3.0"
+ },
+ "conflict": {
+ "hhvm": "<3.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5|^5",
+ "satooshi/php-coveralls": "^0.7.1"
+ },
+ "bin": [
+ "php-cs-fixer"
+ ],
+ "type": "application",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\CS\\": "Symfony/CS/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dariusz RumiĆski",
+ "email": "dariusz.ruminski@gmail.com"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "A tool to automatically fix PHP code style",
+ "time": "2016-07-06 22:49:35"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2015-12-08 07:14:41"
+ },
{
"name": "symfony/console",
"version": "v3.1.2",
@@ -2627,6 +2737,104 @@
"homepage": "https://symfony.com",
"time": "2016-02-13 09:24:02"
},
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/322da5f0910d8aa0b25fa65ffccaba68dbddb890",
+ "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-06-29 05:41:56"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/8201978de88a9fa0923e18601bb17f1df9c721e7",
+ "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2016-06-29 05:41:56"
+ },
{
"name": "symfony/phpunit-bridge",
"version": "v3.1.2",
diff --git a/data/bad.schema.json b/data/schema/bad.schema.json
similarity index 100%
rename from data/bad.schema.json
rename to data/schema/bad.schema.json
diff --git a/data/resume.schema.json b/data/schema/schema.v1.json
similarity index 100%
rename from data/resume.schema.json
rename to data/schema/schema.v1.json
diff --git a/dump.php b/dump.php
index 81c0245..9366a91 100644
--- a/dump.php
+++ b/dump.php
@@ -1,5 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
require_once 'vendor/autoload.php';
@@ -8,5 +17,3 @@ $decoder = new Webmozart\Json\JsonDecoder();
$json = $decoder->decodeFile('data/resume.json');
dump($json);
-
-
diff --git a/src/Sikofitt/Command/SchemaValidationCommand.php b/src/Sikofitt/Command/SchemaValidationCommand.php
index 0fe4317..4b121be 100644
--- a/src/Sikofitt/Command/SchemaValidationCommand.php
+++ b/src/Sikofitt/Command/SchemaValidationCommand.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* Created by PhpStorm.
* User: eric
@@ -8,7 +18,6 @@
namespace Sikofitt\Command;
-
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@@ -29,11 +38,11 @@ class SchemaValidationCommand extends Command
* Configures the command.
*
*/
- public function configure ()
+ public function configure()
{
- $this->setName ('resume:schema:validate')
- ->setDescription ('Validates resume.json schema')
- ->setProcessTitle ('Validating Schema');
+ $this->setName('resume:schema:validate')
+ ->setDescription('Validates resume.json schema')
+ ->setProcessTitle('Validating Schema');
}
/**
@@ -42,13 +51,11 @@ class SchemaValidationCommand extends Command
* @param InputInterface $input
* @param OutputInterface $output
*/
- public function interact (InputInterface $input, OutputInterface $output)
+ public function interact(InputInterface $input, OutputInterface $output)
{
-
$io = new SymfonyStyle($input, $output);
$this->file = $io->ask('Path to file? ');
$this->schema = $io->ask('Path to schema? ');
-
}
/**
@@ -59,7 +66,7 @@ class SchemaValidationCommand extends Command
*
* @return void
*/
- public function execute (InputInterface $input, OutputInterface $output)
+ public function execute(InputInterface $input, OutputInterface $output)
{
$validator = new JsonValidator();
$decoder = new JsonDecoder();
@@ -68,20 +75,16 @@ class SchemaValidationCommand extends Command
try {
$decoded = $decoder->decodeFile($dataDir . $this->file);
- $errors = $validator->validate ($decoded, $dataDir . $this->schema);
- } catch(\Exception $e) {
+ $errors = $validator->validate($decoded, $dataDir . $this->schema);
+ } catch (\Exception $e) {
$class = new \ReflectionClass($e);
$io->block([$class->getName(), $e->getMessage()], 'Exception', 'error');
exit(255);
}
- if(isset($errors) && !empty($errors)) {
+ if (isset($errors) && !empty($errors)) {
$io->block($errors, 'Error', 'error');
} else {
$io->block([$this->file, 'There were no errors reported.'], 'Valid Schema', 'fg=black;bg=green');
-
-
}
}
-
-
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Config/ConfigServiceProvider.php b/src/Sikofitt/Config/ConfigServiceProvider.php
index 24a1f06..e31865f 100644
--- a/src/Sikofitt/Config/ConfigServiceProvider.php
+++ b/src/Sikofitt/Config/ConfigServiceProvider.php
@@ -1,14 +1,20 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
*/
namespace Sikofitt\Config;
+use Noodlehaus\Config;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use Silex\Application;
-use Noodlehaus\Config;
/**
* Class ConfigServiceProvider
@@ -19,11 +25,11 @@ class ConfigServiceProvider implements ServiceProviderInterface
/**
* @param Container $app
*/
- public function register (Container $app)
+ public function register(Container $app)
{
- $app['config'] = function($app) {
+ $app['config'] = function ($app) {
$config = Config::load($app['config.path']);
return $config;
};
}
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Config/ConfigTrait.php b/src/Sikofitt/Config/ConfigTrait.php
index 4675d19..ed7efca 100644
--- a/src/Sikofitt/Config/ConfigTrait.php
+++ b/src/Sikofitt/Config/ConfigTrait.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
*
*/
@@ -12,15 +22,15 @@ trait ConfigTrait
* @param null $value
* @return mixed
*/
- public function config($name, $value = null) {
- if(strcasecmp($name, 'all') === 0) {
+ public function config($name, $value = null)
+ {
+ if (strcasecmp($name, 'all') === 0) {
return $this['config']->all();
}
- if(null === $value) {
- return $this['config']->get ($name);
+ if (null === $value) {
+ return $this['config']->get($name);
} else {
$this['config']->set($name, $value);
}
}
-
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Controller/ApiControllerProvider.php b/src/Sikofitt/Controller/ApiControllerProvider.php
new file mode 100644
index 0000000..55e2efa
--- /dev/null
+++ b/src/Sikofitt/Controller/ApiControllerProvider.php
@@ -0,0 +1,76 @@
+
+ *
+ * 7/8/16 / 10:11 AM
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sikofitt\Controller;
+
+use ReCaptcha\ReCaptcha;
+use Silex\Application;
+use Silex\Api\ControllerProviderInterface;
+use Symfony\Component\HttpFoundation\JsonResponse;
+use Symfony\Component\HttpFoundation\Request;
+
+class ApiControllerProvider implements ControllerProviderInterface {
+
+ public function connect(Application $app) {
+ $controllers = $app['controllers_factory'];
+
+ $controllers->get('/v1/schema', function() {
+ return new \Symfony\Component\HttpFoundation\Response('Success!');
+ });
+
+ $controllers->post('/v1/captcha', function(Request $request) use ($app) {
+ $captcha = new ReCaptcha('6LcvmSQTAAAAAITkvYJjgLar1LqGGLz-ic0ZMiXo');
+
+ $valid = $captcha->verify(
+ $request->request->get('g-recaptcha-response'),
+ $request->server->get('REMOTE_ADDR')
+ );
+ if($valid->isSuccess()) {
+ $return = [
+ 'valid' => true,
+ 'message' => [
+ 'email' => null !== $app->config('app.email') ? $app->config('app.email') : 'No email has been set in the configuration. Please let the owner know.',
+ 'phone' => null !== $app->config('app.phone') ? $app->config('app.phone') : 'No phone has been set in the configuration. Please let the owner know.',
+ ],
+ ];
+ } else {
+
+ $errorCodes = [
+ 'missing-input-secret' => 'The secret parameter is missing.',
+ 'invalid-input-secret' => 'The secret parameter is invalid or malformed.',
+ 'missing-input-response' =>'The response parameter is missing.',
+ 'invalid-input-response' => 'The response parameter is invalid or malformed.'
+ ];
+
+ foreach($valid->getErrorCodes() as $code)
+ {
+ if(array_key_exists($code, $errorCodes)) {
+ $errors[] = $errorCodes[$code];
+ }
+ }
+ if(!isset($errors)) {
+ $errors[] = 'An unknown error occurred.';
+ }
+ $return = [
+ 'valid' => false,
+ 'message' => $errors,
+ ];
+ }
+
+ return new JsonResponse(json_encode($return));
+ });
+
+ return $controllers;
+ }
+}
\ No newline at end of file
diff --git a/src/Sikofitt/Controller/ResumeControllerProvider.php b/src/Sikofitt/Controller/ResumeControllerProvider.php
new file mode 100644
index 0000000..229c710
--- /dev/null
+++ b/src/Sikofitt/Controller/ResumeControllerProvider.php
@@ -0,0 +1,145 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sikofitt\Controller;
+
+use ReCaptcha\ReCaptcha;
+use Silex\Api\ControllerProviderInterface;
+use Silex\Application;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Class ResumeControllerProvider
+ * @package Sikofitt\Controller
+ */
+class ResumeControllerProvider implements ControllerProviderInterface
+{
+
+ /**
+ * @var object
+ */
+ private $resumeData;
+
+ /**
+ * @param Application $app
+ * @return mixed
+ */
+ public function connect(Application $app)
+ {
+ $this->resumeData = $app->decodeFile(
+ $app->getDataDirectory() . '/resume.json',
+ $app->getDataDirectory() . '/schema/schema.v1.json'
+ );
+
+
+ $controllers = $app['controllers_factory'];
+
+ $controllers->get('/', function (Request $request) use ($app) {
+
+ return $app['twig']->render('resume.html.twig', [
+
+ 'fullData' => $this->resumeData,
+ 'basics' => $this->getResumeBasics(),
+ 'work' => $this->getResumeWork(),
+ 'volunteer' => $this->getResumeVolunteer(),
+ 'education' => $this->getResumeEducation(),
+ 'awards' => $this->getResumeAwards(),
+ 'publications' => $this->getResumePublications(),
+ 'skills' => $this->getResumeSkills(),
+ 'languages' => $this->getResumeLanguages(),
+ 'interests' => $this->getResumeInterests(),
+ 'references' => $this->getResumeReferences(),
+ ]);
+ });
+
+ return $controllers;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeBasics()
+ {
+ return (isset($this->resumeData->basics) && count($this->resumeData->basics) > 0) ? $this->resumeData->basics : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeWork()
+ {
+ return (isset($this->resumeData->work) && count($this->resumeData->work) > 0) ? $this->resumeData->work : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeVolunteer()
+ {
+ return (isset($this->resumeData->volunteer) && count($this->resumeData->volunteer) > 0) ? $this->resumeData->volunteer : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeEducation()
+ {
+ return (isset($this->resumeData->education) && count($this->resumeData->education) > 0) ? $this->resumeData->education : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeAwards()
+ {
+ return (isset($this->resumeData->awards) && count($this->resumeData->awards) > 0) ? $this->resumeData->awards : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumePublications()
+ {
+ return (isset($this->resumeData->publications) && count($this->resumeData->publications) > 0) ? $this->resumeData->publications : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeSkills()
+ {
+ return (isset($this->resumeData->skills) && count($this->resumeData->skills) > 0) ? $this->resumeData->skills : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeLanguages()
+ {
+ return (isset($this->resumeData->languages) && count($this->resumeData->languages) > 0) ? $this->resumeData->languages : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeInterests()
+ {
+ return (isset($this->resumeData->interests) && count($this->resumeData->interests) > 0) ? $this->resumeData->interests : null;
+ }
+
+ /**
+ * @return null
+ */
+ public function getResumeReferences()
+ {
+ return (isset($this->resumeData->references) && count($this->resumeData->references) > 0) ? $this->resumeData->references : null;
+ }
+}
diff --git a/src/Sikofitt/Image/Profile/FacebookProfileIcon.php b/src/Sikofitt/Image/Profile/FacebookProfileIcon.php
index a0b0231..aff9616 100644
--- a/src/Sikofitt/Image/Profile/FacebookProfileIcon.php
+++ b/src/Sikofitt/Image/Profile/FacebookProfileIcon.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of resume.
*
@@ -14,18 +24,21 @@
namespace Sikofitt\Image\Profile;
+class FacebookProfileIcon implements ProfileIconInterface
+{
-class FacebookProfileIcon implements ProfileIconInterface {
+ public function getName()
+ {
+ return 'facebook';
+ }
- public function getName() {
- return 'facebook';
- }
+ public function getDefaultUrl()
+ {
+ return 'https://facebook.com';
+ }
- public function getDefaultUrl() {
- return 'https://facebook.com';
- }
-
- public function getIcon() {
- return 'data:image/x-icon;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlFZBSp5eROejYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+eX0TklFZBSgAAAAAAAAAAAAAAAAAAAACZWkLmo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+aW0PnAAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/oGFG/51eRf+bXUT/m11E/5VZQv//////////////////////lVlC/5tdRP+bXUT/nV5F/6BgRv+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+dXkX/kFdA/4tTPf+LUz3/iVE8//////////////////////+JUTz/i1M9/4tTPf+PVj7/ml1E/6JhRv+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP////////////////////////////////////////////////////////////////+ib1r/oGBG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/////////////////////////////////////////////////////////////////7qWiP+eX0X/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+dXkX/////////////////////////////////////////////////////////////////18G5/55fRf+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6BhRv/////////////////////////////////////////////////////////////////z6+j/oGFG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+YW0P/omFG/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5dgS/+YW0P/m11E/5tdRP+dXkX/oGFG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/51eRf/7+fj/////////////////x66k/49bRf+LUz3/i1M9/5BXQP+dXkX/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/n2BF/+3i3v///////////////////////////////////////////5tdRP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+iYUb/zrCk////////////////////////////////////////////m11E/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+malH/7eLd//////////////////////////////////////+fX0X/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+maFD/0LGk//Dm4v/7+fj/+/j3//Pr6P/p29X/3ce+/6JhRv+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACXW0P/oGBG/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6BgRv+XW0P/AAAAAAAAAAAAAAAAAAAAAIxTPOaXW0P/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/l1tD/4xTPOYAAAAAAAAAAAAAAAAAAAAAgUw0SYdPOuaKUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4pTPf+HTzrmgUw0SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////4AAAB8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAD4AAAB///////////KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoGBFw6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI////////////o2JI/6NiSP+jYkj/o2JI/6JgR8QAAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP///////////6NiSP+jYkj/o2JI/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj///////////+jYkj/o2JI/6NiSP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI////////////o2JI/6NiSP+jYkj/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP///////////6NiSP+jYkj/o2JI/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/4JOOv+CTjr///////////+CTjr/gk46/5JYQP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP/////////////////////////////////HrqT/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/////////////////////////////////8efj/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj///////////+aXUT/o2JI/6NiSP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI//n29f//////pH5v/4JOOv+CTjr/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP/eyL///////////////////////6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/qm1W/+LOxv/8+/r/9/Hv/+vd2P+jYkj/o2JI/wAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAIBNNsOCTjr/gk46/4JOOv+CTjr/gk46/4JOOv+CTjr/gk46/4JOOv+CTjr/gk46/4JOOv+ATTbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAD//wAA';
- }
-}
\ No newline at end of file
+ public function getIcon()
+ {
+ return 'data:image/x-icon;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlFZBSp5eROejYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+eX0TklFZBSgAAAAAAAAAAAAAAAAAAAACZWkLmo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+aW0PnAAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+bXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5tdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/oGFG/51eRf+bXUT/m11E/5VZQv//////////////////////lVlC/5tdRP+bXUT/nV5F/6BgRv+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+dXkX/kFdA/4tTPf+LUz3/iVE8//////////////////////+JUTz/i1M9/4tTPf+PVj7/ml1E/6JhRv+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP////////////////////////////////////////////////////////////////+ib1r/oGBG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/////////////////////////////////////////////////////////////////7qWiP+eX0X/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+dXkX/////////////////////////////////////////////////////////////////18G5/55fRf+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6BhRv/////////////////////////////////////////////////////////////////z6+j/oGFG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP//////////////////////m11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E//////////////////////+YW0P/omFG/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+bXUT//////////////////////5dgS/+YW0P/m11E/5tdRP+dXkX/oGFG/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/51eRf/7+fj/////////////////x66k/49bRf+LUz3/i1M9/5BXQP+dXkX/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/n2BF/+3i3v///////////////////////////////////////////5tdRP+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+iYUb/zrCk////////////////////////////////////////////m11E/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACbXUT/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+malH/7eLd//////////////////////////////////////+fX0X/o2JI/6NiSP+bXUT/AAAAAAAAAAAAAAAAAAAAAJtdRP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+maFD/0LGk//Dm4v/7+fj/+/j3//Pr6P/p29X/3ce+/6JhRv+jYkj/o2JI/5tdRP8AAAAAAAAAAAAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/m11E/wAAAAAAAAAAAAAAAAAAAACXW0P/oGBG/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6BgRv+XW0P/AAAAAAAAAAAAAAAAAAAAAIxTPOaXW0P/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/m11E/5tdRP+bXUT/l1tD/4xTPOYAAAAAAAAAAAAAAAAAAAAAgUw0SYdPOuaKUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4tTPf+LUz3/i1M9/4pTPf+HTzrmgUw0SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////4AAAB8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAD4AAAB///////////KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoGBFw6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI////////////o2JI/6NiSP+jYkj/o2JI/6JgR8QAAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP///////////6NiSP+jYkj/o2JI/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj///////////+jYkj/o2JI/6NiSP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI////////////o2JI/6NiSP+jYkj/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP///////////6NiSP+jYkj/o2JI/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/4JOOv+CTjr///////////+CTjr/gk46/5JYQP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP/////////////////////////////////HrqT/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/////////////////////////////////8efj/6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj///////////+aXUT/o2JI/6NiSP+jYkj/o2JI/wAAAAAAAAAAo2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI//n29f//////pH5v/4JOOv+CTjr/o2JI/6NiSP8AAAAAAAAAAKNiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP/eyL///////////////////////6NiSP+jYkj/AAAAAAAAAACjYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/qm1W/+LOxv/8+/r/9/Hv/+vd2P+jYkj/o2JI/wAAAAAAAAAAm11E/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/6NiSP+jYkj/o2JI/5tdRP8AAAAAAAAAAIBNNsOCTjr/gk46/4JOOv+CTjr/gk46/4JOOv+CTjr/gk46/4JOOv+CTjr/gk46/4JOOv+ATTbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAD//wAA';
+ }
+}
diff --git a/src/Sikofitt/Image/Profile/GithubProfileIcon.php b/src/Sikofitt/Image/Profile/GithubProfileIcon.php
index 35269f5..4e9ca06 100644
--- a/src/Sikofitt/Image/Profile/GithubProfileIcon.php
+++ b/src/Sikofitt/Image/Profile/GithubProfileIcon.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of test.
*
@@ -20,21 +30,24 @@ namespace Sikofitt\Image\Profile;
*/
class GithubProfileIcon implements ProfileIconInterface
{
- /**
+ /**
* {@inheritdoc}
*/
- public function getName() {
- return 'github';
+ public function getName()
+ {
+ return 'github';
}
- public function getDefaultUrl() {
- return 'https://github.com';
- }
+ public function getDefaultUrl()
+ {
+ return 'https://github.com';
+ }
/**
* {@inheritdoc}
*/
- public function getIcon() {
+ public function getIcon()
+ {
return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHEBUg5ZowJwAABmBJREFUSMeVVm1wVOUVft67d7+zjdnNdpcuZJpdgtAwgBiinWkJRhKUII5jM9qOQ8o0teq0HcWUKdNOpx1sRcFOZxxMBacGQgjWQZCiAzEKWgupxaBANo752EzdzX5nN7t7N3vv3vue/kiyiLRKz8zz473nnnPuOc8577nAF6S1tRVEVDpns1lToVBwpNOppYXCTIssy60zMzMbUqmUj4gqpqamjPPvJhIJ/F8SDAYrFEV5iIheLRaLqVBokvz+Yfr440s0/MknFIlGiHM+SURdsizfNzAwYAJwzQfOC/v8IRqNwuVyIZ1ObygvL39KluXVPYd7hffeex/xeBxSPg9N06AXRVjLrHC73WhuWo/W790vAxhIJpPbKisrBwOBAKqrq68PEolE4Ha7kclkHrLZbAdOvvGm8Nvf7YQsy1+aMRHB7rDjud3PYk3drdl0On1vRUXFmfHxcXi9XgCA0N7eDgBwu92YTqe3iKLYveuZ3cKTHdtRKBRARF8KAEgmktjSthUvdx20WSyWd5LJZIPX6y3pGRGBMYZkMtlit9tPPPX7p4Xunh6AgEKhAL3BAKPBcDVnupo/EUGWZahFFWaLGTqdDr948gn8sK0tMzk5+R2Px3M5EAhAYIxhfHTUabfbdx458lfhYPchECc0rF2LvlNv4gfffwBEhLyUhyTloaoqpJyEvJSHXtTjp489inff6UfVoiqoRRW7ntmDf1348Gtut/uP27ZtE0vcSJK0NRGP0/KVq2nZ8pX0Td8SenHfftJUlYiIhvzDNDY6RsQ5ERGpxSIN+f0UGA8QESfinDq2/5J8S5bR0toV9N2GO0hT1Vwmk9kIAEIsGrWYTcb7/9J1AJqqAkQAAblsbrYchQJurlmMqqpFUBQFiixD0zTcXFODhQs9kAsyiAi5bBag2UrG4wkcPXbcWmaxbPT7/XpBVVVLcip158A/PyiRKQgCli+vhaZpICIUi0WoqgrOeQnzz4gIqqpizZo6KEWlRPbp032Qi8qdCz0ei6AoijcSiZgS8cScgYbb6uuwatXKUpCvgqqqaG5ajxqft2QzGQ4jGoktnZqasggmk6kmlUohl5dAADhxeL1emIzGGwowD5PRiGqvF5wIBCAnScjmslBk2SmCyKooCtSiCnCaxVx7cs5v+Boiolk+OQGMoBZVKLKCMqvVJqiqmtOLeuh0OnAQiAHRaAyKLM81wY2hqCiIRGMgBnAQdDod9Ho98pKUETLZ7MhN5eWwWCwAAQIT8OHgRUxPZ264VLP3XgxXrgxBYAJAgNVihdViAec8KXBNm6isdMxUOhwlo9DkJJ7f24mcJEGv14Mx/FfnjDEYDAbE4wnsfHrXNboFC9xwOBzDlU6nJOr1+pzNVtb/7dtvu+fylSEs9HhQW7sMR48dRzgSweZ7WnB7fT0qKiogirqSc0VREIvF8fd/nMOJv53E5aEhGA1GgAicCBuamwBQ/7DfLzEACH32WRuAlxubNzImCHj8Z48hGAyhq7sHZrMZjDGcOPoKXC4XiGbrPTh4EW3tj8Bg0EPTtFIDcM7hWfANnHrjeC6ZTLZW+3ynBAC4MjR0ssxqHfzNr3cgm8ngwMEebGhuQlPjHTCbTFjfuA52hwOc89Jc1NZ+C66vV6KoKCXyiXMwAHue/QMURTlX7fO9BQDiXPrJSxcv/qrl7rtOjoyMins79+G1Y6/jkYfbYbVYAMbAvrD1NE2DrcyGSDQ2q+McOp0OO7Z3YEnN4pR/ePgJANq7Z85AdDqdAIAVt9xy+tJHH215+EdbD4uiiL1/3o9zAwMwm82ou3U1Oh7/OXQ63dW54AROHABB0zQwxrBjewdaNt6FiYmJzWsbGvzz/Anzy/9Mfz9WrFrVG4vHH3z0Jz8uvvj8n5DPF/Dpp6OIhKPgc6vkKmg2kEZY5PHgSHcX7t28KR0MhRrq6uvff6W3F4yx66f2rb4+AMAH5883xiPhgWg4XOx8oZNe2v8SRUIhioXDJYSDQdqz+zk61H2IpuLxfDgY7D/79tsrAKD38OH//SPxednX2Vm+bt26u20222YwNDIwFxOEa7qIMfxb07S+bCZ7Ymtb2+nzFy4o8yX6yiCkqmCiCAA4e/as6abycuvY2Jjd5XRW6Q0Ga6FQyExPT0/4Fi+eDkxMSJs2bVIAYHxkBN6amuv8/QcU+jJuyipKzgAAAABJRU5ErkJggg==';
}
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Image/Profile/GitlabProfileIcon.php b/src/Sikofitt/Image/Profile/GitlabProfileIcon.php
index 11cad28..f4f5869 100644
--- a/src/Sikofitt/Image/Profile/GitlabProfileIcon.php
+++ b/src/Sikofitt/Image/Profile/GitlabProfileIcon.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of test.
*
@@ -18,23 +28,27 @@ namespace Sikofitt\Image\Profile;
* Class GitlabProfileIcon
* @package Sikofitt\Image\Profile
*/
-class GitlabProfileIcon implements ProfileIconInterface {
+class GitlabProfileIcon implements ProfileIconInterface
+{
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'gitlab';
+ }
+
+ public function getDefaultUrl()
+ {
+ return 'https://gitlab.com';
+ }
/**
* {@inheritdoc}
*/
- public function getName() {
- return 'gitlab';
+ public function getIcon()
+ {
+ return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHECQRchk3rwAAA3VJREFUSMe1lU1oXFUYhp/vnJtJMplJ2iQttElMbCY3uYlaKAqCddEm00K1iFakZFIQoVBciNalRURdueim4MqFYCJ0Uze6sGqhCxcuXCia1JtuatJpuhAUxJ9m7ve5mJnM3PyQZOELF845l/e87/dzzhGasDw5JiLuGvBW39fz8+wCvxUj/jHGzLjS/81Csfmfqw/uHB8jEIeanTSz99gler5aQI1TClPlYjS8qcjgjVtUzIoG7QZHl6fGszsVuHdioj58FUCV5zYVAUB4H8CgB7O+nYocuP4z5WL0MDBc458EWDoepUXKU9F+NZ6oTT3w4m7Spcrr1phOAgzcWEiLqHGsmWQiF3ey+a2nRlkuRi1197VI/N2p8ZkN6TJ4JiVi1luejI5sJ5Lv8JiSNxhax39ns5o8vyEF8Mp2In3X5wGeBVpTIjB0dyoauHNshABg6enohCq56r8GEji6o4IYb5vV914TcaY8PnhzcSkAOHg+uSQ/AQ/WcY3DS0Fkplvv71vgQJSApQwKDrNxXuImnzmbDbtNOKyHUE2Q5g+D7F5LzLYWyXapagVS3ApohFkbZwFcAiNAnhyOAkmzHzPo3KeyzmUKmRyyLnXwEEo7DoNkLjzrBF6Aqmu68fSizVuKx2WyW4u0tltaoAulvypQW7vogFMpVgFHG9pMbO0w2aTYZLssEdcUSRtGiJA0dzKPORwvi/Brys0j1cKtcfO2IWEG5PaZNNXLGMVwqfTdF88Z56fj751LhkS41mgZhBCtO2rNmaxv7yCDBRlrnLNRoK1x7sTxnTiG/XT8havGFJific+I4wJSa+Q9eAZraTOko8dStcpkazEosB9lTyMCcbzhS/GTvhT/Ve3nGiqfFAjO3Sb5NDyI8oMZvQjwI8rfOK2gK794h1S7rntAtb3THHkSJvAoINxD7EhQWlzZ9KoPzt0mmQvx03FZHH3iuAy1+rRi4nE+Q/1cW7bTBMEYQVAQ4Yp3hEFpcWV1doQt3xNfiuvDB74UvynCaYTfKSAi0NJWbYDsXlME4VGghX+957yfiV9LjD8BWmYWtxZZW5yOSWZDfCn+3DkKkudbRqGjy8wMct3qrB8ky6LAIZmOP7Kr4wQNk7uDzoXVy3I2/EDfDVeXi5GuXgpNr4aX+T9gX4YTf1wYvV/5MFx71Fc/LmzL+w9fiFeX9RDTWwAAAABJRU5ErkJggg==';
}
-
- public function getDefaultUrl() {
- return 'https://gitlab.com';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIcon() {
- return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHECQRchk3rwAAA3VJREFUSMe1lU1oXFUYhp/vnJtJMplJ2iQttElMbCY3uYlaKAqCddEm00K1iFakZFIQoVBciNalRURdueim4MqFYCJ0Uze6sGqhCxcuXCia1JtuatJpuhAUxJ9m7ve5mJnM3PyQZOELF845l/e87/dzzhGasDw5JiLuGvBW39fz8+wCvxUj/jHGzLjS/81Csfmfqw/uHB8jEIeanTSz99gler5aQI1TClPlYjS8qcjgjVtUzIoG7QZHl6fGszsVuHdioj58FUCV5zYVAUB4H8CgB7O+nYocuP4z5WL0MDBc458EWDoepUXKU9F+NZ6oTT3w4m7Spcrr1phOAgzcWEiLqHGsmWQiF3ey+a2nRlkuRi1197VI/N2p8ZkN6TJ4JiVi1luejI5sJ5Lv8JiSNxhax39ns5o8vyEF8Mp2In3X5wGeBVpTIjB0dyoauHNshABg6enohCq56r8GEji6o4IYb5vV914TcaY8PnhzcSkAOHg+uSQ/AQ/WcY3DS0Fkplvv71vgQJSApQwKDrNxXuImnzmbDbtNOKyHUE2Q5g+D7F5LzLYWyXapagVS3ApohFkbZwFcAiNAnhyOAkmzHzPo3KeyzmUKmRyyLnXwEEo7DoNkLjzrBF6Aqmu68fSizVuKx2WyW4u0tltaoAulvypQW7vogFMpVgFHG9pMbO0w2aTYZLssEdcUSRtGiJA0dzKPORwvi/Brys0j1cKtcfO2IWEG5PaZNNXLGMVwqfTdF88Z56fj751LhkS41mgZhBCtO2rNmaxv7yCDBRlrnLNRoK1x7sTxnTiG/XT8havGFJific+I4wJSa+Q9eAZraTOko8dStcpkazEosB9lTyMCcbzhS/GTvhT/Ve3nGiqfFAjO3Sb5NDyI8oMZvQjwI8rfOK2gK794h1S7rntAtb3THHkSJvAoINxD7EhQWlzZ9KoPzt0mmQvx03FZHH3iuAy1+rRi4nE+Q/1cW7bTBMEYQVAQ4Yp3hEFpcWV1doQt3xNfiuvDB74UvynCaYTfKSAi0NJWbYDsXlME4VGghX+957yfiV9LjD8BWmYWtxZZW5yOSWZDfCn+3DkKkudbRqGjy8wMct3qrB8ky6LAIZmOP7Kr4wQNk7uDzoXVy3I2/EDfDVeXi5GuXgpNr4aX+T9gX4YTf1wYvV/5MFx71Fc/LmzL+w9fiFeX9RDTWwAAAABJRU5ErkJggg==';
- }
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Image/Profile/LinkedinProfileIcon.php b/src/Sikofitt/Image/Profile/LinkedinProfileIcon.php
index 31cd0c6..0d44e74 100644
--- a/src/Sikofitt/Image/Profile/LinkedinProfileIcon.php
+++ b/src/Sikofitt/Image/Profile/LinkedinProfileIcon.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of test.
*
@@ -14,18 +24,21 @@
namespace Sikofitt\Image\Profile;
+class LinkedinProfileIcon implements ProfileIconInterface
+{
-class LinkedinProfileIcon implements ProfileIconInterface {
+ public function getName()
+ {
+ return 'linkedin';
+ }
- public function getName() {
- return 'linkedin';
- }
+ public function getDefaultUrl()
+ {
+ return 'https://linkedin.com/in';
+ }
- public function getDefaultUrl() {
- return 'https://linkedin.com/in';
- }
-
- public function getIcon() {
- return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHETMTmFa4IgAAA/1JREFUSMeVlk2IXEUQx3/V783sfOxKdjeKQqImCJpsBC9qwFxC1KCiEW8eRQVBPXjxInjwJoin6CXEsyhCcvIDRUQkGoOgyaJgPlAS2GQlX7tmZ3fm1d9D93tvZnZzsKHpnqrurqp//aveGMDk7qdnWlt37DSzhrDcwABE2qQ9lcJKSTUEmNWX5N5bPXfy1NKJzy/n3YeempnZ/9Lh0J58BrNQPmxYekbUTxpChLSOGwnJC0kg0Znbc5SJzouhfefOXaE9+SwQJDAJSbgcKPfxkuSYiLokQ4BUyd2jToC1ugead2yfy2WhJQIux0wUDjf6BQImmxm2DrYUXxVe0lpcJVVnMQMLrSCgSFcHLu6e6XDmzb2ceH0PU60GnmDzBJynvWtYJiTDUwTCRmaQQC7cRWaBL154kE2tnO3TbQ49d38M3eN0OUpwyoUE7l7rvIa3hE4SuZJXAJu7TbrNrErmbKdBMwusDKLP46ySJ2iSWIqEibkECxGFUHrmLv5cXOLI/CVIhj87ucC1Xj95Fc946akLIZyx3+6RKOXeRe4SRRK2mhmvHPmNg8em6Lvz+6VlQrB0yWI2VFOgKEQhyIKRGeDGEN8RQiZyIgMp163Tba71Bgi4rTvBwtIqjWBs3dTGESt9Z+F6j9luk913zXD71ASnF5f5Y3GZxX/XIhuSITNDDnmkewz16kqff95+rML85/NX2XfoR7ZNT3L8tUcAOH7+Gu9/f44PDswx22lUZ6/3Brzz7WkO//QXWQgJ8uh9ZJcMFRGNQnVie33HCyi8ruwdt3b5+PkHRgwA3NLKee+J+9iyqUNRCC8EHiMJoqzu2vJwqxguQICpiRyAT04u8O53Zzj295WRO2/tu4cbawPKd2UiL2vEyhYxZqZwj14NjY9+ucCrn/7KRCPwYbvJVy8/zL2buwDs3TbL2sBp5QFLfSyUPcCHGUBNBAGyUfnBH86SZYYLLi71uLi0WummW3nVu8quk8eqjbVSVeXQcBfyUdmFKyup+ERJnHLkmYGr7p+q2LUBUkPRjOeqKOoedbM8uupPRF2MG0RSGhjqq1U3cK+rWuMepjxj8X5VJ+tPloaE3NfJqoreAGJSq6ogLGP04U45Hs06ztUQymwD1yxFb2UkYjCUGHdBSNh7lJXeFhKZGYWXDRFwp3BVRewePS7cMTOQYfbkG4+HXfu+jL1GDG70a4eCkU3k8YHeoAojpGovYyhWByMoZJ1GbPVm6NQ3+3Pce0pemSC0GmMsgUCAVmMELw2dCc28+pNhUFE+5bMXWDw7773lo/HbQDU1NH1Mt16fSDByRnhv+agWz87HiOcenWHL3C6CtW5aMP9nGODqcX7+FPNfX/4PZFb8sTBvluQAAAAASUVORK5CYII=';
- }
-}
\ No newline at end of file
+ public function getIcon()
+ {
+ return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHETMTmFa4IgAAA/1JREFUSMeVlk2IXEUQx3/V783sfOxKdjeKQqImCJpsBC9qwFxC1KCiEW8eRQVBPXjxInjwJoin6CXEsyhCcvIDRUQkGoOgyaJgPlAS2GQlX7tmZ3fm1d9D93tvZnZzsKHpnqrurqp//aveGMDk7qdnWlt37DSzhrDcwABE2qQ9lcJKSTUEmNWX5N5bPXfy1NKJzy/n3YeempnZ/9Lh0J58BrNQPmxYekbUTxpChLSOGwnJC0kg0Znbc5SJzouhfefOXaE9+SwQJDAJSbgcKPfxkuSYiLokQ4BUyd2jToC1ugead2yfy2WhJQIux0wUDjf6BQImmxm2DrYUXxVe0lpcJVVnMQMLrSCgSFcHLu6e6XDmzb2ceH0PU60GnmDzBJynvWtYJiTDUwTCRmaQQC7cRWaBL154kE2tnO3TbQ49d38M3eN0OUpwyoUE7l7rvIa3hE4SuZJXAJu7TbrNrErmbKdBMwusDKLP46ySJ2iSWIqEibkECxGFUHrmLv5cXOLI/CVIhj87ucC1Xj95Fc946akLIZyx3+6RKOXeRe4SRRK2mhmvHPmNg8em6Lvz+6VlQrB0yWI2VFOgKEQhyIKRGeDGEN8RQiZyIgMp163Tba71Bgi4rTvBwtIqjWBs3dTGESt9Z+F6j9luk913zXD71ASnF5f5Y3GZxX/XIhuSITNDDnmkewz16kqff95+rML85/NX2XfoR7ZNT3L8tUcAOH7+Gu9/f44PDswx22lUZ6/3Brzz7WkO//QXWQgJ8uh9ZJcMFRGNQnVie33HCyi8ruwdt3b5+PkHRgwA3NLKee+J+9iyqUNRCC8EHiMJoqzu2vJwqxguQICpiRyAT04u8O53Zzj295WRO2/tu4cbawPKd2UiL2vEyhYxZqZwj14NjY9+ucCrn/7KRCPwYbvJVy8/zL2buwDs3TbL2sBp5QFLfSyUPcCHGUBNBAGyUfnBH86SZYYLLi71uLi0WummW3nVu8quk8eqjbVSVeXQcBfyUdmFKyup+ERJnHLkmYGr7p+q2LUBUkPRjOeqKOoedbM8uupPRF2MG0RSGhjqq1U3cK+rWuMepjxj8X5VJ+tPloaE3NfJqoreAGJSq6ogLGP04U45Hs06ztUQymwD1yxFb2UkYjCUGHdBSNh7lJXeFhKZGYWXDRFwp3BVRewePS7cMTOQYfbkG4+HXfu+jL1GDG70a4eCkU3k8YHeoAojpGovYyhWByMoZJ1GbPVm6NQ3+3Pce0pemSC0GmMsgUCAVmMELw2dCc28+pNhUFE+5bMXWDw7773lo/HbQDU1NH1Mt16fSDByRnhv+agWz87HiOcenWHL3C6CtW5aMP9nGODqcX7+FPNfX/4PZFb8sTBvluQAAAAASUVORK5CYII=';
+ }
+}
diff --git a/src/Sikofitt/Image/Profile/ProfileIconInterface.php b/src/Sikofitt/Image/Profile/ProfileIconInterface.php
index 1489c36..0faefff 100644
--- a/src/Sikofitt/Image/Profile/ProfileIconInterface.php
+++ b/src/Sikofitt/Image/Profile/ProfileIconInterface.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of resume.
*
@@ -18,9 +28,10 @@ namespace Sikofitt\Image\Profile;
* Interface ProfileIconInterface
* @package Sikofitt\Image\Profile
*/
-interface ProfileIconInterface {
+interface ProfileIconInterface
+{
- /**
+ /**
* @return string
* The name of the network.
*/
@@ -38,5 +49,4 @@ interface ProfileIconInterface {
* Can be a url, a relative path, or base64 encoded uri.
*/
public function getIcon();
-
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Image/Profile/TwitterProfileIcon.php b/src/Sikofitt/Image/Profile/TwitterProfileIcon.php
index 7392aa6..c0eaf19 100644
--- a/src/Sikofitt/Image/Profile/TwitterProfileIcon.php
+++ b/src/Sikofitt/Image/Profile/TwitterProfileIcon.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of resume.
*
@@ -14,19 +24,20 @@
namespace Sikofitt\Image\Profile;
+class TwitterProfileIcon implements ProfileIconInterface
+{
-class TwitterProfileIcon implements ProfileIconInterface {
+ public function getName()
+ {
+ return 'twitter';
+ }
+ public function getDefaultUrl()
+ {
+ return 'https://twitter.com';
+ }
- public function getName()
- {
- return 'twitter';
- }
- public function getDefaultUrl() {
- return 'https://twitter.com';
- }
-
- public function getIcon() {
- return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4AcHEBgWn47b8wAAAedJREFUSMfllj1LHEEYgJ/du/hxCYOkCXIOwSJdhIQUAZGYwtJGsVA4mFb8ARYGo5WQgCmSOsVgJfgLrAImZfQHWCg3mNjYDJxwp5e1mdNhsnu74bSJb7PszDvvs+/nLPwvEoULUluMEl0PdXSktn1A7JYToAUk/nmp7Q1EahsDkVGinQOIjBKJ1LYGLAH9busPsGWU+Cy1HQLmgH2jxH7UoQFDwAnwEEj1xvNgGfiQ8g2Jg0XOw6dGiXrsGawBFeAUmPDg1+IALx0gyQh/yQE2gA2pbSX2FJ655xNgT2q7npGb6ax8Bh6tAJtGiXMfsh0orkltL6S281LbqtT2gRf7PGkDL4wSB9eJd2EpAYfAaMqh38AZ0ABGgGoO5CcwDrSMEvg5mQEOMmI9DDwHXhcAADT94ikHhmZvqf++GyVanZfYC5e+qyb3w2WBj1519CJf88bKJPCtB8CeUeLNX54EstujF7VwIQ0y3wNgyyhRDydFlDGbFoFV4DEwUBBwCrwCfoWTIuoyBCNgp2BZN4Axo8RR2mbZGS4Dgw5akdrOAV8KemCASeA4S6HTjAPAJrAAPCpovAm8Bz4ZJS5zm8YL0VvgHTDVpVfqLsGr/9yZ4bUrtR0Pxg5A2yjxw78h7+SnICzP+yVXFk+tI1UN56QAAAAASUVORK5CYII=';
- }
-
-}
\ No newline at end of file
+ public function getIcon()
+ {
+ return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4AcHEBgWn47b8wAAAedJREFUSMfllj1LHEEYgJ/du/hxCYOkCXIOwSJdhIQUAZGYwtJGsVA4mFb8ARYGo5WQgCmSOsVgJfgLrAImZfQHWCg3mNjYDJxwp5e1mdNhsnu74bSJb7PszDvvs+/nLPwvEoULUluMEl0PdXSktn1A7JYToAUk/nmp7Q1EahsDkVGinQOIjBKJ1LYGLAH9busPsGWU+Cy1HQLmgH2jxH7UoQFDwAnwEEj1xvNgGfiQ8g2Jg0XOw6dGiXrsGawBFeAUmPDg1+IALx0gyQh/yQE2gA2pbSX2FJ655xNgT2q7npGb6ax8Bh6tAJtGiXMfsh0orkltL6S281LbqtT2gRf7PGkDL4wSB9eJd2EpAYfAaMqh38AZ0ABGgGoO5CcwDrSMEvg5mQEOMmI9DDwHXhcAADT94ikHhmZvqf++GyVanZfYC5e+qyb3w2WBj1519CJf88bKJPCtB8CeUeLNX54EstujF7VwIQ0y3wNgyyhRDydFlDGbFoFV4DEwUBBwCrwCfoWTIuoyBCNgp2BZN4Axo8RR2mbZGS4Dgw5akdrOAV8KemCASeA4S6HTjAPAJrAAPCpovAm8Bz4ZJS5zm8YL0VvgHTDVpVfqLsGr/9yZ4bUrtR0Pxg5A2yjxw78h7+SnICzP+yVXFk+tI1UN56QAAAAASUVORK5CYII=';
+ }
+}
diff --git a/src/Sikofitt/Json/JsonFileTrait.php b/src/Sikofitt/Json/JsonFileTrait.php
new file mode 100644
index 0000000..392c7a9
--- /dev/null
+++ b/src/Sikofitt/Json/JsonFileTrait.php
@@ -0,0 +1,39 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * This file is part of test.
+ *
+ * @file JsonFileTrait.php
+ *
+ * R. Eric Wheeler
+ *
+ * 7/8/16 / 8:12 AM
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sikofitt\Json;
+
+trait JsonFileTrait
+{
+
+ public function encodeFile($array, $file, $schema = null)
+ {
+ return $this['json.encode']->encodeFile($array, $file, $schema);
+ }
+
+ public function decodeFile($file, $schema = null)
+ {
+ return $this['json.decode']->decodeFile($file, $file, $schema);
+ }
+}
diff --git a/src/Sikofitt/Json/JsonServiceProvider.php b/src/Sikofitt/Json/JsonServiceProvider.php
new file mode 100644
index 0000000..fb91636
--- /dev/null
+++ b/src/Sikofitt/Json/JsonServiceProvider.php
@@ -0,0 +1,42 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sikofitt\Json;
+
+use Pimple\Container;
+use Pimple\ServiceProviderInterface;
+use Webmozart\Json\JsonDecoder;
+use Webmozart\Json\JsonEncoder;
+use Webmozart\Json\JsonValidator;
+
+/**
+ * Class JsonServiceProvider
+ * @package Sikofitt\Json
+ */
+class JsonServiceProvider implements ServiceProviderInterface
+{
+
+ /**
+ * @param Container $app
+ */
+ public function register(Container $app)
+ {
+ $app['json.encode'] = function ($app) {
+ return new JsonEncoder();
+ };
+ $app['json.decode'] = function ($app) {
+ return new JsonDecoder();
+ };
+ $app['json.validate'] = function ($app) {
+ return new JsonValidator();
+ };
+ }
+}
diff --git a/src/Sikofitt/Json/JsonTrait.php b/src/Sikofitt/Json/JsonTrait.php
new file mode 100644
index 0000000..90e3625
--- /dev/null
+++ b/src/Sikofitt/Json/JsonTrait.php
@@ -0,0 +1,50 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sikofitt\Json;
+
+/**
+ * Class JsonTrait
+ * @package Sikofitt\Json
+ */
+trait JsonTrait
+{
+
+ /**
+ * @param $array
+ * @param null $schema
+ * @return mixed
+ */
+ public function encode($array, $schema = null)
+ {
+ return $this['json.encode']->encode($array, $schema);
+ }
+
+ /**
+ * @param $json
+ * @param null $schema
+ * @return mixed
+ */
+ public function decode($json, $schema = null)
+ {
+ return $this['json.decode']->decode($json, $schema);
+ }
+
+ /**
+ * @param $json
+ * @param $schema
+ * @return mixed
+ */
+ public function validate($json, $schema)
+ {
+ return $this['json.validate']->validate($json, $schema);
+ }
+}
diff --git a/src/Sikofitt/Json/ResumeBuilder.php b/src/Sikofitt/Json/ResumeBuilder.php
index 0b55be1..87ab20a 100644
--- a/src/Sikofitt/Json/ResumeBuilder.php
+++ b/src/Sikofitt/Json/ResumeBuilder.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* Created by PhpStorm.
* User: eric
@@ -8,17 +18,16 @@
namespace Sikofitt\Json;
-
-
-use Webmozart\Json\JsonDecoder;
-use Webmozart\Json\JsonEncoder;
+use App;
use Webmozart\Json\DecodingFailedException;
use Webmozart\Json\EncodingFailedException;
-use Webmozart\Json\JsonValidator;
-use Webmozart\Json\ValidationFailedException;
use Webmozart\Json\FileNotFoundException;
use Webmozart\Json\IOException;
-use App;
+use Webmozart\Json\JsonDecoder;
+use Webmozart\Json\JsonEncoder;
+use Webmozart\Json\JsonValidator;
+use Webmozart\Json\ValidationFailedException;
+
/**
* Class ResumeBuilder
* @package Sikofitt\Json
@@ -27,38 +36,34 @@ class ResumeBuilder
{
private $app;
- public function __construct (App $app)
+ public function __construct(App $app)
{
$this->app = $app;
}
- public function toJson ($resumeArray, array $options = array ())
+ public function toJson($resumeArray, array $options = [])
{
$encoder = new JsonEncoder();
$validator = new JsonValidator();
- if(!isset($options['file'])) {
+ if (!isset($options['file'])) {
throw new \InvalidArgumentException('file is a required argument.');
}
$errors = $validator->validate((object)$resumeArray, $options['app']->getResumeSchema());
dump($errors);
try {
- // $encoder->encodeFile ($resumeArray, 'test.json');
-
+ // $encoder->encodeFile ($resumeArray, 'test.json');
} catch (\Exception $e) {
$r = new \ReflectionClass($e);
$exceptionClass = $r->getName();
return new $exceptionClass($e->getMessage());
}
-
-
-
}
- public function fromJson ($resumeJson, array $options = array ())
+ public function fromJson($resumeJson, array $options = [])
{
$decoder = new JsonDecoder();
$resumeObject = $decoder->decodeFile($this->app->getResumeJson(), $this->app->getResumeSchema());
return $resumeObject;
}
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Resume/ResumeParser.php b/src/Sikofitt/Resume/ResumeParser.php
index c6a068a..c13ea7c 100644
--- a/src/Sikofitt/Resume/ResumeParser.php
+++ b/src/Sikofitt/Resume/ResumeParser.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* Created by PhpStorm.
* User: eric
@@ -8,7 +18,6 @@
namespace Sikofitt\Resume;
-
use Webmozart\Json\Conversion\JsonConverter;
/**
@@ -23,7 +32,7 @@ class ResumeParser implements JsonConverter
*
* @return void
*/
- public function fromJson ($jsonData, array $options = array ())
+ public function fromJson($jsonData, array $options = [])
{
// TODO: Implement fromJson() method.
}
@@ -34,10 +43,8 @@ class ResumeParser implements JsonConverter
*
* @return void
*/
- public function toJson ($data, array $options = array ())
+ public function toJson($data, array $options = [])
{
// TODO: Implement toJson() method.
}
-
-
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Twig/Date.php b/src/Sikofitt/Twig/Date.php
index bb38309..c759603 100644
--- a/src/Sikofitt/Twig/Date.php
+++ b/src/Sikofitt/Twig/Date.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of resume.
*
@@ -14,12 +24,13 @@
namespace Sikofitt\Twig;
+class Date extends \Twig_Extension
+{
-class Date extends \Twig_Extension {
-
- public function getName() {
- return 'date_diff';
- }
+ public function getName()
+ {
+ return 'date_diff';
+ }
/**
* @return array
@@ -27,7 +38,7 @@ class Date extends \Twig_Extension {
*/
public function getFilters()
{
- return [
+ return [
new \Twig_SimpleFilter('date_diff', [$this, 'dateDiff']),
];
}
@@ -42,9 +53,8 @@ class Date extends \Twig_Extension {
*/
public function dateDiff($startDate, $endDate = 'now')
{
- $dt = new \DateTimeImmutable($startDate);
- $dateDifference = $dt->diff(new \DateTime($endDate));
- return $dateDifference->format('%y years');
-
+ $dt = new \DateTimeImmutable($startDate);
+ $dateDifference = $dt->diff(new \DateTime($endDate));
+ return $dateDifference->format('%y years');
}
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/Twig/RenderProfile.php b/src/Sikofitt/Twig/RenderProfile.php
index 6eb7b66..4b808ee 100644
--- a/src/Sikofitt/Twig/RenderProfile.php
+++ b/src/Sikofitt/Twig/RenderProfile.php
@@ -1,4 +1,14 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
/**
* This file is part of test.
*
@@ -14,41 +24,42 @@
namespace Sikofitt\Twig;
+class RenderProfile extends \Twig_Extension
+{
-class RenderProfile extends \Twig_Extension {
+ public function getName()
+ {
+ return 'render_profile';
+ }
- public function getName() {
- return 'render_profile';
- }
-
- public function getFunctions() {
- return [
+ public function getFunctions()
+ {
+ return [
new \Twig_SimpleFunction('render_profile', [$this, 'renderProfile'], ['needs_context' => true]),
];
- }
+ }
- public function renderProfile($context, $iconData)
- {
- $imageData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAIAAABLixI0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHEQYsjAFXqQAAAEVpVFh0Q29tbWVudAAAAAAAQ1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTAKqozFDgAAAiVJREFUOMutlT/oOWEcx+8OX5fLDVwx2ZQFSQYzmZgMzCaDzaCUMpmQkowM2G+gFFnUGXRKSQwGIYtyisif+w2n+973ucef4fde7u75fD6v5/l8Ps/zHMLDxHFcp9OJxWJOp1Ov1ysUChzHLRZLNBrt9Xrn8xkahciH6vW6VqtFXouiqOFw+JmVz+eR79Rqtd6xSqUS8rUwDGNZFs7a7/c4jku9lUplOByuVqvtdpum6Xg8jqKo1MHn88FZHo8HmPnn50co8+PxeLVwjuNA1mq1giaSTCaDwaDX653P58+Av6pUKiJLKQxNJhMUReWumUxGeGFZ1mw2yydbLpe/FRQeh8NBDhJFkmQgEEAQJJ1OAyaDwfD7ISyv2+0CdZV2YL1e8zw/Go3UajXQSkjtj8fjK1YkEnmWQ6kETEajUcp65qjRaAqFApRls9kQBBkMBrfbDTBtt9tGowHmKMhqtUJzJAhCpVJBZ9LpdKfTCbLvGYaRe2ez2d1uV6vV5CahLAzDwM9jIpEAAjabDXRnCSqXy5fLBc46HA4kSUq9c7kcz/PQdQElAlnX69XhcHx5vP1+P6SP0i0DnPD3rD+xgPnxeJhMpm9AKIra7faXCYtaLBYURUHjRWEYJnbw5R0t6HK5hEIhKYggiGazOZ1O+/1+u90ej8ef73up3G63yEqlUu+dP7Du97vL5RL+F/wnIR89ZrMZhmHFYvE/sHiep2lavFff6B8xFGrMmf/uPQAAAABJRU5ErkJggg==';
+ public function renderProfile($context, $iconData)
+ {
+ $imageData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAIAAABLixI0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AcHEQYsjAFXqQAAAEVpVFh0Q29tbWVudAAAAAAAQ1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTAKqozFDgAAAiVJREFUOMutlT/oOWEcx+8OX5fLDVwx2ZQFSQYzmZgMzCaDzaCUMpmQkowM2G+gFFnUGXRKSQwGIYtyisif+w2n+973ucef4fde7u75fD6v5/l8Ps/zHMLDxHFcp9OJxWJOp1Ov1ysUChzHLRZLNBrt9Xrn8xkahciH6vW6VqtFXouiqOFw+JmVz+eR79Rqtd6xSqUS8rUwDGNZFs7a7/c4jku9lUplOByuVqvtdpum6Xg8jqKo1MHn88FZHo8HmPnn50co8+PxeLVwjuNA1mq1giaSTCaDwaDX653P58+Av6pUKiJLKQxNJhMUReWumUxGeGFZ1mw2yydbLpe/FRQeh8NBDhJFkmQgEEAQJJ1OAyaDwfD7ISyv2+0CdZV2YL1e8zw/Go3UajXQSkjtj8fjK1YkEnmWQ6kETEajUcp65qjRaAqFApRls9kQBBkMBrfbDTBtt9tGowHmKMhqtUJzJAhCpVJBZ9LpdKfTCbLvGYaRe2ez2d1uV6vV5CahLAzDwM9jIpEAAjabDXRnCSqXy5fLBc46HA4kSUq9c7kcz/PQdQElAlnX69XhcHx5vP1+P6SP0i0DnPD3rD+xgPnxeJhMpm9AKIra7faXCYtaLBYURUHjRWEYJnbw5R0t6HK5hEIhKYggiGazOZ1O+/1+u90ej8ef73up3G63yEqlUu+dP7Du97vL5RL+F/wnIR89ZrMZhmHFYvE/sHiep2lavFff6B8xFGrMmf/uPQAAAABJRU5ErkJggg==';
//network": "Twitter" +"username": "sikofitt" +"url": ""
$icons = $context['app']->config('app.icons');
- $network = strtolower($iconData->network);
- $haveNetwork = isset($icons[$network]);
- if($haveNetwork) {
- $imageData = $icons[strtolower($iconData->network)];
- } else {
- return;
+ $network = strtolower($iconData->network);
+ $haveNetwork = isset($icons[$network]);
+ if ($haveNetwork) {
+ $imageData = $icons[strtolower($iconData->network)];
+ } else {
+ return;
+ }
+ if (!isset($iconData->url) || empty($iconData->url)) {
+ $iconData->url = $icons[strtolower($iconData->network)]['url'] . '/' . $iconData->username;
+ }
+ $imageUrl = sprintf('', $imageData['icon'], $iconData->network);
+ if (isset($iconData->url) && !empty($iconData->url)) {
+ return sprintf('%s', $iconData->url, $iconData->network, $imageUrl);
+ } else {
+ return $imageUrl;
+ }
}
- if(!isset($iconData->url) || empty($iconData->url))
- {
- $iconData->url = $icons[strtolower($iconData->network)]['url'] . '/' . $iconData->username;
- }
- $imageUrl = sprintf('', $imageData['icon'], $iconData->network);
- if(isset($iconData->url) && !empty($iconData->url)) {
- return sprintf('%s', $iconData->url, $iconData->network,$imageUrl);
- } else {
- return $imageUrl;
- }
- }
-}
\ No newline at end of file
+}
diff --git a/src/Sikofitt/less/resume.less b/src/Sikofitt/less/resume.less
index e202587..6cd3e96 100644
--- a/src/Sikofitt/less/resume.less
+++ b/src/Sikofitt/less/resume.less
@@ -1,4 +1,5 @@
@import 'uikit.less';
+@import 'components/notify.less';
@import 'https://fonts.googleapis.com/css?family=Lato:300|Eczar';
@base-body-font-family : 'Lato';
diff --git a/web/index.php b/web/index.php
index 4301a9c..8d1abd2 100644
--- a/web/index.php
+++ b/web/index.php
@@ -1,106 +1,20 @@
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
require_once __DIR__ . '/../vendor/autoload.php';
-require_once __DIR__ . '/../app/App.php';
-define('APP_ROOT', __DIR__ . '/../');
-define('SCHEMA_URL', 'https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json');
$app = new App();
-$app['debug'] = true;
-$app->register(new Sikofitt\Config\ConfigServiceProvider(), [
- 'config.path' => $app->getConfDirectory(),
-]);
-$app->register(new TwigServiceProvider(), [
- 'twig.path' => [
- APP_ROOT . 'app/views',
- APP_ROOT . 'vendor/symfony/web-profiler-bundle/Resources/views/Profiler'
- ],
-]);
-$app->register(new WhoopsServiceProvider());
-$app->register(new \Silex\Provider\AssetServiceProvider());
-$app->register(new \Silex\Provider\MonologServiceProvider());
-
-$app->register(new \Silex\Provider\HttpKernelServiceProvider());
-$app->register(new \Silex\Provider\AssetServiceProvider());
-$app->register(new \Silex\Provider\FormServiceProvider());
-$app->register(new \Silex\Provider\HttpFragmentServiceProvider());
-$app->register(new \Silex\Provider\ServiceControllerServiceProvider());
-$app->register(new \Silex\Provider\RoutingServiceProvider());
-$app->register(new \Silex\Provider\VarDumperServiceProvider(), array(
- 'var_dumper.dump_destination' => new \Symfony\Component\VarDumper\Cloner\VarCloner(),
-));
-
-$app->register(new \Silex\Provider\MonologServiceProvider(), array(
- 'monolog.logfile' => $app->getDataDirectory() . '/logs/' . (null !== $app->config('app.environment') ? $app->config('app.environment') . '.log' : 'dev.log'),
-));
-
-$app->register(new \Silex\Provider\SessionServiceProvider());
-$app->register(new \Silex\Provider\WebProfilerServiceProvider(), array(
- 'profiler.cache_dir' => $app->getDataDirectory() . '/cache/profiler',
-));
-$app->extend('twig', function (\Twig_Environment $twig, $app) {
- $twig->enableDebug();
- $twig->addExtension(new Twig_Extensions_Extension_Date());
- $twig->addExtension(new Sikofitt\Twig\Date());
- $twig->addExtension(new Sikofitt\Twig\RenderProfile());
- $twig->addGlobal('config', $app['config']->all());
- return $twig;
-});
-$app->error(function (\Exception $e, $code) use ($app) {
- switch ($code) {
- case 404:
- $message = $app['twig']->render('error404.html.twig');
- break;
- default:
- $message = $app['twig']->render('error500.html.twig');
- }
- return new Response($message, $code);
-});
-
-$app['json.decoder'] = function ($app) {
- return new Webmozart\Json\JsonDecoder();
-};
-$app['json.encoder'] = function ($app) {
- return new Webmozart\Json\JsonEncoder();
-};
-$app['json.validator'] = function ($app) {
- return new Webmozart\Json\JsonValidator();
-};
-
-$app->get('/', function () use ($app) {
- $resumeData = $app['json.decoder']->decodeFile($app->getDataDirectory() . '/resume.json', $app->getDataDirectory() . '/resume.schema.json');
- $basics = (isset($resumeData->basics) && count($resumeData->basics) > 0) ? $resumeData->basics : null;
- $work = (isset($resumeData->work) && count($resumeData->work) > 0) ? $resumeData->work : null;
- $volunteer = (isset($resumeData->volunteer) && count($resumeData->volunteer) > 0) ? $resumeData->volunteer : null;
- $education = (isset($resumeData->education) && count($resumeData->education) > 0) ? $resumeData->education : null;
- $awards = (isset($resumeData->awards) && count($resumeData->awards) > 0) ? $resumeData->awards : null;
- $publications = (isset($resumeData->publications) && count($resumeData->publications) > 0) ? $resumeData->publications : null;
- $skills = (isset($resumeData->skills) && count($resumeData->skills) > 0) ? $resumeData->skills : null;
- $languages = (isset($resumeData->languages) && count($resumeData->languages) > 0) ? $resumeData->languages : null;
- $interests = (isset($resumeData->interests) && count($resumeData->interests) > 0) ? $resumeData->interests : null;
- $references = (isset($resumeData->references) && count($resumeData->references) > 0) ? $resumeData->references : null;
-
-
- return $app['twig']->render('resume.html.twig', [
- 'basics' => $basics,
- 'work' => $work,
- 'volunteer' => $volunteer,
- 'education' => $education,
- 'awards' => $awards,
- 'publications' => $publications,
- 'skills' => $skills,
- 'languages' => $languages,
- 'interests' => $interests,
- 'references' => $references,
- ]);
-});
+require_once $app->getAppDirectory() . '/providers.php';
+$app->mount('/', new \Sikofitt\Controller\ResumeControllerProvider());
+$app->mount('/api', new \Sikofitt\Controller\ApiControllerProvider());
$app->run();