sparkapi / feed-faker
A fake datasource using RESO standard fields
Installs: 2 258
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 11
Forks: 4
Open Issues: 0
Requires
- php: ^5.6 || ^7.0
- crewlabs/unsplash: ^2.3
- fzaninotto/faker: ^1.6
- monolog/monolog: ^1.22
- php-di/php-di: ^5.4
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: 5.5.*
- satooshi/php-coveralls: 1.*
This package is not auto-updated.
Last update: 2024-12-22 03:00:40 UTC
README
FeedFaker allows you to generate a ton of fake RESO-compliant feed data objects quickly and easily, in a way that will keep the IDs at least semi-referentially linked for imports into databases.
Docker Quick Start
$ docker run -d -p 8080:80 sparkapi/faker-wrapper
$ curl http://localhost:8080/property
[{"ListingKey":"20170428170051261516000000","ListingId":"201704281...
# Hooray!
List of Faker Endpoints in the Docker Image
- Properties: http://localhost:8080/property/{optional_count}
- Members: http://localhost:8080/member/{optional_count}
- Offices: http://localhost:8080/office/{optional_count}
- Open House: http://localhost:8080/openhouse/{optional_count}
- History: http://localhost:8080/history/{optional_count}
- Media: http://localhost:8080/media/jpeg/{optional_count}
Install via Composer
$ composer require sparkapi/feed-faker
(or)
{ "require": { "sparkapi/feed-faker": "^0.8" } }
Example Usage
First define your settings for keys and the number and type of objects to create.
If you are using the unsplash photo provider you will have to pass in a few additional settings. If you want to use a different image provider, pass in the class to that provider.
All other settings have defaults, so feel free to modify what you want and leave blank the rest.
$settings = [ // required for photo providers 'unsplash_app_id' => 'your_unsplash_app_id', // unsplash specific 'interior_collection' => collection_id, // unsplash collection or filesystem path if using local photo provider 'exterior_collection' => collection_id, // unsplash collection or filesystem path if using local photo provider 'portrait_collection' => collection_id, // unsplash collection or filesystem path if using local photo provider // Optional photo provider, if not using unsplash (you can ignore the above, too). 'photo_provider' => \FeedFaker\Helper\UnsplashPhotoProvider::class, // Basic settings, all with defaults. 'mls_id' => 'my-awesome-mls', // the number of objects you want to create for each resource type. 'office_count' => 50, 'member_count' => 150, 'property_count' => 500, 'openhouse_count' => 1000, 'history_count' => 1000, 'media_count' => 5000, ];
You may provide a valid full path to a php settings file that returns an array, if you prefer. An example is in settings.php.dist
.
Now that you're all setup, instantiate it and fire away:
$settings = [ 'unsplash_app_id' => 'my-app-id-from-unsplash' 'interior_collection' => 10 'exterior_collection' => 1010 'portrait_collection' => 101010 // optional 'mls_id' => 'best-mls-in-the-universe', 'history_count' => 500 ]; $feedfake = new FeedFaker\FakeFeed(); $data = $feedfake->go($settings); $properties = $data['property']; $offices = $data['office']; $members = $data['member']; $media = $data['media']; $history = $data['history']; $openhouses = $data['openhouse']; foreach ($properties as $property) { echo $property->getListingKey() . PHP_EOL; var_dump($property->toArray()); }
Yep, that's it. You're welcome.
Optional Logging
The Faker can also log information to any PSR-3 compatible logger. (Useful for Image provider errors, etc.)
You have two options to set one up: Give it your own logger, or provide a setup callable for MonoLog.
Setup Callable for Monolog
By default, Faker uses Monolog to handle any logging, which uses handlers to know where and what details to log.
If you provide no setup or logger, Faker will default to a NullHandler
and save no log information.
You may provide any callable as the second parameter for FakeFeed
. This callable accepts a monolog Logger
instance and doesn't need to return anything.
$logger_setup = function($monolog) { // Save all debug and above messages to a file $monolog->pushHandler(new StreamHandler('/path/to/logs.log', \Monolog\Logger::DEBUG)); // Save more important messages to some other place $monolog->pushHandler(new SomeOtherHandler(\Monolog\Logger::WARNING)); }; $feedfake = new FeedFaker\FakeFeed([], $logger_setup); $data = $feedfake->go()
Your own logger
You may also skip monolog altogether and provide any instance of a PSR-3 compatible logger as the second argument.
$feedfake = new FeedFaker\FakeFeed([], $my_psr_3_logger); $data = $feedfake->go()
Interoperability
Feed Faker is PSR compliant and Container Interoperability compliant. Any oversights, please let us know.
Testing
We try for at least 80% test coverage.
$ phpunit
Note tht the UnsplashPhotoProviderTest
s are skipped. These require a valid credential. You may extend and run these tests with your own credentials. A better (environment-based) system is on the way.
Contributing
Contributions are welcome and will be fully credited. Please see CONTRIBUTING for details.
Open an issue to join in!
License
The MIT License (MIT). Please see License File for more information.