From 51728efba11c840cfc3768d75b8e9e010420eb6c Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 17 Dec 2017 19:06:11 +0100 Subject: [PATCH] Various cleanup [skip ci] --- README.md | 2 - .../Controllers/Import/BankController.php | 64 ----- .../Import/ConfigurationController.php | 2 + .../Controllers/Import/FileController.php | 251 ------------------ routes/web.php | 12 - 5 files changed, 2 insertions(+), 329 deletions(-) delete mode 100644 app/Http/Controllers/Import/BankController.php delete mode 100644 app/Http/Controllers/Import/FileController.php diff --git a/README.md b/README.md index 42ed976bcb..5e8a9b458a 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,6 @@ You can install Firefly III on any Linux or Windows machine. You'll need a web s Register for a free Heroku account and instantly run Firefly III on your very own cloud instance. -_My Heroku configuration is currently broken, but I'm trying to fix it._ - ### Using Sandstorm.io You can find Firefly III in [the Sandstorm.io marketplace](https://apps.sandstorm.io/app/uws252ya9mep4t77tevn85333xzsgrpgth8q4y1rhknn1hammw70). You can run it on your own installation or on Oasis. diff --git a/app/Http/Controllers/Import/BankController.php b/app/Http/Controllers/Import/BankController.php deleted file mode 100644 index 34c2a726cd..0000000000 --- a/app/Http/Controllers/Import/BankController.php +++ /dev/null @@ -1,64 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace FireflyIII\Http\Controllers\Import; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Prerequisites\PrerequisitesInterface; - -/** - * Class BankController - */ -class BankController extends Controller -{ - - /** - * Once there are no prerequisites, this method will create an importjob object and - * redirect the user to a view where this object can be used by a bank specific - * class to process. - * - * @param ImportJobRepositoryInterface $repository - * @param string $bank - * - * @return \Illuminate\Http\RedirectResponse|null - * @throws FireflyException - */ - public function createJob(ImportJobRepositoryInterface $repository, string $bank) - { - $class = config(sprintf('firefly.import_pre.%s', $bank)); - if (!class_exists($class)) { - throw new FireflyException(sprintf('Cannot find class %s', $class)); - } - $importJob = $repository->create($bank); - $config = $importJob->configuration; - $config['has-config-file'] = false; - $config['auto-start'] = true; - $importJob->configuration = $config; - $importJob->save(); - - return redirect(route('import.file.configure', [$importJob->key])); - } - - -} diff --git a/app/Http/Controllers/Import/ConfigurationController.php b/app/Http/Controllers/Import/ConfigurationController.php index 67c05245f4..41d8cc5a69 100644 --- a/app/Http/Controllers/Import/ConfigurationController.php +++ b/app/Http/Controllers/Import/ConfigurationController.php @@ -87,6 +87,8 @@ class ConfigurationController extends Controller } /** + * Store the configuration. Returns to "configure" method until job is configured. + * * @param Request $request * @param ImportJob $job * diff --git a/app/Http/Controllers/Import/FileController.php b/app/Http/Controllers/Import/FileController.php deleted file mode 100644 index 92240afb6a..0000000000 --- a/app/Http/Controllers/Import/FileController.php +++ /dev/null @@ -1,251 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace FireflyIII\Http\Controllers\Import; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Requests\ImportUploadRequest; -use FireflyIII\Import\Configurator\ConfiguratorInterface; -use FireflyIII\Import\Routine\ImportRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use Illuminate\Http\Request; -use Illuminate\Http\Response as LaravelResponse; -use Log; -use Response; -use Session; -use View; - -/** - * Class FileController. - */ -class FileController extends Controller -{ - /** @var ImportJobRepositoryInterface */ - public $repository; - - /** - * - */ - public function __construct() - { - parent::__construct(); - - $this->middleware( - function ($request, $next) { - app('view')->share('mainTitleIcon', 'fa-archive'); - app('view')->share('title', trans('firefly.import_index_title')); - $this->repository = app(ImportJobRepositoryInterface::class); - - return $next($request); - } - ); - } - - /** - * This is step 3. This repeats until the job is configured. - * - * @param ImportJob $job - * - * @return View - * - * @throws FireflyException - */ - public function configure(ImportJob $job) - { - // create configuration class: - $configurator = $this->makeConfigurator($job); - - // is the job already configured? - if ($configurator->isJobConfigured()) { - $this->repository->updateStatus($job, 'configured'); - - return redirect(route('import.status', [$job->key])); - } - $view = $configurator->getNextView(); - $data = $configurator->getNextData(); - $subTitle = trans('firefly.import_config_bread_crumb'); - $subTitleIcon = 'fa-wrench'; - - return view($view, compact('data', 'job', 'subTitle', 'subTitleIcon')); - } - - /** - * Generate a JSON file of the job's configuration and send it to the user. - * - * @param ImportJob $job - * - * @return LaravelResponse - */ - public function download(ImportJob $job) - { - Log::debug('Now in download()', ['job' => $job->key]); - $config = $job->configuration; - - // This is CSV import specific: - $config['column-roles-complete'] = false; - $config['column-mapping-complete'] = false; - $config['initial-config-complete'] = false; - $config['has-file-upload'] = false; - $config['delimiter'] = "\t" === $config['delimiter'] ? 'tab' : $config['delimiter']; - - $result = json_encode($config, JSON_PRETTY_PRINT); - $name = sprintf('"%s"', addcslashes('import-configuration-' . date('Y-m-d') . '.json', '"\\')); - - /** @var LaravelResponse $response */ - $response = response($result, 200); - $response->header('Content-disposition', 'attachment; filename=' . $name) - ->header('Content-Type', 'application/json') - ->header('Content-Description', 'File Transfer') - ->header('Connection', 'Keep-Alive') - ->header('Expires', '0') - ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') - ->header('Pragma', 'public') - ->header('Content-Length', strlen($result)); - - return $response; - } - - /** - * This is step 1. Upload a file. - * - * @return View - */ - public function index() - { - $subTitle = trans('firefly.import_index_sub_title'); - $subTitleIcon = 'fa-home'; - $importFileTypes = []; - $defaultImportType = config('firefly.default_import_format'); - - foreach (array_keys(config('firefly.import_formats')) as $type) { - $importFileTypes[$type] = trans('firefly.import_file_type_' . $type); - } - - return view('import.file.index', compact('subTitle', 'subTitleIcon', 'importFileTypes', 'defaultImportType')); - } - - /** - * This is step 2. It creates an Import Job. Stores the import. - * - * @param ImportUploadRequest $request - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function initialize(ImportUploadRequest $request) - { - Log::debug('Now in initialize()'); - - // create import job: - $type = $request->get('import_file_type'); - $job = $this->repository->create($type); - Log::debug('Created new job', ['key' => $job->key, 'id' => $job->id]); - - // process file: - $this->repository->processFile($job, $request->files->get('import_file')); - - // process config, if present: - if ($request->files->has('configuration_file')) { - $this->repository->processConfiguration($job, $request->files->get('configuration_file')); - } - - $this->repository->updateStatus($job, 'initialized'); - - return redirect(route('import.file.configure', [$job->key])); - } - - - /** - * Step 4. Save the configuration. - * - * @param Request $request - * @param ImportJob $job - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - * @throws FireflyException - */ - public function postConfigure(Request $request, ImportJob $job) - { - Log::debug('Now in postConfigure()', ['job' => $job->key]); - $configurator = $this->makeConfigurator($job); - - // is the job already configured? - if ($configurator->isJobConfigured()) { - return redirect(route('import.status', [$job->key])); - } - $data = $request->all(); - $configurator->configureJob($data); - - // get possible warning from configurator: - $warning = $configurator->getWarningMessage(); - - if (strlen($warning) > 0) { - Session::flash('warning', $warning); - } - - // return to configure - return redirect(route('import.configure', [$job->key])); - } - - /** - * @param ImportJob $job - * - * @return \Illuminate\Http\JsonResponse - * - * @throws FireflyException - */ - public function start(ImportJob $job) - { - /** @var ImportRoutine $routine */ - $routine = app(ImportRoutine::class); - $routine->setJob($job); - $result = $routine->run(); - if ($result) { - return Response::json(['run' => 'ok']); - } - - throw new FireflyException('Job did not complete successfully.'); - } - - /** - * @param ImportJob $job - * - * @return ConfiguratorInterface - * - * @throws FireflyException - */ - private function makeConfigurator(ImportJob $job): ConfiguratorInterface - { - $type = $job->file_type; - $key = sprintf('firefly.import_configurators.%s', $type); - $className = config($key); - if (null === $className) { - throw new FireflyException('Cannot find configurator class for this job.'); // @codeCoverageIgnore - } - /** @var ConfiguratorInterface $configurator */ - $configurator = app($className); - $configurator->setJob($job); - - return $configurator; - } -} diff --git a/routes/web.php b/routes/web.php index 598e9dbd09..1e294fdd3c 100755 --- a/routes/web.php +++ b/routes/web.php @@ -449,18 +449,6 @@ Route::group( // download config Route::get('download/{importJob}', ['uses' => 'Import\IndexController@download', 'as' => 'download']); - - - // file import - // Route::get('file', ['uses' => 'Import\FileController@index', 'as' => 'file.index']); - // Route::post('file/initialize', ['uses' => 'Import\FileController@initialize', 'as' => 'file.initialize']); - - // Route::get('file/download/{importJob}', ['uses' => 'Import\FileController@download', 'as' => 'file.download']); - // Route::get('file/status/{importJob}', ['uses' => 'Import\FileController@status', 'as' => 'file.status']); - // - // Route::any('file/start/{importJob}', ['uses' => 'Import\FileController@start', 'as' => 'file.start']); - // Route:: get('bank/{bank}/configure/{importJob}', ['uses' => 'Import\BankController@configure', 'as' => 'bank.configure']); - // Route::post('bank/{bank}/configure/{importJob}', ['uses' => 'Import\BankController@postConfigure', 'as' => 'bank.configure.post']); } );