| @ -0,0 +1,15 @@ | |||
| root = true | |||
| [*] | |||
| charset = utf-8 | |||
| end_of_line = lf | |||
| insert_final_newline = true | |||
| indent_style = space | |||
| indent_size = 4 | |||
| trim_trailing_whitespace = true | |||
| [*.md] | |||
| trim_trailing_whitespace = false | |||
| [*.yml] | |||
| indent_size = 2 | |||
| @ -0,0 +1,39 @@ | |||
| APP_NAME=Laravel | |||
| APP_ENV=local | |||
| APP_KEY= | |||
| APP_DEBUG=true | |||
| APP_URL=http://localhost | |||
| LOG_CHANNEL=stack | |||
| DB_CONNECTION=mysql | |||
| DB_HOST=127.0.0.1 | |||
| DB_PORT=3306 | |||
| DB_DATABASE=homestead | |||
| DB_USERNAME=homestead | |||
| DB_PASSWORD=secret | |||
| BROADCAST_DRIVER=log | |||
| CACHE_DRIVER=file | |||
| QUEUE_CONNECTION=sync | |||
| SESSION_DRIVER=file | |||
| SESSION_LIFETIME=120 | |||
| REDIS_HOST=127.0.0.1 | |||
| REDIS_PASSWORD=null | |||
| REDIS_PORT=6379 | |||
| MAIL_DRIVER=smtp | |||
| MAIL_HOST=smtp.mailtrap.io | |||
| MAIL_PORT=2525 | |||
| MAIL_USERNAME=null | |||
| MAIL_PASSWORD=null | |||
| MAIL_ENCRYPTION=null | |||
| PUSHER_APP_ID= | |||
| PUSHER_APP_KEY= | |||
| PUSHER_APP_SECRET= | |||
| PUSHER_APP_CLUSTER=mt1 | |||
| MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" | |||
| MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" | |||
| @ -0,0 +1,5 @@ | |||
| * text=auto | |||
| *.css linguist-vendored | |||
| *.scss linguist-vendored | |||
| *.js linguist-vendored | |||
| CHANGELOG.md export-ignore | |||
| @ -0,0 +1,11 @@ | |||
| /node_modules | |||
| /public/hot | |||
| /public/storage | |||
| /storage/*.key | |||
| /vendor | |||
| .env | |||
| .phpunit.result.cache | |||
| Homestead.json | |||
| Homestead.yaml | |||
| npm-debug.log | |||
| yarn-error.log | |||
| @ -0,0 +1,7 @@ | |||
| <component name="ProjectDictionaryState"> | |||
| <dictionary name="shixuesen"> | |||
| <words> | |||
| <w>instagram</w> | |||
| </words> | |||
| </dictionary> | |||
| </component> | |||
| @ -0,0 +1,4 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="Encoding" addBOMForNewFiles="with NO BOM" /> | |||
| </project> | |||
| @ -0,0 +1,127 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <module type="WEB_MODULE" version="4"> | |||
| <component name="NewModuleRootManager"> | |||
| <content url="file://$MODULE_DIR$"> | |||
| <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" /> | |||
| <sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="App\" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/laravel-ide-helper" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/reflection-docblock" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/beyondcode/laravel-dump-server" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/binsoul/net-mqtt" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/binsoul/net-mqtt-client-react" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/clue/http-proxy-react" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/clue/socks-react" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/corneltek/getoptionkit" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/dnoegel/php-xdg-base-dir" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/cache" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/dbal" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/dragonmantank/cron-expression" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/egulias/email-validator" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/erusev/parsedown" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/evenement/evenement" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/fideloper/proxy" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/filp/whoops" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/fzaninotto/faker" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/hamcrest/hamcrest-php" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/jakub-onderka/php-console-color" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/jakub-onderka/php-console-highlighter" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/justinrainbow/json-schema" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/laravel/framework" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/laravel/nexmo-notification-channel" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/laravel/slack-notification-channel" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/laravel/tinker" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/lazyjsonmapper/lazyjsonmapper" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/jwt" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/league/oauth2-client" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/mgp25/instagram-php" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/microsoft/microsoft-graph" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/mockery/mockery" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/nesbot/carbon" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/nexmo/client" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/nunomaduro/collision" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/opis/closure" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/random_compat" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/php-http/guzzle6-adapter" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/php-http/httplug" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/php-http/promise" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-token-stream" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/psr/simple-cache" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/psy/psysh" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/ramsey/uuid" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/cache" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/dns" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/event-loop" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/promise" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/promise-timer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/socket" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/react/stream" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/ringcentral/psr7" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/seld/jsonlint" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/seld/phar-utils" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/contracts" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/debug" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/filesystem" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/finder" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-kernel" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php72" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/routing" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-dumper" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/tijsverkoyen/css-to-inline-styles" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/valga/fbns-react" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/vlucas/phpdotenv" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/winbox/args" /> | |||
| <excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-diactoros" /> | |||
| </content> | |||
| <orderEntry type="inheritedJdk" /> | |||
| <orderEntry type="sourceFolder" forTests="false" /> | |||
| </component> | |||
| </module> | |||
| @ -0,0 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="LaravelPluginSettings"> | |||
| <option name="pluginEnabled" value="true" /> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,25 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="JavaScriptSettings"> | |||
| <option name="languageLevel" value="ES6" /> | |||
| </component> | |||
| <component name="NodePackageJsonFileManager"> | |||
| <packageJsonPaths /> | |||
| </component> | |||
| <component name="ProjectInspectionProfilesVisibleTreeState"> | |||
| <entry key="Project Default"> | |||
| <profile-state> | |||
| <expanded-state> | |||
| <State> | |||
| <id /> | |||
| </State> | |||
| </expanded-state> | |||
| <selected-state> | |||
| <State> | |||
| <id>Blade files</id> | |||
| </State> | |||
| </selected-state> | |||
| </profile-state> | |||
| </entry> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,8 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ProjectModuleManager"> | |||
| <modules> | |||
| <module fileurl="file://$PROJECT_DIR$/.idea/graph-tutorial.iml" filepath="$PROJECT_DIR$/.idea/graph-tutorial.iml" /> | |||
| </modules> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,129 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="PhpIncludePathManager"> | |||
| <include_path> | |||
| <path value="$PROJECT_DIR$/vendor/erusev/parsedown" /> | |||
| <path value="$PROJECT_DIR$/vendor/league/oauth2-client" /> | |||
| <path value="$PROJECT_DIR$/vendor/league/flysystem" /> | |||
| <path value="$PROJECT_DIR$/vendor/jakub-onderka/php-console-highlighter" /> | |||
| <path value="$PROJECT_DIR$/vendor/jakub-onderka/php-console-color" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpspec/prophecy" /> | |||
| <path value="$PROJECT_DIR$/vendor/corneltek/getoptionkit" /> | |||
| <path value="$PROJECT_DIR$/vendor/ringcentral/psr7" /> | |||
| <path value="$PROJECT_DIR$/vendor/filp/whoops" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" /> | |||
| <path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" /> | |||
| <path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" /> | |||
| <path value="$PROJECT_DIR$/vendor/winbox/args" /> | |||
| <path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" /> | |||
| <path value="$PROJECT_DIR$/vendor/binsoul/net-mqtt-client-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/evenement/evenement" /> | |||
| <path value="$PROJECT_DIR$/vendor/binsoul/net-mqtt" /> | |||
| <path value="$PROJECT_DIR$/vendor/opis/closure" /> | |||
| <path value="$PROJECT_DIR$/vendor/monolog/monolog" /> | |||
| <path value="$PROJECT_DIR$/vendor/mgp25/instagram-php" /> | |||
| <path value="$PROJECT_DIR$/vendor/mockery/mockery" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/console" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/process" /> | |||
| <path value="$PROJECT_DIR$/vendor/fideloper/proxy" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/debug" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/http-kernel" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/contracts" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/finder" /> | |||
| <path value="$PROJECT_DIR$/vendor/phar-io/manifest" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/routing" /> | |||
| <path value="$PROJECT_DIR$/vendor/phar-io/version" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/css-selector" /> | |||
| <path value="$PROJECT_DIR$/vendor/microsoft/microsoft-graph" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/translation" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/http-foundation" /> | |||
| <path value="$PROJECT_DIR$/vendor/composer" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-timer" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" /> | |||
| <path value="$PROJECT_DIR$/vendor/paragonie/random_compat" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" /> | |||
| <path value="$PROJECT_DIR$/vendor/zendframework/zend-diactoros" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" /> | |||
| <path value="$PROJECT_DIR$/vendor/dnoegel/php-xdg-base-dir" /> | |||
| <path value="$PROJECT_DIR$/vendor/lcobucci/jwt" /> | |||
| <path value="$PROJECT_DIR$/vendor/psy/psysh" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/phpunit" /> | |||
| <path value="$PROJECT_DIR$/vendor/nikic/php-parser" /> | |||
| <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" /> | |||
| <path value="$PROJECT_DIR$/vendor/egulias/email-validator" /> | |||
| <path value="$PROJECT_DIR$/vendor/theseer/tokenizer" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" /> | |||
| <path value="$PROJECT_DIR$/vendor/lazyjsonmapper/lazyjsonmapper" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/var-dumper" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/container" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/http-message" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/global-state" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/log" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/comparator" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/simple-cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/environment" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/exporter" /> | |||
| <path value="$PROJECT_DIR$/vendor/nesbot/carbon" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/diff" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/version" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/stream" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/dns" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/promise-timer" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/promise" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/socket" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/event-loop" /> | |||
| <path value="$PROJECT_DIR$/vendor/webmozart/assert" /> | |||
| <path value="$PROJECT_DIR$/vendor/beyondcode/laravel-dump-server" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/instantiator" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/inflector" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/lexer" /> | |||
| <path value="$PROJECT_DIR$/vendor/fzaninotto/faker" /> | |||
| <path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/tinker" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/framework" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/nexmo-notification-channel" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/slack-notification-channel" /> | |||
| <path value="$PROJECT_DIR$/vendor/valga/fbns-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/guzzle6-adapter" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/httplug" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/promise" /> | |||
| <path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" /> | |||
| <path value="$PROJECT_DIR$/vendor/clue/http-proxy-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/clue/socks-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/nunomaduro/collision" /> | |||
| <path value="$PROJECT_DIR$/vendor/nexmo/client" /> | |||
| <path value="$PROJECT_DIR$/vendor/ramsey/uuid" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/filesystem" /> | |||
| <path value="$PROJECT_DIR$/vendor/seld/phar-utils" /> | |||
| <path value="$PROJECT_DIR$/vendor/seld/jsonlint" /> | |||
| <path value="$PROJECT_DIR$/vendor/barryvdh/reflection-docblock" /> | |||
| <path value="$PROJECT_DIR$/vendor/barryvdh/laravel-ide-helper" /> | |||
| <path value="$PROJECT_DIR$/vendor/justinrainbow/json-schema" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/event-manager" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/dbal" /> | |||
| </include_path> | |||
| </component> | |||
| <component name="PhpProjectSharedConfiguration" php_language_level="7.1" /> | |||
| <component name="PhpUnit"> | |||
| <phpunit_settings> | |||
| <PhpUnitSettings load_method="CUSTOM_LOADER" configuration_file_path="$PROJECT_DIR$/phpunit.xml" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" /> | |||
| </phpunit_settings> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ThriftCompiler"> | |||
| <compilers /> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,662 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project version="4"> | |||
| <component name="ChangeListManager"> | |||
| <list default="true" id="f8883b6d-148e-4c06-b69b-206e09fe5251" name="Default Changelist" comment="" /> | |||
| <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> | |||
| <option name="SHOW_DIALOG" value="false" /> | |||
| <option name="HIGHLIGHT_CONFLICTS" value="true" /> | |||
| <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | |||
| <option name="LAST_RESOLUTION" value="IGNORE" /> | |||
| </component> | |||
| <component name="ComposerSettings" doNotAsk="true" synchronizationState="SYNCHRONIZE"> | |||
| <pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath> | |||
| </component> | |||
| <component name="FileEditorManager"> | |||
| <leaf> | |||
| <file pinned="false" current-in-tab="true"> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/InstagramController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="1081"> | |||
| <caret line="47" column="27" lean-forward="true" selection-start-line="47" selection-start-column="27" selection-end-line="47" selection-end-column="27" /> | |||
| <folding> | |||
| <element signature="e#40#58#0#PHP" expanded="true" /> | |||
| </folding> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| </file> | |||
| </leaf> | |||
| </component> | |||
| <component name="IdeDocumentHistory"> | |||
| <option name="CHANGED_PATHS"> | |||
| <list> | |||
| <option value="$PROJECT_DIR$/database/migrations/2019_01_31_022647_create_instagrams_table.php" /> | |||
| <option value="$PROJECT_DIR$/resources/views/layout.blade.php" /> | |||
| <option value="$PROJECT_DIR$/routes/web.php" /> | |||
| <option value="$PROJECT_DIR$/database/migrations/2019_01_31_022647_create_instagram_table.php" /> | |||
| <option value="$PROJECT_DIR$/database/migrations/2019_02_06_232019_add_index_to_instagram.php" /> | |||
| <option value="$PROJECT_DIR$/app/Console/Kernel.php" /> | |||
| <option value="$PROJECT_DIR$/app/Instagram.php" /> | |||
| <option value="$PROJECT_DIR$/app/Services/InstagramService.php" /> | |||
| <option value="$PROJECT_DIR$/.env" /> | |||
| <option value="$PROJECT_DIR$/app/Http/Controllers/InstagramController.php" /> | |||
| </list> | |||
| </option> | |||
| </component> | |||
| <component name="PackageJsonUpdateNotifier"> | |||
| <dismissed value="$PROJECT_DIR$/package.json" /> | |||
| </component> | |||
| <component name="PhpServers"> | |||
| <servers /> | |||
| </component> | |||
| <component name="PhpWorkspaceProjectConfiguration"> | |||
| <include_path> | |||
| <path value="$PROJECT_DIR$/vendor/erusev/parsedown" /> | |||
| <path value="$PROJECT_DIR$/vendor/league/oauth2-client" /> | |||
| <path value="$PROJECT_DIR$/vendor/league/flysystem" /> | |||
| <path value="$PROJECT_DIR$/vendor/jakub-onderka/php-console-highlighter" /> | |||
| <path value="$PROJECT_DIR$/vendor/jakub-onderka/php-console-color" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpspec/prophecy" /> | |||
| <path value="$PROJECT_DIR$/vendor/corneltek/getoptionkit" /> | |||
| <path value="$PROJECT_DIR$/vendor/ringcentral/psr7" /> | |||
| <path value="$PROJECT_DIR$/vendor/filp/whoops" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" /> | |||
| <path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" /> | |||
| <path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" /> | |||
| <path value="$PROJECT_DIR$/vendor/winbox/args" /> | |||
| <path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" /> | |||
| <path value="$PROJECT_DIR$/vendor/binsoul/net-mqtt-client-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/evenement/evenement" /> | |||
| <path value="$PROJECT_DIR$/vendor/binsoul/net-mqtt" /> | |||
| <path value="$PROJECT_DIR$/vendor/opis/closure" /> | |||
| <path value="$PROJECT_DIR$/vendor/monolog/monolog" /> | |||
| <path value="$PROJECT_DIR$/vendor/mgp25/instagram-php" /> | |||
| <path value="$PROJECT_DIR$/vendor/mockery/mockery" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/console" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/process" /> | |||
| <path value="$PROJECT_DIR$/vendor/fideloper/proxy" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/debug" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/http-kernel" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/contracts" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/finder" /> | |||
| <path value="$PROJECT_DIR$/vendor/phar-io/manifest" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/routing" /> | |||
| <path value="$PROJECT_DIR$/vendor/phar-io/version" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/css-selector" /> | |||
| <path value="$PROJECT_DIR$/vendor/microsoft/microsoft-graph" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/translation" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/http-foundation" /> | |||
| <path value="$PROJECT_DIR$/vendor/composer" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-timer" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" /> | |||
| <path value="$PROJECT_DIR$/vendor/paragonie/random_compat" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" /> | |||
| <path value="$PROJECT_DIR$/vendor/zendframework/zend-diactoros" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" /> | |||
| <path value="$PROJECT_DIR$/vendor/dnoegel/php-xdg-base-dir" /> | |||
| <path value="$PROJECT_DIR$/vendor/lcobucci/jwt" /> | |||
| <path value="$PROJECT_DIR$/vendor/psy/psysh" /> | |||
| <path value="$PROJECT_DIR$/vendor/phpunit/phpunit" /> | |||
| <path value="$PROJECT_DIR$/vendor/nikic/php-parser" /> | |||
| <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" /> | |||
| <path value="$PROJECT_DIR$/vendor/egulias/email-validator" /> | |||
| <path value="$PROJECT_DIR$/vendor/theseer/tokenizer" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" /> | |||
| <path value="$PROJECT_DIR$/vendor/lazyjsonmapper/lazyjsonmapper" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" /> | |||
| <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/var-dumper" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/container" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/http-message" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/global-state" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/log" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/comparator" /> | |||
| <path value="$PROJECT_DIR$/vendor/psr/simple-cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/environment" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/exporter" /> | |||
| <path value="$PROJECT_DIR$/vendor/nesbot/carbon" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/diff" /> | |||
| <path value="$PROJECT_DIR$/vendor/sebastian/version" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/stream" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/dns" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/promise-timer" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/promise" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/socket" /> | |||
| <path value="$PROJECT_DIR$/vendor/react/event-loop" /> | |||
| <path value="$PROJECT_DIR$/vendor/webmozart/assert" /> | |||
| <path value="$PROJECT_DIR$/vendor/beyondcode/laravel-dump-server" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/instantiator" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/inflector" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/lexer" /> | |||
| <path value="$PROJECT_DIR$/vendor/fzaninotto/faker" /> | |||
| <path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/tinker" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/framework" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/nexmo-notification-channel" /> | |||
| <path value="$PROJECT_DIR$/vendor/laravel/slack-notification-channel" /> | |||
| <path value="$PROJECT_DIR$/vendor/valga/fbns-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/guzzle6-adapter" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/httplug" /> | |||
| <path value="$PROJECT_DIR$/vendor/php-http/promise" /> | |||
| <path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" /> | |||
| <path value="$PROJECT_DIR$/vendor/clue/http-proxy-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/clue/socks-react" /> | |||
| <path value="$PROJECT_DIR$/vendor/nunomaduro/collision" /> | |||
| <path value="$PROJECT_DIR$/vendor/nexmo/client" /> | |||
| <path value="$PROJECT_DIR$/vendor/ramsey/uuid" /> | |||
| <path value="$PROJECT_DIR$/vendor/symfony/filesystem" /> | |||
| <path value="$PROJECT_DIR$/vendor/seld/phar-utils" /> | |||
| <path value="$PROJECT_DIR$/vendor/seld/jsonlint" /> | |||
| <path value="$PROJECT_DIR$/vendor/barryvdh/reflection-docblock" /> | |||
| <path value="$PROJECT_DIR$/vendor/barryvdh/laravel-ide-helper" /> | |||
| <path value="$PROJECT_DIR$/vendor/justinrainbow/json-schema" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/cache" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/event-manager" /> | |||
| <path value="$PROJECT_DIR$/vendor/doctrine/dbal" /> | |||
| </include_path> | |||
| </component> | |||
| <component name="ProjectFrameBounds" extendedState="6"> | |||
| <option name="x" value="-6" /> | |||
| <option name="y" value="23" /> | |||
| <option name="width" value="1286" /> | |||
| <option name="height" value="772" /> | |||
| </component> | |||
| <component name="ProjectView"> | |||
| <navigator proportions="" version="1"> | |||
| <foldersAlwaysOnTop value="true" /> | |||
| </navigator> | |||
| <panes> | |||
| <pane id="Scope" /> | |||
| <pane id="ProjectPane"> | |||
| <subPane> | |||
| <expand> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Console" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Http" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Http" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Controllers" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Providers" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Services" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="app" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="TokenStore" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="database" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="database" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="migrations" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="vendor" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="vendor" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="vendor" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft-graph" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="vendor" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft-graph" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="src" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| <path> | |||
| <item name="graph-tutorial" type="b2602c69:ProjectViewProjectNode" /> | |||
| <item name="graph-tutorial" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="vendor" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="microsoft-graph" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="src" type="462c0819:PsiDirectoryNode" /> | |||
| <item name="Http" type="462c0819:PsiDirectoryNode" /> | |||
| </path> | |||
| </expand> | |||
| <select /> | |||
| </subPane> | |||
| </pane> | |||
| </panes> | |||
| </component> | |||
| <component name="PropertiesComponent"> | |||
| <property name="WebServerToolWindowFactoryState" value="false" /> | |||
| <property name="last_opened_file_path" value="$PROJECT_DIR$" /> | |||
| <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> | |||
| <property name="nodejs_npm_path_reset_for_default_project" value="true" /> | |||
| <property name="nodejs_package_manager_path" value="yarn" /> | |||
| <property name="settings.editor.selected.configurable" value="preferences.sourceCode.Other File Types" /> | |||
| <property name="settings.editor.splitter.proportion" value="0.2" /> | |||
| </component> | |||
| <component name="RunDashboard"> | |||
| <option name="ruleStates"> | |||
| <list> | |||
| <RuleState> | |||
| <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> | |||
| </RuleState> | |||
| <RuleState> | |||
| <option name="name" value="StatusDashboardGroupingRule" /> | |||
| </RuleState> | |||
| </list> | |||
| </option> | |||
| </component> | |||
| <component name="RunManager"> | |||
| <configuration name="phpunit.xml" type="PHPUnitRunConfigurationType" factoryName="PHPUnit"> | |||
| <TestRunner scope="XML" /> | |||
| <method v="2" /> | |||
| </configuration> | |||
| </component> | |||
| <component name="SvnConfiguration"> | |||
| <configuration /> | |||
| </component> | |||
| <component name="TaskManager"> | |||
| <task active="true" id="Default" summary="Default task"> | |||
| <changelist id="f8883b6d-148e-4c06-b69b-206e09fe5251" name="Default Changelist" comment="" /> | |||
| <created>1547951556931</created> | |||
| <option name="number" value="Default" /> | |||
| <option name="presentableId" value="Default" /> | |||
| <updated>1547951556931</updated> | |||
| <workItem from="1547951560469" duration="1616000" /> | |||
| <workItem from="1548863591622" duration="700000" /> | |||
| <workItem from="1548900350914" duration="3669000" /> | |||
| <workItem from="1548916931914" duration="1836000" /> | |||
| <workItem from="1548926324347" duration="4453000" /> | |||
| <workItem from="1548947422088" duration="2917000" /> | |||
| <workItem from="1549036581486" duration="291000" /> | |||
| <workItem from="1549157679604" duration="6501000" /> | |||
| <workItem from="1549520613895" duration="12874000" /> | |||
| </task> | |||
| <servers /> | |||
| </component> | |||
| <component name="TimeTrackingManager"> | |||
| <option name="totallyTimeSpent" value="34857000" /> | |||
| </component> | |||
| <component name="ToolWindowManager"> | |||
| <frame x="0" y="23" width="1280" height="777" extended-state="6" /> | |||
| <layout> | |||
| <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.28109854" /> | |||
| <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> | |||
| <window_info id="npm" order="2" side_tool="true" /> | |||
| <window_info id="Favorites" order="3" side_tool="true" /> | |||
| <window_info anchor="bottom" id="Message" order="0" /> | |||
| <window_info anchor="bottom" id="Find" order="1" /> | |||
| <window_info anchor="bottom" id="Run" order="2" /> | |||
| <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> | |||
| <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> | |||
| <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> | |||
| <window_info anchor="bottom" id="TODO" order="6" /> | |||
| <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> | |||
| <window_info anchor="bottom" id="Version Control" order="8" /> | |||
| <window_info anchor="bottom" id="Database Changes" order="9" /> | |||
| <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" /> | |||
| <window_info active="true" anchor="bottom" id="Terminal" order="11" visible="true" weight="0.26158446" /> | |||
| <window_info anchor="right" id="Commander" order="0" weight="0.4" /> | |||
| <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> | |||
| <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> | |||
| <window_info anchor="right" id="Database" order="3" /> | |||
| </layout> | |||
| </component> | |||
| <component name="TypeScriptGeneratedFilesManager"> | |||
| <option name="version" value="1" /> | |||
| </component> | |||
| <component name="editorHistoryManager"> | |||
| <entry file="file://$PROJECT_DIR$/vendor/nikic/php-parser/README.md"> | |||
| <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> | |||
| <state split_layout="SPLIT"> | |||
| <first_editor /> | |||
| <second_editor /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="jar://$APPLICATION_HOME_DIR$/plugins/php/lib/php.jar!/stubs/standard/basic.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="286"> | |||
| <caret line="144" column="9" selection-start-line="144" selection-start-column="9" selection-end-line="144" selection-end-column="9" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/routes/console.php"> | |||
| <provider selected="true" editor-type-id="text-editor" /> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/AuthController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="-1631" /> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/ForgotPasswordController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="471"> | |||
| <caret line="29" column="21" lean-forward="true" selection-start-line="29" selection-start-column="21" selection-end-line="29" selection-end-column="21" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Routing/Controller.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="222"> | |||
| <caret line="22" column="20" selection-start-line="22" selection-start-column="20" selection-end-line="22" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/tests/CreatesApplication.php"> | |||
| <provider selected="true" editor-type-id="text-editor" /> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Controller.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="230"> | |||
| <caret line="13" column="34" lean-forward="true" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/composer.json"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="259"> | |||
| <caret line="22" column="34" lean-forward="true" selection-start-line="22" selection-start-column="34" selection-end-line="22" selection-end-column="34" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/config/queue.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="415"> | |||
| <caret line="81" column="26" lean-forward="true" selection-start-line="81" selection-start-column="26" selection-end-line="81" selection-end-column="26" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/config/database.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="1702"> | |||
| <caret line="74" column="26" lean-forward="true" selection-start-line="74" selection-start-column="26" selection-end-line="74" selection-end-column="26" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/resources/views/layout.blade.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="326"> | |||
| <caret line="35" column="115" selection-start-line="35" selection-start-column="115" selection-end-line="35" selection-end-column="115" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/routes/web.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="161"> | |||
| <caret line="7" column="54" selection-start-line="7" selection-start-column="54" selection-end-line="7" selection-end-column="54" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/TokenStore/TokenCache.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="23"> | |||
| <caret line="40" column="39" lean-forward="true" selection-start-line="40" selection-start-column="39" selection-end-line="40" selection-end-column="39" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Http/GraphResponse.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="175"> | |||
| <caret line="136" column="20" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Model/Event.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="163"> | |||
| <caret line="26" column="6" selection-start-line="26" selection-start-column="6" selection-end-line="26" selection-end-column="6" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/CalendarController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="161"> | |||
| <caret line="7" column="18" lean-forward="true" selection-start-line="7" selection-end-line="8" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/resources/views/calendar.blade.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="391"> | |||
| <caret line="17" column="29" selection-start-line="17" selection-start-column="29" selection-end-line="17" selection-end-column="29" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/resources/views/welcome.blade.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="207"> | |||
| <caret line="9" column="7" lean-forward="true" selection-start-line="9" selection-start-column="7" selection-end-line="9" selection-end-column="7" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/artisan"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="289"> | |||
| <caret line="35" column="53" selection-start-line="35" selection-start-column="53" selection-end-line="35" selection-end-column="53" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/symfony/console/Input/ArgvInput.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="-6337"> | |||
| <caret line="49" column="20" selection-start-line="49" selection-start-column="20" selection-end-line="49" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/database/migrations/2019_01_31_022647_create_instagram_table.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="284"> | |||
| <caret line="23" column="32" lean-forward="true" selection-start-line="23" selection-end-line="24" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="170"> | |||
| <caret line="500" column="20" selection-start-line="500" selection-start-column="20" selection-end-line="500" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/database/migrations/2019_02_06_232019_add_index_to_instagram.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="307"> | |||
| <caret line="22" column="7" lean-forward="true" selection-start-line="22" selection-start-column="7" selection-end-line="22" selection-end-column="7" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/HomeController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="345"> | |||
| <caret line="15" lean-forward="true" selection-start-line="15" selection-end-line="15" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/_ide_helper.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="218"> | |||
| <caret line="13654" column="60" selection-start-line="13654" selection-start-column="49" selection-end-line="13654" selection-end-column="60" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Console/Kernel.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="219"> | |||
| <caret line="31" column="35" selection-start-line="31" selection-start-column="35" selection-end-line="31" selection-end-column="35" /> | |||
| <folding> | |||
| <element signature="e#31#74#0#PHP" expanded="true" /> | |||
| </folding> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Instagram.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="198"> | |||
| <caret line="21" lean-forward="true" selection-start-line="21" selection-end-line="21" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/mgp25/instagram-php/src/Request.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="200"> | |||
| <caret line="211" column="20" selection-start-line="211" selection-start-column="20" selection-end-line="211" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="jar://$APPLICATION_HOME_DIR$/plugins/php/lib/php.jar!/stubs/standard/standard_5.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="119"> | |||
| <caret line="1057" column="9" selection-start-line="1057" selection-start-column="9" selection-end-line="1057" selection-end-column="9" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/mgp25/instagram-php/src/Request/Timeline.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="-87"> | |||
| <caret line="316" column="20" selection-start-line="316" selection-start-column="20" selection-end-line="316" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Services/InstagramService.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="127"> | |||
| <caret line="220" column="33" lean-forward="true" selection-start-line="220" selection-start-column="33" selection-end-line="220" selection-end-column="33" /> | |||
| <folding> | |||
| <element signature="e#86#123#0#PHP" expanded="true" /> | |||
| </folding> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/.env"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="272"> | |||
| <caret line="44" column="69" selection-start-line="44" selection-start-column="69" selection-end-line="44" selection-end-column="69" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Model/Entity.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="23"> | |||
| <caret line="26" column="6" selection-start-line="26" selection-start-column="6" selection-end-line="26" selection-end-column="6" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Model/BaseItem.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="159"> | |||
| <caret line="26" column="26" selection-start-line="26" selection-start-column="26" selection-end-line="26" selection-end-column="26" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Model/DriveItem.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="159"> | |||
| <caret line="26" column="28" selection-start-line="26" selection-start-column="28" selection-end-line="26" selection-end-column="28" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/symfony/var-dumper/Resources/functions/dump.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="164"> | |||
| <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Http/GraphRequest.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="23"> | |||
| <caret line="112" column="20" selection-start-line="112" selection-start-column="20" selection-end-line="112" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/vendor/microsoft/microsoft-graph/src/Graph.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="96"> | |||
| <caret line="137" column="20" selection-start-line="137" selection-start-column="20" selection-end-line="137" selection-end-column="20" /> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| <entry file="file://$PROJECT_DIR$/app/Http/Controllers/InstagramController.php"> | |||
| <provider selected="true" editor-type-id="text-editor"> | |||
| <state relative-caret-position="1081"> | |||
| <caret line="47" column="27" lean-forward="true" selection-start-line="47" selection-start-column="27" selection-end-line="47" selection-end-column="27" /> | |||
| <folding> | |||
| <element signature="e#40#58#0#PHP" expanded="true" /> | |||
| </folding> | |||
| </state> | |||
| </provider> | |||
| </entry> | |||
| </component> | |||
| <component name="masterDetails"> | |||
| <states> | |||
| <state key="ScopeChooserConfigurable.UI"> | |||
| <settings> | |||
| <splitter-proportions> | |||
| <option name="proportions"> | |||
| <list> | |||
| <option value="0.2" /> | |||
| </list> | |||
| </option> | |||
| </splitter-proportions> | |||
| </settings> | |||
| </state> | |||
| </states> | |||
| </component> | |||
| </project> | |||
| @ -0,0 +1,49 @@ | |||
| <?php | |||
| namespace App\Console; | |||
| use Illuminate\Console\Scheduling\Schedule; | |||
| use Illuminate\Foundation\Console\Kernel as ConsoleKernel; | |||
| use App\Services\InstagramService; | |||
| class Kernel extends ConsoleKernel | |||
| { | |||
| /** | |||
| * The Artisan commands provided by your application. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $commands = [ | |||
| // | |||
| ]; | |||
| /** | |||
| * Define the application's command schedule. | |||
| * | |||
| * @param \Illuminate\Console\Scheduling\Schedule $schedule | |||
| * @return void | |||
| */ | |||
| protected function schedule(Schedule $schedule) | |||
| { | |||
| // $schedule->command('inspire') | |||
| // ->hourly(); | |||
| $schedule->call(function () { | |||
| $service = new InstagramService(); | |||
| $service->scrapeLikedUsers(); | |||
| echo "111"; | |||
| })->everyMinute(); | |||
| } | |||
| /** | |||
| * Register the commands for the application. | |||
| * | |||
| * @return void | |||
| */ | |||
| protected function commands() | |||
| { | |||
| $this->load(__DIR__.'/Commands'); | |||
| require base_path('routes/console.php'); | |||
| } | |||
| } | |||
| @ -0,0 +1,51 @@ | |||
| <?php | |||
| namespace App\Exceptions; | |||
| use Exception; | |||
| use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; | |||
| class Handler extends ExceptionHandler | |||
| { | |||
| /** | |||
| * A list of the exception types that are not reported. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $dontReport = [ | |||
| // | |||
| ]; | |||
| /** | |||
| * A list of the inputs that are never flashed for validation exceptions. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $dontFlash = [ | |||
| 'password', | |||
| 'password_confirmation', | |||
| ]; | |||
| /** | |||
| * Report or log an exception. | |||
| * | |||
| * @param \Exception $exception | |||
| * @return void | |||
| */ | |||
| public function report(Exception $exception) | |||
| { | |||
| parent::report($exception); | |||
| } | |||
| /** | |||
| * Render an exception into an HTTP response. | |||
| * | |||
| * @param \Illuminate\Http\Request $request | |||
| * @param \Exception $exception | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function render($request, Exception $exception) | |||
| { | |||
| return parent::render($request, $exception); | |||
| } | |||
| } | |||
| @ -0,0 +1,32 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Auth; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Foundation\Auth\SendsPasswordResetEmails; | |||
| class ForgotPasswordController extends Controller | |||
| { | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Password Reset Controller | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This controller is responsible for handling password reset emails and | |||
| | includes a trait which assists in sending these notifications from | |||
| | your application to your users. Feel free to explore this trait. | |||
| | | |||
| */ | |||
| use SendsPasswordResetEmails; | |||
| /** | |||
| * Create a new controller instance. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function __construct() | |||
| { | |||
| $this->middleware('guest'); | |||
| } | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Auth; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Foundation\Auth\AuthenticatesUsers; | |||
| class LoginController extends Controller | |||
| { | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Login Controller | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This controller handles authenticating users for the application and | |||
| | redirecting them to your home screen. The controller uses a trait | |||
| | to conveniently provide its functionality to your applications. | |||
| | | |||
| */ | |||
| use AuthenticatesUsers; | |||
| /** | |||
| * Where to redirect users after login. | |||
| * | |||
| * @var string | |||
| */ | |||
| protected $redirectTo = '/home'; | |||
| /** | |||
| * Create a new controller instance. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function __construct() | |||
| { | |||
| $this->middleware('guest')->except('logout'); | |||
| } | |||
| } | |||
| @ -0,0 +1,72 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Auth; | |||
| use App\User; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Support\Facades\Hash; | |||
| use Illuminate\Support\Facades\Validator; | |||
| use Illuminate\Foundation\Auth\RegistersUsers; | |||
| class RegisterController extends Controller | |||
| { | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Register Controller | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This controller handles the registration of new users as well as their | |||
| | validation and creation. By default this controller uses a trait to | |||
| | provide this functionality without requiring any additional code. | |||
| | | |||
| */ | |||
| use RegistersUsers; | |||
| /** | |||
| * Where to redirect users after registration. | |||
| * | |||
| * @var string | |||
| */ | |||
| protected $redirectTo = '/home'; | |||
| /** | |||
| * Create a new controller instance. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function __construct() | |||
| { | |||
| $this->middleware('guest'); | |||
| } | |||
| /** | |||
| * Get a validator for an incoming registration request. | |||
| * | |||
| * @param array $data | |||
| * @return \Illuminate\Contracts\Validation\Validator | |||
| */ | |||
| protected function validator(array $data) | |||
| { | |||
| return Validator::make($data, [ | |||
| 'name' => ['required', 'string', 'max:255'], | |||
| 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], | |||
| 'password' => ['required', 'string', 'min:6', 'confirmed'], | |||
| ]); | |||
| } | |||
| /** | |||
| * Create a new user instance after a valid registration. | |||
| * | |||
| * @param array $data | |||
| * @return \App\User | |||
| */ | |||
| protected function create(array $data) | |||
| { | |||
| return User::create([ | |||
| 'name' => $data['name'], | |||
| 'email' => $data['email'], | |||
| 'password' => Hash::make($data['password']), | |||
| ]); | |||
| } | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Auth; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Foundation\Auth\ResetsPasswords; | |||
| class ResetPasswordController extends Controller | |||
| { | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Password Reset Controller | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This controller is responsible for handling password reset requests | |||
| | and uses a simple trait to include this behavior. You're free to | |||
| | explore this trait and override any methods you wish to tweak. | |||
| | | |||
| */ | |||
| use ResetsPasswords; | |||
| /** | |||
| * Where to redirect users after resetting their password. | |||
| * | |||
| * @var string | |||
| */ | |||
| protected $redirectTo = '/home'; | |||
| /** | |||
| * Create a new controller instance. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function __construct() | |||
| { | |||
| $this->middleware('guest'); | |||
| } | |||
| } | |||
| @ -0,0 +1,41 @@ | |||
| <?php | |||
| namespace App\Http\Controllers\Auth; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Foundation\Auth\VerifiesEmails; | |||
| class VerificationController extends Controller | |||
| { | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Email Verification Controller | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This controller is responsible for handling email verification for any | |||
| | user that recently registered with the application. Emails may also | |||
| | be re-sent if the user didn't receive the original email message. | |||
| | | |||
| */ | |||
| use VerifiesEmails; | |||
| /** | |||
| * Where to redirect users after verification. | |||
| * | |||
| * @var string | |||
| */ | |||
| protected $redirectTo = '/home'; | |||
| /** | |||
| * Create a new controller instance. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function __construct() | |||
| { | |||
| $this->middleware('auth'); | |||
| $this->middleware('signed')->only('verify'); | |||
| $this->middleware('throttle:6,1')->only('verify', 'resend'); | |||
| } | |||
| } | |||
| @ -0,0 +1,97 @@ | |||
| <?php | |||
| namespace App\Http\Controllers; | |||
| use App\Http\Controllers\Controller; | |||
| use App\TokenStore\TokenCache; | |||
| use Illuminate\Http\Request; | |||
| use Microsoft\Graph\Graph; | |||
| use Microsoft\Graph\Model; | |||
| class AuthController extends Controller | |||
| { | |||
| public function signin() | |||
| { | |||
| // Initialize the OAuth client | |||
| $oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([ | |||
| 'clientId' => env('OAUTH_APP_ID'), | |||
| 'clientSecret' => env('OAUTH_APP_PASSWORD'), | |||
| 'redirectUri' => env('OAUTH_REDIRECT_URI'), | |||
| 'urlAuthorize' => env('OAUTH_AUTHORITY') . env('OAUTH_AUTHORIZE_ENDPOINT'), | |||
| 'urlAccessToken' => env('OAUTH_AUTHORITY') . env('OAUTH_TOKEN_ENDPOINT'), | |||
| 'urlResourceOwnerDetails' => '', | |||
| 'scopes' => env('OAUTH_SCOPES'), | |||
| ]); | |||
| $authUrl = $oauthClient->getAuthorizationUrl(); | |||
| // Save client state so we can validate in callback | |||
| session(['oauthState' => $oauthClient->getState()]); | |||
| // Redirect to AAD signin page | |||
| return redirect()->away($authUrl); | |||
| } | |||
| public function callback(Request $request) | |||
| { | |||
| // Validate state | |||
| $expectedState = session('oauthState'); | |||
| $request->session()->forget('oauthState'); | |||
| $providedState = $request->query('state'); | |||
| if (!isset($expectedState) || !isset($providedState) || $expectedState != $providedState) { | |||
| return redirect('/') | |||
| ->with('error', 'Invalid auth state') | |||
| ->with('errorDetail', 'The provided auth state did not match the expected value'); | |||
| } | |||
| // Authorization code should be in the "code" query param | |||
| $authCode = $request->query('code'); | |||
| if (isset($authCode)) { | |||
| // Initialize the OAuth client | |||
| $oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([ | |||
| 'clientId' => env('OAUTH_APP_ID'), | |||
| 'clientSecret' => env('OAUTH_APP_PASSWORD'), | |||
| 'redirectUri' => env('OAUTH_REDIRECT_URI'), | |||
| 'urlAuthorize' => env('OAUTH_AUTHORITY') . env('OAUTH_AUTHORIZE_ENDPOINT'), | |||
| 'urlAccessToken' => env('OAUTH_AUTHORITY') . env('OAUTH_TOKEN_ENDPOINT'), | |||
| 'urlResourceOwnerDetails' => '', | |||
| 'scopes' => env('OAUTH_SCOPES'), | |||
| ]); | |||
| try { | |||
| // Make the token request | |||
| $accessToken = $oauthClient->getAccessToken('authorization_code', [ | |||
| 'code' => $authCode, | |||
| ]); | |||
| $graph = new Graph(); | |||
| $graph->setAccessToken($accessToken->getToken()); | |||
| $user = $graph->createRequest('GET', '/me') | |||
| ->setReturnType(Model\User::class) | |||
| ->execute(); | |||
| $tokenCache = new TokenCache(); | |||
| $tokenCache->storeTokens($accessToken, $user); | |||
| return redirect('/'); | |||
| } catch (League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) { | |||
| return redirect('/') | |||
| ->with('error', 'Error requesting access token') | |||
| ->with('errorDetail', $e->getMessage()); | |||
| } | |||
| } | |||
| return redirect('/') | |||
| ->with('error', $request->query('error')) | |||
| ->with('errorDetail', $request->query('error_description')); | |||
| } | |||
| public function signout() | |||
| { | |||
| $tokenCache = new TokenCache(); | |||
| $tokenCache->clearTokens(); | |||
| return redirect('/'); | |||
| } | |||
| } | |||
| @ -0,0 +1,40 @@ | |||
| <?php | |||
| namespace App\Http\Controllers; | |||
| use App\Http\Controllers\Controller; | |||
| use Illuminate\Http\Request; | |||
| use Microsoft\Graph\Graph; | |||
| use Microsoft\Graph\Model; | |||
| use App\TokenStore\TokenCache; | |||
| class CalendarController extends Controller | |||
| { | |||
| public function calendar() | |||
| { | |||
| $viewData = $this->loadViewData(); | |||
| // Get the access token from the cache | |||
| $tokenCache = new TokenCache(); | |||
| $accessToken = $tokenCache->getAccessToken(); | |||
| // Create a Graph client | |||
| $graph = new Graph(); | |||
| $graph->setAccessToken($accessToken); | |||
| $queryParams = array( | |||
| '$select' => 'subject,organizer,start,end', | |||
| '$orderby' => 'createdDateTime DESC' | |||
| ); | |||
| // Append query parameters to the '/me/events' url | |||
| $getEventsUrl = '/me/events?'.http_build_query($queryParams); | |||
| $events = $graph->createRequest('GET', $getEventsUrl) | |||
| ->setReturnType(Model\Event::class) | |||
| ->execute(); | |||
| $viewData['events'] = $events; | |||
| return view('calendar', $viewData); | |||
| } | |||
| } | |||
| @ -0,0 +1,32 @@ | |||
| <?php | |||
| namespace App\Http\Controllers; | |||
| use Illuminate\Foundation\Auth\Access\AuthorizesRequests; | |||
| use Illuminate\Foundation\Bus\DispatchesJobs; | |||
| use Illuminate\Foundation\Validation\ValidatesRequests; | |||
| use Illuminate\Routing\Controller as BaseController; | |||
| class Controller extends BaseController | |||
| { | |||
| use AuthorizesRequests, DispatchesJobs, ValidatesRequests; | |||
| public function loadViewData() | |||
| { | |||
| $viewData = []; | |||
| // Check for flash errors | |||
| if (session('error')) { | |||
| $viewData['error'] = session('error'); | |||
| $viewData['errorDetail'] = session('errorDetail'); | |||
| } | |||
| // Check for logged on user | |||
| if (session('userName')) { | |||
| $viewData['userName'] = session('userName'); | |||
| $viewData['userEmail'] = session('userEmail'); | |||
| } | |||
| return $viewData; | |||
| } | |||
| } | |||
| @ -0,0 +1,15 @@ | |||
| <?php | |||
| namespace App\Http\Controllers; | |||
| use App\Http\Controllers\Controller; | |||
| class HomeController extends Controller | |||
| { | |||
| public function welcome() | |||
| { | |||
| $viewData = $this->loadViewData(); | |||
| return view('welcome', $viewData); | |||
| } | |||
| } | |||
| @ -0,0 +1,131 @@ | |||
| <?php | |||
| namespace App\Http\Controllers; | |||
| use App\Instagram; | |||
| use App\TokenStore\TokenCache; | |||
| use Illuminate\Http\Request; | |||
| use Microsoft\Graph\Exception\GraphException; | |||
| use Microsoft\Graph\Graph; | |||
| use Microsoft\Graph\Model; | |||
| class InstagramController extends Controller | |||
| { | |||
| /** | |||
| * Display a listing of the resource. | |||
| * | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function index() | |||
| { | |||
| $viewData = $this->loadViewData(); | |||
| // Get the access token from the cache | |||
| $tokenCache = new TokenCache(); | |||
| $accessToken = $tokenCache->getAccessToken(); | |||
| // Create a Graph client | |||
| $graph = new Graph(); | |||
| $graph->setAccessToken($accessToken); | |||
| $queryParams = array( | |||
| '$select' => 'id,name,size', | |||
| ); | |||
| // Append query parameters to the '/me/events' url | |||
| // $getEventsUrl = '/me/drive/items/70D9602035ABE6A9!897/children?'.http_build_query($queryParams); | |||
| $getEventsUrl = '/me/drive/items/70D9602035ABE6A9!9943/children?'.http_build_query($queryParams); | |||
| // $getEventsUrl = '/me/drive'; | |||
| try { | |||
| $events = $graph->createRequest('GET', $getEventsUrl) | |||
| ->setReturnType(Model\DriveItem::class) | |||
| ->execute(); | |||
| } catch (GraphException $e) { | |||
| var_dump($e); | |||
| } | |||
| // print_r($events); | |||
| foreach ($events as $event) { | |||
| // var_dump($event);exit; | |||
| $subItemUrl = '/me/drive/items/' . $event->getId(). '/children?'.http_build_query($queryParams); | |||
| $images = $graph->createRequest('GET', $subItemUrl) | |||
| ->setReturnType(Model\DriveItem::class) | |||
| ->execute(); | |||
| dd($images); | |||
| exit; | |||
| var_dump($event); | |||
| } | |||
| // $viewData['events'] = $events; | |||
| // return view('calendar', $viewData); | |||
| // | |||
| // return 1; | |||
| } | |||
| /** | |||
| * Show the form for creating a new resource. | |||
| * | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function create() | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Store a newly created resource in storage. | |||
| * | |||
| * @param \Illuminate\Http\Request $request | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function store(Request $request) | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Display the specified resource. | |||
| * | |||
| * @param \App\Instagram $instagram | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function show(Instagram $instagram) | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Show the form for editing the specified resource. | |||
| * | |||
| * @param \App\Instagram $instagram | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function edit(Instagram $instagram) | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Update the specified resource in storage. | |||
| * | |||
| * @param \Illuminate\Http\Request $request | |||
| * @param \App\Instagram $instagram | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function update(Request $request, Instagram $instagram) | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Remove the specified resource from storage. | |||
| * | |||
| * @param \App\Instagram $instagram | |||
| * @return \Illuminate\Http\Response | |||
| */ | |||
| public function destroy(Instagram $instagram) | |||
| { | |||
| // | |||
| } | |||
| } | |||
| @ -0,0 +1,80 @@ | |||
| <?php | |||
| namespace App\Http; | |||
| use Illuminate\Foundation\Http\Kernel as HttpKernel; | |||
| class Kernel extends HttpKernel | |||
| { | |||
| /** | |||
| * The application's global HTTP middleware stack. | |||
| * | |||
| * These middleware are run during every request to your application. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $middleware = [ | |||
| \App\Http\Middleware\CheckForMaintenanceMode::class, | |||
| \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, | |||
| \App\Http\Middleware\TrimStrings::class, | |||
| \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, | |||
| \App\Http\Middleware\TrustProxies::class, | |||
| ]; | |||
| /** | |||
| * The application's route middleware groups. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $middlewareGroups = [ | |||
| 'web' => [ | |||
| \App\Http\Middleware\EncryptCookies::class, | |||
| \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, | |||
| \Illuminate\Session\Middleware\StartSession::class, | |||
| // \Illuminate\Session\Middleware\AuthenticateSession::class, | |||
| \Illuminate\View\Middleware\ShareErrorsFromSession::class, | |||
| \App\Http\Middleware\VerifyCsrfToken::class, | |||
| \Illuminate\Routing\Middleware\SubstituteBindings::class, | |||
| ], | |||
| 'api' => [ | |||
| 'throttle:60,1', | |||
| 'bindings', | |||
| ], | |||
| ]; | |||
| /** | |||
| * The application's route middleware. | |||
| * | |||
| * These middleware may be assigned to groups or used individually. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $routeMiddleware = [ | |||
| 'auth' => \App\Http\Middleware\Authenticate::class, | |||
| 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, | |||
| 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, | |||
| 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, | |||
| 'can' => \Illuminate\Auth\Middleware\Authorize::class, | |||
| 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, | |||
| 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, | |||
| 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, | |||
| 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, | |||
| ]; | |||
| /** | |||
| * The priority-sorted list of middleware. | |||
| * | |||
| * This forces non-global middleware to always be in the given order. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $middlewarePriority = [ | |||
| \Illuminate\Session\Middleware\StartSession::class, | |||
| \Illuminate\View\Middleware\ShareErrorsFromSession::class, | |||
| \App\Http\Middleware\Authenticate::class, | |||
| \Illuminate\Session\Middleware\AuthenticateSession::class, | |||
| \Illuminate\Routing\Middleware\SubstituteBindings::class, | |||
| \Illuminate\Auth\Middleware\Authorize::class, | |||
| ]; | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Auth\Middleware\Authenticate as Middleware; | |||
| class Authenticate extends Middleware | |||
| { | |||
| /** | |||
| * Get the path the user should be redirected to when they are not authenticated. | |||
| * | |||
| * @param \Illuminate\Http\Request $request | |||
| * @return string | |||
| */ | |||
| protected function redirectTo($request) | |||
| { | |||
| if (! $request->expectsJson()) { | |||
| return route('login'); | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware; | |||
| class CheckForMaintenanceMode extends Middleware | |||
| { | |||
| /** | |||
| * The URIs that should be reachable while maintenance mode is enabled. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $except = [ | |||
| // | |||
| ]; | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; | |||
| class EncryptCookies extends Middleware | |||
| { | |||
| /** | |||
| * The names of the cookies that should not be encrypted. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $except = [ | |||
| // | |||
| ]; | |||
| } | |||
| @ -0,0 +1,26 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Closure; | |||
| use Illuminate\Support\Facades\Auth; | |||
| class RedirectIfAuthenticated | |||
| { | |||
| /** | |||
| * Handle an incoming request. | |||
| * | |||
| * @param \Illuminate\Http\Request $request | |||
| * @param \Closure $next | |||
| * @param string|null $guard | |||
| * @return mixed | |||
| */ | |||
| public function handle($request, Closure $next, $guard = null) | |||
| { | |||
| if (Auth::guard($guard)->check()) { | |||
| return redirect('/home'); | |||
| } | |||
| return $next($request); | |||
| } | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; | |||
| class TrimStrings extends Middleware | |||
| { | |||
| /** | |||
| * The names of the attributes that should not be trimmed. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $except = [ | |||
| 'password', | |||
| 'password_confirmation', | |||
| ]; | |||
| } | |||
| @ -0,0 +1,23 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Http\Request; | |||
| use Fideloper\Proxy\TrustProxies as Middleware; | |||
| class TrustProxies extends Middleware | |||
| { | |||
| /** | |||
| * The trusted proxies for this application. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $proxies; | |||
| /** | |||
| * The headers that should be used to detect proxies. | |||
| * | |||
| * @var int | |||
| */ | |||
| protected $headers = Request::HEADER_X_FORWARDED_ALL; | |||
| } | |||
| @ -0,0 +1,24 @@ | |||
| <?php | |||
| namespace App\Http\Middleware; | |||
| use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; | |||
| class VerifyCsrfToken extends Middleware | |||
| { | |||
| /** | |||
| * Indicates whether the XSRF-TOKEN cookie should be set on the response. | |||
| * | |||
| * @var bool | |||
| */ | |||
| protected $addHttpCookie = true; | |||
| /** | |||
| * The URIs that should be excluded from CSRF verification. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $except = [ | |||
| // | |||
| ]; | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| <?php | |||
| namespace App; | |||
| use Illuminate\Database\Eloquent\Model; | |||
| /** | |||
| * App\Instagram | |||
| * | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\Instagram newModelQuery() | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\Instagram newQuery() | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\Instagram query() | |||
| * @mixin \Eloquent | |||
| */ | |||
| class Instagram extends Model | |||
| { | |||
| // | |||
| protected $table = "instagram"; | |||
| protected $fillable = ["image_name", "username", "image_url"]; | |||
| } | |||
| @ -0,0 +1,28 @@ | |||
| <?php | |||
| namespace App\Providers; | |||
| use Illuminate\Support\ServiceProvider; | |||
| class AppServiceProvider extends ServiceProvider | |||
| { | |||
| /** | |||
| * Bootstrap any application services. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function boot() | |||
| { | |||
| // | |||
| } | |||
| /** | |||
| * Register any application services. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function register() | |||
| { | |||
| // | |||
| } | |||
| } | |||
| @ -0,0 +1,30 @@ | |||
| <?php | |||
| namespace App\Providers; | |||
| use Illuminate\Support\Facades\Gate; | |||
| use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; | |||
| class AuthServiceProvider extends ServiceProvider | |||
| { | |||
| /** | |||
| * The policy mappings for the application. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $policies = [ | |||
| 'App\Model' => 'App\Policies\ModelPolicy', | |||
| ]; | |||
| /** | |||
| * Register any authentication / authorization services. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function boot() | |||
| { | |||
| $this->registerPolicies(); | |||
| // | |||
| } | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| <?php | |||
| namespace App\Providers; | |||
| use Illuminate\Support\ServiceProvider; | |||
| use Illuminate\Support\Facades\Broadcast; | |||
| class BroadcastServiceProvider extends ServiceProvider | |||
| { | |||
| /** | |||
| * Bootstrap any application services. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function boot() | |||
| { | |||
| Broadcast::routes(); | |||
| require base_path('routes/channels.php'); | |||
| } | |||
| } | |||
| @ -0,0 +1,34 @@ | |||
| <?php | |||
| namespace App\Providers; | |||
| use Illuminate\Support\Facades\Event; | |||
| use Illuminate\Auth\Events\Registered; | |||
| use Illuminate\Auth\Listeners\SendEmailVerificationNotification; | |||
| use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; | |||
| class EventServiceProvider extends ServiceProvider | |||
| { | |||
| /** | |||
| * The event listener mappings for the application. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $listen = [ | |||
| Registered::class => [ | |||
| SendEmailVerificationNotification::class, | |||
| ], | |||
| ]; | |||
| /** | |||
| * Register any events for your application. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function boot() | |||
| { | |||
| parent::boot(); | |||
| // | |||
| } | |||
| } | |||
| @ -0,0 +1,73 @@ | |||
| <?php | |||
| namespace App\Providers; | |||
| use Illuminate\Support\Facades\Route; | |||
| use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; | |||
| class RouteServiceProvider extends ServiceProvider | |||
| { | |||
| /** | |||
| * This namespace is applied to your controller routes. | |||
| * | |||
| * In addition, it is set as the URL generator's root namespace. | |||
| * | |||
| * @var string | |||
| */ | |||
| protected $namespace = 'App\Http\Controllers'; | |||
| /** | |||
| * Define your route model bindings, pattern filters, etc. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function boot() | |||
| { | |||
| // | |||
| parent::boot(); | |||
| } | |||
| /** | |||
| * Define the routes for the application. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function map() | |||
| { | |||
| $this->mapApiRoutes(); | |||
| $this->mapWebRoutes(); | |||
| // | |||
| } | |||
| /** | |||
| * Define the "web" routes for the application. | |||
| * | |||
| * These routes all receive session state, CSRF protection, etc. | |||
| * | |||
| * @return void | |||
| */ | |||
| protected function mapWebRoutes() | |||
| { | |||
| Route::middleware('web') | |||
| ->namespace($this->namespace) | |||
| ->group(base_path('routes/web.php')); | |||
| } | |||
| /** | |||
| * Define the "api" routes for the application. | |||
| * | |||
| * These routes are typically stateless. | |||
| * | |||
| * @return void | |||
| */ | |||
| protected function mapApiRoutes() | |||
| { | |||
| Route::prefix('api') | |||
| ->middleware('api') | |||
| ->namespace($this->namespace) | |||
| ->group(base_path('routes/api.php')); | |||
| } | |||
| } | |||
| @ -0,0 +1,229 @@ | |||
| <?php | |||
| namespace App\Services; | |||
| set_time_limit(0); | |||
| date_default_timezone_set('UTC'); | |||
| use InstagramAPI\Response\Model\Item; | |||
| use InstagramAPI\Instagram; | |||
| use App\Instagram as Ins; | |||
| class InstagramService | |||
| { | |||
| private $username = "nicksxs"; | |||
| private $password = 'tmx211314'; | |||
| private $debug = false; | |||
| private $truncatedDebug = false; | |||
| function traceExistFiles($dir) | |||
| { | |||
| $existFiles = []; | |||
| if (is_dir($dir)) { | |||
| $files = array_diff(scandir($dir), ['.', '..']); | |||
| foreach ($files as $file) { | |||
| if (isMedia($file)) { | |||
| $existFiles[] = $file; | |||
| } | |||
| } | |||
| return $existFiles; | |||
| } | |||
| return []; | |||
| } | |||
| function isMedia($file) | |||
| { | |||
| if (in_array(pathinfo($file)['extension'], ['jpg', 'mp4'])) { | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| function logFailUrl($filePrefix, $fileUrl) | |||
| { | |||
| $failLogFile = "fail.log"; | |||
| $myfile = file_put_contents($failLogFile, $filePrefix . "\t" . $fileUrl . PHP_EOL, FILE_APPEND | LOCK_EX); | |||
| } | |||
| function downloadFile($filenameUrl, $flag = 0, $filePrefix = "") | |||
| { | |||
| $filePathInfo = pathinfo($filenameUrl); | |||
| $filename = $filePathInfo['filename']; | |||
| // echo $filename; | |||
| // echo "\n"; | |||
| $pos = strpos($filename, "?"); | |||
| // echo "pos: ".$pos; | |||
| // echo "\n"; | |||
| if ($pos > 0) { | |||
| $filename = substr($filename, 0, $pos); | |||
| } | |||
| // if ($filename == "33020038_640464766303508_27725890796388352_n.jpg"){ | |||
| // $flag = 1; | |||
| // } | |||
| if (file_exists($filePrefix . $filename) || file_exists($filePrefix . $filename . ".back")) { | |||
| echo "\n file exists " . $filePrefix . $filename; | |||
| return 0; | |||
| } | |||
| try { | |||
| $image = file_get_contents($filenameUrl); | |||
| } catch (\Throwable $e) { | |||
| $this->logFailUrl($filePrefix, $filenameUrl); | |||
| return -1; | |||
| } | |||
| echo "new filename: " . $filePrefix . $filename . "\n"; | |||
| $downloadResult = file_put_contents($filePrefix . $filename, $image); | |||
| if (!$downloadResult) { | |||
| $this->logFailUrl($filePrefix, $filenameUrl); | |||
| return -1; | |||
| } else { | |||
| return 1; | |||
| } | |||
| } | |||
| public function parseExactFileName($fileUrl) | |||
| { | |||
| $filePathInfo = pathinfo($fileUrl); | |||
| $filename = $filePathInfo['filename']; | |||
| $pos = strpos($filename, "?"); | |||
| if ($pos > 0) { | |||
| $filename = substr($filename, 0, $pos); | |||
| } | |||
| return $filename; | |||
| } | |||
| public function scrapeLikedUsers() | |||
| { | |||
| $ig = new Instagram($this->debug, $this->truncatedDebug); | |||
| try | |||
| { | |||
| $ig->login($this->username, $this->password); | |||
| } | |||
| catch | |||
| (\Exception $e) { | |||
| echo 'Something went wrong: ' . $e->getMessage() . "\n"; | |||
| exit(0); | |||
| } | |||
| $baseImageDir = "/Users/shixuesen/OneDrive/Pictures/instagram/"; | |||
| try { | |||
| $userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt"); | |||
| $userList = array_slice($userList, 17); | |||
| // print_r($userList);exit; | |||
| // print_r($userList); | |||
| foreach ($userList as $userName) { | |||
| $trueName = trim($userName); | |||
| // echo $trueName;exit; | |||
| $thisUserImageDir = $baseImageDir . $trueName . "/"; | |||
| // $existFiles = $this->traceExistFiles($thisUserImageDir); | |||
| $userId = $ig->people->getUserIdForName(trim($userName)); | |||
| if ($trueName == 'sabrina888888_') { | |||
| echo "\n______________________\n"; | |||
| $maxId = '1451179182821586881_19900699'; | |||
| } else { | |||
| $maxId = null; | |||
| } | |||
| do { | |||
| // Request the page corresponding to maxId. | |||
| echo "\n current maxId: " . $maxId; | |||
| $response = $ig->timeline->getUserFeed($userId, $maxId); | |||
| // In this example we're simply printing the IDs of this page's items. | |||
| foreach ($response->getItems() as $item) { | |||
| switch ($item->getMediaType()) { | |||
| case Item::PHOTO: | |||
| $imageUrl = $item->getImageVersions2()->getCandidates()[0]->getUrl(); | |||
| $res = $this->downloadFile($imageUrl, 0, $thisUserImageDir); | |||
| $filename = $this->parseExactFileName($imageUrl); | |||
| Ins::firstOrCreate(['image_name' => $filename], [ | |||
| 'username' => $userName, | |||
| 'image_url' => $imageUrl | |||
| ]); | |||
| // if ($res == 0) { | |||
| // goto a; | |||
| // } | |||
| break; | |||
| case Item::VIDEO: | |||
| $videoUrl = $item->getVideoVersions()[0]->getUrl(); | |||
| $res = $this->downloadFile($videoUrl, 0, $thisUserImageDir); | |||
| $filename = $this->parseExactFileName($videoUrl); | |||
| Ins::firstOrCreate(['image_name' => $filename], [ | |||
| 'username' => $userName, | |||
| 'image_url' => $videoUrl | |||
| ]); | |||
| // if ($res == 0) { | |||
| // goto a; | |||
| // } | |||
| break; | |||
| case Item::ALBUM: | |||
| foreach ($item->getCarouselMedia() as $imageItem) { | |||
| $imageUrl = $imageItem->getImageVersions2()->getCandidates()[0]->getUrl(); | |||
| $res = $this->downloadFile($imageUrl, 0, $thisUserImageDir); | |||
| $filename = $this->parseExactFileName($imageUrl); | |||
| Ins::firstOrCreate(['image_name' => $filename], [ | |||
| 'username' => $userName, | |||
| 'image_url' => $imageUrl | |||
| ]); | |||
| // if ($res == 0) { | |||
| // goto a; | |||
| // } | |||
| } | |||
| break; | |||
| } | |||
| // printf("[%s] https://instagram.com/p/%s/\n", $item->getId(), $item->getCode()); | |||
| } | |||
| // Now we must update the maxId variable to the "next page". | |||
| // This will be a null value again when we've reached the last page! | |||
| // And we will stop looping through pages as soon as maxId becomes null. | |||
| $maxId = $response->getNextMaxId(); | |||
| // Sleep for 5 seconds before requesting the next page. This is just an | |||
| // example of an okay sleep time. It is very important that your scripts | |||
| // always pause between requests that may run very rapidly, otherwise | |||
| // Instagram will throttle you temporarily for abusing their API! | |||
| echo "\n Sleeping for 5s...\n"; | |||
| sleep(5); | |||
| } while ($maxId !== null); // Must use "!==" for comparison instead of "!=". | |||
| a: | |||
| } | |||
| // Get the UserPK ID for "natgeo" (National Geographic). | |||
| /** | |||
| * $userId = $ig->people->getUserIdForName('nyanchan22'); | |||
| * | |||
| * // Starting at "null" means starting at the first page. | |||
| * $maxId = null; | |||
| * do { | |||
| * // Request the page corresponding to maxId. | |||
| * $response = $ig->timeline->getUserFeed($userId, $maxId); | |||
| * | |||
| * // In this example we're simply printing the IDs of this page's items. | |||
| * foreach ($response->getItems() as $item) { | |||
| * printf("[%s] https://instagram.com/p/%s/\n", $item->getId(), $item->getCode()); | |||
| * } | |||
| * | |||
| * // Now we must update the maxId variable to the "next page". | |||
| * // This will be a null value again when we've reached the last page! | |||
| * // And we will stop looping through pages as soon as maxId becomes null. | |||
| * $maxId = $response->getNextMaxId(); | |||
| * | |||
| * // Sleep for 5 seconds before requesting the next page. This is just an | |||
| * // example of an okay sleep time. It is very important that your scripts | |||
| * // always pause between requests that may run very rapidly, otherwise | |||
| * // Instagram will throttle you temporarily for abusing their API! | |||
| * echo "Sleeping for 5s...\n"; | |||
| * sleep(5); | |||
| * } while ($maxId !== null); // Must use "!==" for comparison instead of "!=". | |||
| */ | |||
| } catch (\Exception $e) { | |||
| echo 'Something went wrong: ' . $e->getMessage() . "\n"; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,76 @@ | |||
| <?php | |||
| namespace App\TokenStore; | |||
| class TokenCache { | |||
| public function storeTokens($accessToken, $user) { | |||
| session([ | |||
| 'accessToken' => $accessToken->getToken(), | |||
| 'refreshToken' => $accessToken->getRefreshToken(), | |||
| 'tokenExpires' => $accessToken->getExpires(), | |||
| 'userName' => $user->getDisplayName(), | |||
| 'userEmail' => null !== $user->getMail() ? $user->getMail() : $user->getUserPrincipalName() | |||
| ]); | |||
| } | |||
| public function clearTokens() { | |||
| session()->forget('accessToken'); | |||
| session()->forget('refreshToken'); | |||
| session()->forget('tokenExpires'); | |||
| session()->forget('userName'); | |||
| session()->forget('userEmail'); | |||
| } | |||
| public function getAccessToken() { | |||
| // Check if tokens exist | |||
| if (empty(session('accessToken')) || | |||
| empty(session('refreshToken')) || | |||
| empty(session('tokenExpires'))) { | |||
| return ''; | |||
| } | |||
| // Check if token is expired | |||
| //Get current time + 5 minutes (to allow for time differences) | |||
| $now = time() + 300; | |||
| if (session('tokenExpires') <= $now) { | |||
| // Token is expired (or very close to it) | |||
| // so let's refresh | |||
| // Initialize the OAuth client | |||
| $oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([ | |||
| 'clientId' => env('OAUTH_APP_ID'), | |||
| 'clientSecret' => env('OAUTH_APP_PASSWORD'), | |||
| 'redirectUri' => env('OAUTH_REDIRECT_URI'), | |||
| 'urlAuthorize' => env('OAUTH_AUTHORITY').env('OAUTH_AUTHORIZE_ENDPOINT'), | |||
| 'urlAccessToken' => env('OAUTH_AUTHORITY').env('OAUTH_TOKEN_ENDPOINT'), | |||
| 'urlResourceOwnerDetails' => '', | |||
| 'scopes' => env('OAUTH_SCOPES') | |||
| ]); | |||
| try { | |||
| $newToken = $oauthClient->getAccessToken('refresh_token', [ | |||
| 'refresh_token' => session('refreshToken') | |||
| ]); | |||
| // Store the new values | |||
| $this->updateTokens($newToken); | |||
| return $newToken->getToken(); | |||
| } | |||
| catch (League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) { | |||
| return ''; | |||
| } | |||
| } | |||
| // Token is still valid, just return it | |||
| return session('accessToken'); | |||
| } | |||
| public function updateTokens($accessToken) { | |||
| session([ | |||
| 'accessToken' => $accessToken->getToken(), | |||
| 'refreshToken' => $accessToken->getRefreshToken(), | |||
| 'tokenExpires' => $accessToken->getExpires() | |||
| ]); | |||
| } | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| <?php | |||
| namespace App; | |||
| use Illuminate\Notifications\Notifiable; | |||
| use Illuminate\Contracts\Auth\MustVerifyEmail; | |||
| use Illuminate\Foundation\Auth\User as Authenticatable; | |||
| /** | |||
| * App\User | |||
| * | |||
| * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\User newModelQuery() | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\User newQuery() | |||
| * @method static \Illuminate\Database\Eloquent\Builder|\App\User query() | |||
| * @mixin \Eloquent | |||
| */ | |||
| class User extends Authenticatable | |||
| { | |||
| use Notifiable; | |||
| /** | |||
| * The attributes that are mass assignable. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $fillable = [ | |||
| 'name', 'email', 'password', | |||
| ]; | |||
| /** | |||
| * The attributes that should be hidden for arrays. | |||
| * | |||
| * @var array | |||
| */ | |||
| protected $hidden = [ | |||
| 'password', 'remember_token', | |||
| ]; | |||
| } | |||
| @ -0,0 +1,53 @@ | |||
| #!/usr/bin/env php | |||
| <?php | |||
| define('LARAVEL_START', microtime(true)); | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Register The Auto Loader | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Composer provides a convenient, automatically generated class loader | |||
| | for our application. We just need to utilize it! We'll require it | |||
| | into the script here so that we do not have to worry about the | |||
| | loading of any our classes "manually". Feels great to relax. | |||
| | | |||
| */ | |||
| require __DIR__.'/vendor/autoload.php'; | |||
| $app = require_once __DIR__.'/bootstrap/app.php'; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Run The Artisan Application | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When we run the console application, the current CLI command will be | |||
| | executed in this console and the response sent back to a terminal | |||
| | or another output device for the developers. Here goes nothing! | |||
| | | |||
| */ | |||
| $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); | |||
| $status = $kernel->handle( | |||
| $input = new Symfony\Component\Console\Input\ArgvInput, | |||
| new Symfony\Component\Console\Output\ConsoleOutput | |||
| ); | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Shutdown The Application | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Once Artisan has finished running, we will fire off the shutdown events | |||
| | so that any final work may be done by the application before we shut | |||
| | down the process. This is the last thing to happen to the request. | |||
| | | |||
| */ | |||
| $kernel->terminate($input, $status); | |||
| exit($status); | |||
| @ -0,0 +1,55 @@ | |||
| <?php | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Create The Application | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The first thing we will do is create a new Laravel application instance | |||
| | which serves as the "glue" for all the components of Laravel, and is | |||
| | the IoC container for the system binding all of the various parts. | |||
| | | |||
| */ | |||
| $app = new Illuminate\Foundation\Application( | |||
| $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) | |||
| ); | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Bind Important Interfaces | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Next, we need to bind some important interfaces into the container so | |||
| | we will be able to resolve them when needed. The kernels serve the | |||
| | incoming requests to this application from both the web and CLI. | |||
| | | |||
| */ | |||
| $app->singleton( | |||
| Illuminate\Contracts\Http\Kernel::class, | |||
| App\Http\Kernel::class | |||
| ); | |||
| $app->singleton( | |||
| Illuminate\Contracts\Console\Kernel::class, | |||
| App\Console\Kernel::class | |||
| ); | |||
| $app->singleton( | |||
| Illuminate\Contracts\Debug\ExceptionHandler::class, | |||
| App\Exceptions\Handler::class | |||
| ); | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Return The Application | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This script returns the application instance. The instance is given to | |||
| | the calling script so we can separate the building of the instances | |||
| | from the actual running of the application and sending responses. | |||
| | | |||
| */ | |||
| return $app; | |||
| @ -0,0 +1,2 @@ | |||
| * | |||
| !.gitignore | |||
| @ -0,0 +1,67 @@ | |||
| { | |||
| "name": "laravel/laravel", | |||
| "type": "project", | |||
| "description": "The Laravel Framework.", | |||
| "keywords": [ | |||
| "framework", | |||
| "laravel" | |||
| ], | |||
| "license": "MIT", | |||
| "require": { | |||
| "php": "^7.1.3", | |||
| "barryvdh/laravel-ide-helper": "^2.5", | |||
| "doctrine/dbal": "^2.9", | |||
| "fideloper/proxy": "^4.0", | |||
| "laravel/framework": "5.7.*", | |||
| "laravel/tinker": "^1.0", | |||
| "league/oauth2-client": "dev-master", | |||
| "mgp25/instagram-php": "^5.0", | |||
| "microsoft/microsoft-graph": "^1.6" | |||
| }, | |||
| "require-dev": { | |||
| "beyondcode/laravel-dump-server": "^1.0", | |||
| "filp/whoops": "^2.0", | |||
| "fzaninotto/faker": "^1.4", | |||
| "mockery/mockery": "^1.0", | |||
| "nunomaduro/collision": "^2.0", | |||
| "phpunit/phpunit": "^7.0" | |||
| }, | |||
| "config": { | |||
| "optimize-autoloader": true, | |||
| "preferred-install": "dist", | |||
| "sort-packages": true | |||
| }, | |||
| "extra": { | |||
| "laravel": { | |||
| "dont-discover": [] | |||
| } | |||
| }, | |||
| "autoload": { | |||
| "psr-4": { | |||
| "App\\": "app/" | |||
| }, | |||
| "classmap": [ | |||
| "database/seeds", | |||
| "database/factories" | |||
| ] | |||
| }, | |||
| "autoload-dev": { | |||
| "psr-4": { | |||
| "Tests\\": "tests/" | |||
| } | |||
| }, | |||
| "minimum-stability": "dev", | |||
| "prefer-stable": true, | |||
| "scripts": { | |||
| "post-autoload-dump": [ | |||
| "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", | |||
| "@php artisan package:discover --ansi" | |||
| ], | |||
| "post-root-package-install": [ | |||
| "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" | |||
| ], | |||
| "post-create-project-cmd": [ | |||
| "@php artisan key:generate --ansi" | |||
| ] | |||
| } | |||
| } | |||
| @ -0,0 +1,229 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Name | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This value is the name of your application. This value is used when the | |||
| | framework needs to place the application's name in a notification or | |||
| | any other location as required by the application or its packages. | |||
| | | |||
| */ | |||
| 'name' => env('APP_NAME', 'Laravel'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Environment | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This value determines the "environment" your application is currently | |||
| | running in. This may determine how you prefer to configure various | |||
| | services the application utilizes. Set this in your ".env" file. | |||
| | | |||
| */ | |||
| 'env' => env('APP_ENV', 'production'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Debug Mode | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When your application is in debug mode, detailed error messages with | |||
| | stack traces will be shown on every error that occurs within your | |||
| | application. If disabled, a simple generic error page is shown. | |||
| | | |||
| */ | |||
| 'debug' => env('APP_DEBUG', false), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application URL | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This URL is used by the console to properly generate URLs when using | |||
| | the Artisan command line tool. You should set this to the root of | |||
| | your application so that it is used when running Artisan tasks. | |||
| | | |||
| */ | |||
| 'url' => env('APP_URL', 'http://localhost'), | |||
| 'asset_url' => env('ASSET_URL', null), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Timezone | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the default timezone for your application, which | |||
| | will be used by the PHP date and date-time functions. We have gone | |||
| | ahead and set this to a sensible default for you out of the box. | |||
| | | |||
| */ | |||
| 'timezone' => 'UTC', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Locale Configuration | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The application locale determines the default locale that will be used | |||
| | by the translation service provider. You are free to set this value | |||
| | to any of the locales which will be supported by the application. | |||
| | | |||
| */ | |||
| 'locale' => 'en', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Application Fallback Locale | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The fallback locale determines the locale to use when the current one | |||
| | is not available. You may change the value to correspond to any of | |||
| | the language folders that are provided through your application. | |||
| | | |||
| */ | |||
| 'fallback_locale' => 'en', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Faker Locale | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This locale will be used by the Faker PHP library when generating fake | |||
| | data for your database seeds. For example, this will be used to get | |||
| | localized telephone numbers, street address information and more. | |||
| | | |||
| */ | |||
| 'faker_locale' => 'en_US', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Encryption Key | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This key is used by the Illuminate encrypter service and should be set | |||
| | to a random, 32 character string, otherwise these encrypted strings | |||
| | will not be safe. Please do this before deploying an application! | |||
| | | |||
| */ | |||
| 'key' => env('APP_KEY'), | |||
| 'cipher' => 'AES-256-CBC', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Autoloaded Service Providers | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The service providers listed here will be automatically loaded on the | |||
| | request to your application. Feel free to add your own services to | |||
| | this array to grant expanded functionality to your applications. | |||
| | | |||
| */ | |||
| 'providers' => [ | |||
| /* | |||
| * Laravel Framework Service Providers... | |||
| */ | |||
| Illuminate\Auth\AuthServiceProvider::class, | |||
| Illuminate\Broadcasting\BroadcastServiceProvider::class, | |||
| Illuminate\Bus\BusServiceProvider::class, | |||
| Illuminate\Cache\CacheServiceProvider::class, | |||
| Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, | |||
| Illuminate\Cookie\CookieServiceProvider::class, | |||
| Illuminate\Database\DatabaseServiceProvider::class, | |||
| Illuminate\Encryption\EncryptionServiceProvider::class, | |||
| Illuminate\Filesystem\FilesystemServiceProvider::class, | |||
| Illuminate\Foundation\Providers\FoundationServiceProvider::class, | |||
| Illuminate\Hashing\HashServiceProvider::class, | |||
| Illuminate\Mail\MailServiceProvider::class, | |||
| Illuminate\Notifications\NotificationServiceProvider::class, | |||
| Illuminate\Pagination\PaginationServiceProvider::class, | |||
| Illuminate\Pipeline\PipelineServiceProvider::class, | |||
| Illuminate\Queue\QueueServiceProvider::class, | |||
| Illuminate\Redis\RedisServiceProvider::class, | |||
| Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, | |||
| Illuminate\Session\SessionServiceProvider::class, | |||
| Illuminate\Translation\TranslationServiceProvider::class, | |||
| Illuminate\Validation\ValidationServiceProvider::class, | |||
| Illuminate\View\ViewServiceProvider::class, | |||
| /* | |||
| * Package Service Providers... | |||
| */ | |||
| /* | |||
| * Application Service Providers... | |||
| */ | |||
| App\Providers\AppServiceProvider::class, | |||
| App\Providers\AuthServiceProvider::class, | |||
| // App\Providers\BroadcastServiceProvider::class, | |||
| App\Providers\EventServiceProvider::class, | |||
| App\Providers\RouteServiceProvider::class, | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Class Aliases | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This array of class aliases will be registered when this application | |||
| | is started. However, feel free to register as many as you wish as | |||
| | the aliases are "lazy" loaded so they don't hinder performance. | |||
| | | |||
| */ | |||
| 'aliases' => [ | |||
| 'App' => Illuminate\Support\Facades\App::class, | |||
| 'Artisan' => Illuminate\Support\Facades\Artisan::class, | |||
| 'Auth' => Illuminate\Support\Facades\Auth::class, | |||
| 'Blade' => Illuminate\Support\Facades\Blade::class, | |||
| 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, | |||
| 'Bus' => Illuminate\Support\Facades\Bus::class, | |||
| 'Cache' => Illuminate\Support\Facades\Cache::class, | |||
| 'Config' => Illuminate\Support\Facades\Config::class, | |||
| 'Cookie' => Illuminate\Support\Facades\Cookie::class, | |||
| 'Crypt' => Illuminate\Support\Facades\Crypt::class, | |||
| 'DB' => Illuminate\Support\Facades\DB::class, | |||
| 'Eloquent' => Illuminate\Database\Eloquent\Model::class, | |||
| 'Event' => Illuminate\Support\Facades\Event::class, | |||
| 'File' => Illuminate\Support\Facades\File::class, | |||
| 'Gate' => Illuminate\Support\Facades\Gate::class, | |||
| 'Hash' => Illuminate\Support\Facades\Hash::class, | |||
| 'Lang' => Illuminate\Support\Facades\Lang::class, | |||
| 'Log' => Illuminate\Support\Facades\Log::class, | |||
| 'Mail' => Illuminate\Support\Facades\Mail::class, | |||
| 'Notification' => Illuminate\Support\Facades\Notification::class, | |||
| 'Password' => Illuminate\Support\Facades\Password::class, | |||
| 'Queue' => Illuminate\Support\Facades\Queue::class, | |||
| 'Redirect' => Illuminate\Support\Facades\Redirect::class, | |||
| 'Redis' => Illuminate\Support\Facades\Redis::class, | |||
| 'Request' => Illuminate\Support\Facades\Request::class, | |||
| 'Response' => Illuminate\Support\Facades\Response::class, | |||
| 'Route' => Illuminate\Support\Facades\Route::class, | |||
| 'Schema' => Illuminate\Support\Facades\Schema::class, | |||
| 'Session' => Illuminate\Support\Facades\Session::class, | |||
| 'Storage' => Illuminate\Support\Facades\Storage::class, | |||
| 'URL' => Illuminate\Support\Facades\URL::class, | |||
| 'Validator' => Illuminate\Support\Facades\Validator::class, | |||
| 'View' => Illuminate\Support\Facades\View::class, | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,102 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Authentication Defaults | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option controls the default authentication "guard" and password | |||
| | reset options for your application. You may change these defaults | |||
| | as required, but they're a perfect start for most applications. | |||
| | | |||
| */ | |||
| 'defaults' => [ | |||
| 'guard' => 'web', | |||
| 'passwords' => 'users', | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Authentication Guards | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Next, you may define every authentication guard for your application. | |||
| | Of course, a great default configuration has been defined for you | |||
| | here which uses session storage and the Eloquent user provider. | |||
| | | |||
| | All authentication drivers have a user provider. This defines how the | |||
| | users are actually retrieved out of your database or other storage | |||
| | mechanisms used by this application to persist your user's data. | |||
| | | |||
| | Supported: "session", "token" | |||
| | | |||
| */ | |||
| 'guards' => [ | |||
| 'web' => [ | |||
| 'driver' => 'session', | |||
| 'provider' => 'users', | |||
| ], | |||
| 'api' => [ | |||
| 'driver' => 'token', | |||
| 'provider' => 'users', | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | User Providers | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | All authentication drivers have a user provider. This defines how the | |||
| | users are actually retrieved out of your database or other storage | |||
| | mechanisms used by this application to persist your user's data. | |||
| | | |||
| | If you have multiple user tables or models you may configure multiple | |||
| | sources which represent each model / table. These sources may then | |||
| | be assigned to any extra authentication guards you have defined. | |||
| | | |||
| | Supported: "database", "eloquent" | |||
| | | |||
| */ | |||
| 'providers' => [ | |||
| 'users' => [ | |||
| 'driver' => 'eloquent', | |||
| 'model' => App\User::class, | |||
| ], | |||
| // 'users' => [ | |||
| // 'driver' => 'database', | |||
| // 'table' => 'users', | |||
| // ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Resetting Passwords | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | You may specify multiple password reset configurations if you have more | |||
| | than one user table or model in the application and you want to have | |||
| | separate password reset settings based on the specific user types. | |||
| | | |||
| | The expire time is the number of minutes that the reset token should be | |||
| | considered valid. This security feature keeps tokens short-lived so | |||
| | they have less time to be guessed. You may change this as needed. | |||
| | | |||
| */ | |||
| 'passwords' => [ | |||
| 'users' => [ | |||
| 'provider' => 'users', | |||
| 'table' => 'password_resets', | |||
| 'expire' => 60, | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,59 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Broadcaster | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option controls the default broadcaster that will be used by the | |||
| | framework when an event needs to be broadcast. You may set this to | |||
| | any of the connections defined in the "connections" array below. | |||
| | | |||
| | Supported: "pusher", "redis", "log", "null" | |||
| | | |||
| */ | |||
| 'default' => env('BROADCAST_DRIVER', 'null'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Broadcast Connections | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may define all of the broadcast connections that will be used | |||
| | to broadcast events to other systems or over websockets. Samples of | |||
| | each available type of connection are provided inside this array. | |||
| | | |||
| */ | |||
| 'connections' => [ | |||
| 'pusher' => [ | |||
| 'driver' => 'pusher', | |||
| 'key' => env('PUSHER_APP_KEY'), | |||
| 'secret' => env('PUSHER_APP_SECRET'), | |||
| 'app_id' => env('PUSHER_APP_ID'), | |||
| 'options' => [ | |||
| 'cluster' => env('PUSHER_APP_CLUSTER'), | |||
| 'encrypted' => true, | |||
| ], | |||
| ], | |||
| 'redis' => [ | |||
| 'driver' => 'redis', | |||
| 'connection' => 'default', | |||
| ], | |||
| 'log' => [ | |||
| 'driver' => 'log', | |||
| ], | |||
| 'null' => [ | |||
| 'driver' => 'null', | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,93 @@ | |||
| <?php | |||
| use Illuminate\Support\Str; | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Cache Store | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option controls the default cache connection that gets used while | |||
| | using this caching library. This connection is used when another is | |||
| | not explicitly specified when executing a given caching function. | |||
| | | |||
| | Supported: "apc", "array", "database", "file", "memcached", "redis" | |||
| | | |||
| */ | |||
| 'default' => env('CACHE_DRIVER', 'file'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Cache Stores | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may define all of the cache "stores" for your application as | |||
| | well as their drivers. You may even define multiple stores for the | |||
| | same cache driver to group types of items stored in your caches. | |||
| | | |||
| */ | |||
| 'stores' => [ | |||
| 'apc' => [ | |||
| 'driver' => 'apc', | |||
| ], | |||
| 'array' => [ | |||
| 'driver' => 'array', | |||
| ], | |||
| 'database' => [ | |||
| 'driver' => 'database', | |||
| 'table' => 'cache', | |||
| 'connection' => null, | |||
| ], | |||
| 'file' => [ | |||
| 'driver' => 'file', | |||
| 'path' => storage_path('framework/cache/data'), | |||
| ], | |||
| 'memcached' => [ | |||
| 'driver' => 'memcached', | |||
| 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), | |||
| 'sasl' => [ | |||
| env('MEMCACHED_USERNAME'), | |||
| env('MEMCACHED_PASSWORD'), | |||
| ], | |||
| 'options' => [ | |||
| // Memcached::OPT_CONNECT_TIMEOUT => 2000, | |||
| ], | |||
| 'servers' => [ | |||
| [ | |||
| 'host' => env('MEMCACHED_HOST', '127.0.0.1'), | |||
| 'port' => env('MEMCACHED_PORT', 11211), | |||
| 'weight' => 100, | |||
| ], | |||
| ], | |||
| ], | |||
| 'redis' => [ | |||
| 'driver' => 'redis', | |||
| 'connection' => 'cache', | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Cache Key Prefix | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When utilizing a RAM based store such as APC or Memcached, there might | |||
| | be other applications utilizing the same cache. So, we'll specify a | |||
| | value to get prefixed to all our keys so we can avoid collisions. | |||
| | | |||
| */ | |||
| 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), | |||
| ]; | |||
| @ -0,0 +1,131 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Database Connection Name | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify which of the database connections below you wish | |||
| | to use as your default connection for all database work. Of course | |||
| | you may use many connections at once using the Database library. | |||
| | | |||
| */ | |||
| 'default' => env('DB_CONNECTION', 'mysql'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Database Connections | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here are each of the database connections setup for your application. | |||
| | Of course, examples of configuring each database platform that is | |||
| | supported by Laravel is shown below to make development simple. | |||
| | | |||
| | | |||
| | All database work in Laravel is done through the PHP PDO facilities | |||
| | so make sure you have the driver for your particular database of | |||
| | choice installed on your machine before you begin development. | |||
| | | |||
| */ | |||
| 'connections' => [ | |||
| 'sqlite' => [ | |||
| 'driver' => 'sqlite', | |||
| 'database' => env('DB_DATABASE', database_path('database.sqlite')), | |||
| 'prefix' => '', | |||
| 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), | |||
| ], | |||
| 'mysql' => [ | |||
| 'driver' => 'mysql', | |||
| 'host' => env('DB_HOST', '127.0.0.1'), | |||
| 'port' => env('DB_PORT', '3306'), | |||
| 'database' => env('DB_DATABASE', 'forge'), | |||
| 'username' => env('DB_USERNAME', 'forge'), | |||
| 'password' => env('DB_PASSWORD', ''), | |||
| 'unix_socket' => env('DB_SOCKET', ''), | |||
| 'charset' => 'utf8mb4', | |||
| 'collation' => 'utf8mb4_unicode_ci', | |||
| 'prefix' => '', | |||
| 'prefix_indexes' => true, | |||
| 'strict' => true, | |||
| 'engine' => null, | |||
| ], | |||
| 'pgsql' => [ | |||
| 'driver' => 'pgsql', | |||
| 'host' => env('DB_HOST', '127.0.0.1'), | |||
| 'port' => env('DB_PORT', '5432'), | |||
| 'database' => env('DB_DATABASE', 'forge'), | |||
| 'username' => env('DB_USERNAME', 'forge'), | |||
| 'password' => env('DB_PASSWORD', ''), | |||
| 'charset' => 'utf8', | |||
| 'prefix' => '', | |||
| 'prefix_indexes' => true, | |||
| 'schema' => 'public', | |||
| 'sslmode' => 'prefer', | |||
| ], | |||
| 'sqlsrv' => [ | |||
| 'driver' => 'sqlsrv', | |||
| 'host' => env('DB_HOST', 'localhost'), | |||
| 'port' => env('DB_PORT', '1433'), | |||
| 'database' => env('DB_DATABASE', 'forge'), | |||
| 'username' => env('DB_USERNAME', 'forge'), | |||
| 'password' => env('DB_PASSWORD', ''), | |||
| 'charset' => 'utf8', | |||
| 'prefix' => '', | |||
| 'prefix_indexes' => true, | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Migration Repository Table | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This table keeps track of all the migrations that have already run for | |||
| | your application. Using this information, we can determine which of | |||
| | the migrations on disk haven't actually been run in the database. | |||
| | | |||
| */ | |||
| 'migrations' => 'migrations', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Redis Databases | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Redis is an open source, fast, and advanced key-value store that also | |||
| | provides a richer body of commands than a typical key-value system | |||
| | such as APC or Memcached. Laravel makes it easy to dig right in. | |||
| | | |||
| */ | |||
| 'redis' => [ | |||
| 'client' => 'predis', | |||
| 'default' => [ | |||
| 'host' => env('REDIS_HOST', '127.0.0.1'), | |||
| 'password' => env('REDIS_PASSWORD', null), | |||
| 'port' => env('REDIS_PORT', 6379), | |||
| 'database' => env('REDIS_DB', 0), | |||
| ], | |||
| 'cache' => [ | |||
| 'host' => env('REDIS_HOST', '127.0.0.1'), | |||
| 'password' => env('REDIS_PASSWORD', null), | |||
| 'port' => env('REDIS_PORT', 6379), | |||
| 'database' => env('REDIS_CACHE_DB', 1), | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,69 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Filesystem Disk | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the default filesystem disk that should be used | |||
| | by the framework. The "local" disk, as well as a variety of cloud | |||
| | based disks are available to your application. Just store away! | |||
| | | |||
| */ | |||
| 'default' => env('FILESYSTEM_DRIVER', 'local'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Cloud Filesystem Disk | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Many applications store files both locally and in the cloud. For this | |||
| | reason, you may specify a default "cloud" driver here. This driver | |||
| | will be bound as the Cloud disk implementation in the container. | |||
| | | |||
| */ | |||
| 'cloud' => env('FILESYSTEM_CLOUD', 's3'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Filesystem Disks | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may configure as many filesystem "disks" as you wish, and you | |||
| | may even configure multiple disks of the same driver. Defaults have | |||
| | been setup for each driver as an example of the required options. | |||
| | | |||
| | Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace" | |||
| | | |||
| */ | |||
| 'disks' => [ | |||
| 'local' => [ | |||
| 'driver' => 'local', | |||
| 'root' => storage_path('app'), | |||
| ], | |||
| 'public' => [ | |||
| 'driver' => 'local', | |||
| 'root' => storage_path('app/public'), | |||
| 'url' => env('APP_URL').'/storage', | |||
| 'visibility' => 'public', | |||
| ], | |||
| 's3' => [ | |||
| 'driver' => 's3', | |||
| 'key' => env('AWS_ACCESS_KEY_ID'), | |||
| 'secret' => env('AWS_SECRET_ACCESS_KEY'), | |||
| 'region' => env('AWS_DEFAULT_REGION'), | |||
| 'bucket' => env('AWS_BUCKET'), | |||
| 'url' => env('AWS_URL'), | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,52 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Hash Driver | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option controls the default hash driver that will be used to hash | |||
| | passwords for your application. By default, the bcrypt algorithm is | |||
| | used; however, you remain free to modify this option if you wish. | |||
| | | |||
| | Supported: "bcrypt", "argon", "argon2id" | |||
| | | |||
| */ | |||
| 'driver' => 'bcrypt', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Bcrypt Options | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the configuration options that should be used when | |||
| | passwords are hashed using the Bcrypt algorithm. This will allow you | |||
| | to control the amount of time it takes to hash the given password. | |||
| | | |||
| */ | |||
| 'bcrypt' => [ | |||
| 'rounds' => env('BCRYPT_ROUNDS', 10), | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Argon Options | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the configuration options that should be used when | |||
| | passwords are hashed using the Argon algorithm. These will allow you | |||
| | to control the amount of time it takes to hash the given password. | |||
| | | |||
| */ | |||
| 'argon' => [ | |||
| 'memory' => 1024, | |||
| 'threads' => 2, | |||
| 'time' => 2, | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,93 @@ | |||
| <?php | |||
| use Monolog\Handler\StreamHandler; | |||
| use Monolog\Handler\SyslogUdpHandler; | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Log Channel | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option defines the default log channel that gets used when writing | |||
| | messages to the logs. The name specified in this option should match | |||
| | one of the channels defined in the "channels" configuration array. | |||
| | | |||
| */ | |||
| 'default' => env('LOG_CHANNEL', 'stack'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Log Channels | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may configure the log channels for your application. Out of | |||
| | the box, Laravel uses the Monolog PHP logging library. This gives | |||
| | you a variety of powerful log handlers / formatters to utilize. | |||
| | | |||
| | Available Drivers: "single", "daily", "slack", "syslog", | |||
| | "errorlog", "monolog", | |||
| | "custom", "stack" | |||
| | | |||
| */ | |||
| 'channels' => [ | |||
| 'stack' => [ | |||
| 'driver' => 'stack', | |||
| 'channels' => ['daily'], | |||
| ], | |||
| 'single' => [ | |||
| 'driver' => 'single', | |||
| 'path' => storage_path('logs/laravel.log'), | |||
| 'level' => 'debug', | |||
| ], | |||
| 'daily' => [ | |||
| 'driver' => 'daily', | |||
| 'path' => storage_path('logs/laravel.log'), | |||
| 'level' => 'debug', | |||
| 'days' => 14, | |||
| ], | |||
| 'slack' => [ | |||
| 'driver' => 'slack', | |||
| 'url' => env('LOG_SLACK_WEBHOOK_URL'), | |||
| 'username' => 'Laravel Log', | |||
| 'emoji' => ':boom:', | |||
| 'level' => 'critical', | |||
| ], | |||
| 'papertrail' => [ | |||
| 'driver' => 'monolog', | |||
| 'level' => 'debug', | |||
| 'handler' => SyslogUdpHandler::class, | |||
| 'handler_with' => [ | |||
| 'host' => env('PAPERTRAIL_URL'), | |||
| 'port' => env('PAPERTRAIL_PORT'), | |||
| ], | |||
| ], | |||
| 'stderr' => [ | |||
| 'driver' => 'monolog', | |||
| 'handler' => StreamHandler::class, | |||
| 'formatter' => env('LOG_STDERR_FORMATTER'), | |||
| 'with' => [ | |||
| 'stream' => 'php://stderr', | |||
| ], | |||
| ], | |||
| 'syslog' => [ | |||
| 'driver' => 'syslog', | |||
| 'level' => 'debug', | |||
| ], | |||
| 'errorlog' => [ | |||
| 'driver' => 'errorlog', | |||
| 'level' => 'debug', | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,136 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Mail Driver | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Laravel supports both SMTP and PHP's "mail" function as drivers for the | |||
| | sending of e-mail. You may specify which one you're using throughout | |||
| | your application here. By default, Laravel is setup for SMTP mail. | |||
| | | |||
| | Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses", | |||
| | "sparkpost", "log", "array" | |||
| | | |||
| */ | |||
| 'driver' => env('MAIL_DRIVER', 'smtp'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | SMTP Host Address | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may provide the host address of the SMTP server used by your | |||
| | applications. A default option is provided that is compatible with | |||
| | the Mailgun mail service which will provide reliable deliveries. | |||
| | | |||
| */ | |||
| 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | SMTP Host Port | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This is the SMTP port used by your application to deliver e-mails to | |||
| | users of the application. Like the host we have set this value to | |||
| | stay compatible with the Mailgun e-mail application by default. | |||
| | | |||
| */ | |||
| 'port' => env('MAIL_PORT', 587), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Global "From" Address | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | You may wish for all e-mails sent by your application to be sent from | |||
| | the same address. Here, you may specify a name and address that is | |||
| | used globally for all e-mails that are sent by your application. | |||
| | | |||
| */ | |||
| 'from' => [ | |||
| 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), | |||
| 'name' => env('MAIL_FROM_NAME', 'Example'), | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | E-Mail Encryption Protocol | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the encryption protocol that should be used when | |||
| | the application send e-mail messages. A sensible default using the | |||
| | transport layer security protocol should provide great security. | |||
| | | |||
| */ | |||
| 'encryption' => env('MAIL_ENCRYPTION', 'tls'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | SMTP Server Username | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | If your SMTP server requires a username for authentication, you should | |||
| | set it here. This will get used to authenticate with your server on | |||
| | connection. You may also set the "password" value below this one. | |||
| | | |||
| */ | |||
| 'username' => env('MAIL_USERNAME'), | |||
| 'password' => env('MAIL_PASSWORD'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Sendmail System Path | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When using the "sendmail" driver to send e-mails, we will need to know | |||
| | the path to where Sendmail lives on this server. A default path has | |||
| | been provided here, which will work well on most of your systems. | |||
| | | |||
| */ | |||
| 'sendmail' => '/usr/sbin/sendmail -bs', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Markdown Mail Settings | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | If you are using Markdown based email rendering, you may configure your | |||
| | theme and component paths here, allowing you to customize the design | |||
| | of the emails. Or, you may simply stick with the Laravel defaults! | |||
| | | |||
| */ | |||
| 'markdown' => [ | |||
| 'theme' => 'default', | |||
| 'paths' => [ | |||
| resource_path('views/vendor/mail'), | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Log Channel | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | If you are using the "log" driver, you may specify the logging channel | |||
| | if you prefer to keep mail messages separate from other log entries | |||
| | for simpler reading. Otherwise, the default channel will be used. | |||
| | | |||
| */ | |||
| 'log_channel' => env('MAIL_LOG_CHANNEL'), | |||
| ]; | |||
| @ -0,0 +1,86 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Queue Connection Name | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Laravel's queue API supports an assortment of back-ends via a single | |||
| | API, giving you convenient access to each back-end using the same | |||
| | syntax for every one. Here you may define a default connection. | |||
| | | |||
| */ | |||
| 'default' => env('QUEUE_CONNECTION', 'sync'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Queue Connections | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may configure the connection information for each server that | |||
| | is used by your application. A default configuration has been added | |||
| | for each back-end shipped with Laravel. You are free to add more. | |||
| | | |||
| | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" | |||
| | | |||
| */ | |||
| 'connections' => [ | |||
| 'sync' => [ | |||
| 'driver' => 'sync', | |||
| ], | |||
| 'database' => [ | |||
| 'driver' => 'database', | |||
| 'table' => 'jobs', | |||
| 'queue' => 'default', | |||
| 'retry_after' => 90, | |||
| ], | |||
| 'beanstalkd' => [ | |||
| 'driver' => 'beanstalkd', | |||
| 'host' => 'localhost', | |||
| 'queue' => 'default', | |||
| 'retry_after' => 90, | |||
| ], | |||
| 'sqs' => [ | |||
| 'driver' => 'sqs', | |||
| 'key' => env('SQS_KEY', 'your-public-key'), | |||
| 'secret' => env('SQS_SECRET', 'your-secret-key'), | |||
| 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), | |||
| 'queue' => env('SQS_QUEUE', 'your-queue-name'), | |||
| 'region' => env('SQS_REGION', 'us-east-1'), | |||
| ], | |||
| 'redis' => [ | |||
| 'driver' => 'redis', | |||
| 'connection' => 'default', | |||
| 'queue' => env('REDIS_QUEUE', 'default'), | |||
| 'retry_after' => 90, | |||
| 'block_for' => null, | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Failed Queue Jobs | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | These options configure the behavior of failed queue job logging so you | |||
| | can control which database and table are used to store the jobs that | |||
| | have failed. You may change them to any database / table you wish. | |||
| | | |||
| */ | |||
| 'failed' => [ | |||
| 'database' => env('DB_CONNECTION', 'mysql'), | |||
| 'table' => 'failed_jobs', | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,43 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Third Party Services | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This file is for storing the credentials for third party services such | |||
| | as Stripe, Mailgun, SparkPost and others. This file provides a sane | |||
| | default location for this type of information, allowing packages | |||
| | to have a conventional place to find your various credentials. | |||
| | | |||
| */ | |||
| 'mailgun' => [ | |||
| 'domain' => env('MAILGUN_DOMAIN'), | |||
| 'secret' => env('MAILGUN_SECRET'), | |||
| 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), | |||
| ], | |||
| 'ses' => [ | |||
| 'key' => env('SES_KEY'), | |||
| 'secret' => env('SES_SECRET'), | |||
| 'region' => env('SES_REGION', 'us-east-1'), | |||
| ], | |||
| 'sparkpost' => [ | |||
| 'secret' => env('SPARKPOST_SECRET'), | |||
| ], | |||
| 'stripe' => [ | |||
| 'model' => App\User::class, | |||
| 'key' => env('STRIPE_KEY'), | |||
| 'secret' => env('STRIPE_SECRET'), | |||
| 'webhook' => [ | |||
| 'secret' => env('STRIPE_WEBHOOK_SECRET'), | |||
| 'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300), | |||
| ], | |||
| ], | |||
| ]; | |||
| @ -0,0 +1,199 @@ | |||
| <?php | |||
| use Illuminate\Support\Str; | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Default Session Driver | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option controls the default session "driver" that will be used on | |||
| | requests. By default, we will use the lightweight native driver but | |||
| | you may specify any of the other wonderful drivers provided here. | |||
| | | |||
| | Supported: "file", "cookie", "database", "apc", | |||
| | "memcached", "redis", "array" | |||
| | | |||
| */ | |||
| 'driver' => env('SESSION_DRIVER', 'file'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Lifetime | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify the number of minutes that you wish the session | |||
| | to be allowed to remain idle before it expires. If you want them | |||
| | to immediately expire on the browser closing, set that option. | |||
| | | |||
| */ | |||
| 'lifetime' => env('SESSION_LIFETIME', 120), | |||
| 'expire_on_close' => false, | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Encryption | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option allows you to easily specify that all of your session data | |||
| | should be encrypted before it is stored. All encryption will be run | |||
| | automatically by Laravel and you can use the Session like normal. | |||
| | | |||
| */ | |||
| 'encrypt' => false, | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session File Location | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When using the native session driver, we need a location where session | |||
| | files may be stored. A default has been set for you but a different | |||
| | location may be specified. This is only needed for file sessions. | |||
| | | |||
| */ | |||
| 'files' => storage_path('framework/sessions'), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Database Connection | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When using the "database" or "redis" session drivers, you may specify a | |||
| | connection that should be used to manage these sessions. This should | |||
| | correspond to a connection in your database configuration options. | |||
| | | |||
| */ | |||
| 'connection' => env('SESSION_CONNECTION', null), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Database Table | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When using the "database" session driver, you may specify the table we | |||
| | should use to manage the sessions. Of course, a sensible default is | |||
| | provided for you; however, you are free to change this as needed. | |||
| | | |||
| */ | |||
| 'table' => 'sessions', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Cache Store | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | When using the "apc" or "memcached" session drivers, you may specify a | |||
| | cache store that should be used for these sessions. This value must | |||
| | correspond with one of the application's configured cache stores. | |||
| | | |||
| */ | |||
| 'store' => env('SESSION_STORE', null), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Sweeping Lottery | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Some session drivers must manually sweep their storage location to get | |||
| | rid of old sessions from storage. Here are the chances that it will | |||
| | happen on a given request. By default, the odds are 2 out of 100. | |||
| | | |||
| */ | |||
| 'lottery' => [2, 100], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Cookie Name | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may change the name of the cookie used to identify a session | |||
| | instance by ID. The name specified here will get used every time a | |||
| | new session cookie is created by the framework for every driver. | |||
| | | |||
| */ | |||
| 'cookie' => env( | |||
| 'SESSION_COOKIE', | |||
| Str::slug(env('APP_NAME', 'laravel'), '_').'_session' | |||
| ), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Cookie Path | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The session cookie path determines the path for which the cookie will | |||
| | be regarded as available. Typically, this will be the root path of | |||
| | your application but you are free to change this when necessary. | |||
| | | |||
| */ | |||
| 'path' => '/', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Session Cookie Domain | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may change the domain of the cookie used to identify a session | |||
| | in your application. This will determine which domains the cookie is | |||
| | available to in your application. A sensible default has been set. | |||
| | | |||
| */ | |||
| 'domain' => env('SESSION_DOMAIN', null), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | HTTPS Only Cookies | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | By setting this option to true, session cookies will only be sent back | |||
| | to the server if the browser has a HTTPS connection. This will keep | |||
| | the cookie from being sent to you if it can not be done securely. | |||
| | | |||
| */ | |||
| 'secure' => env('SESSION_SECURE_COOKIE', false), | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | HTTP Access Only | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Setting this value to true will prevent JavaScript from accessing the | |||
| | value of the cookie and the cookie will only be accessible through | |||
| | the HTTP protocol. You are free to modify this option if needed. | |||
| | | |||
| */ | |||
| 'http_only' => true, | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Same-Site Cookies | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option determines how your cookies behave when cross-site requests | |||
| | take place, and can be used to mitigate CSRF attacks. By default, we | |||
| | do not enable this as other CSRF protection services are in place. | |||
| | | |||
| | Supported: "lax", "strict" | |||
| | | |||
| */ | |||
| 'same_site' => null, | |||
| ]; | |||
| @ -0,0 +1,36 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | View Storage Paths | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Most templating systems load templates from disk. Here you may specify | |||
| | an array of paths that should be checked for your views. Of course | |||
| | the usual Laravel view path has already been registered for you. | |||
| | | |||
| */ | |||
| 'paths' => [ | |||
| resource_path('views'), | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Compiled View Path | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This option determines where all the compiled Blade templates will be | |||
| | stored for your application. Typically, this is within the storage | |||
| | directory. However, as usual, you are free to change this value. | |||
| | | |||
| */ | |||
| 'compiled' => env( | |||
| 'VIEW_COMPILED_PATH', | |||
| realpath(storage_path('framework/views')) | |||
| ), | |||
| ]; | |||
| @ -0,0 +1 @@ | |||
| *.sqlite | |||
| @ -0,0 +1,9 @@ | |||
| <?php | |||
| use Faker\Generator as Faker; | |||
| $factory->define(App\Instagram::class, function (Faker $faker) { | |||
| return [ | |||
| // | |||
| ]; | |||
| }); | |||
| @ -0,0 +1,24 @@ | |||
| <?php | |||
| use Faker\Generator as Faker; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Model Factories | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This directory should contain each of the model factory definitions for | |||
| | your application. Factories provide a convenient way to generate new | |||
| | model instances for testing / seeding your application's database. | |||
| | | |||
| */ | |||
| $factory->define(App\User::class, function (Faker $faker) { | |||
| return [ | |||
| 'name' => $faker->name, | |||
| 'email' => $faker->unique()->safeEmail, | |||
| 'email_verified_at' => now(), | |||
| 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret | |||
| 'remember_token' => str_random(10), | |||
| ]; | |||
| }); | |||
| @ -0,0 +1,36 @@ | |||
| <?php | |||
| use Illuminate\Support\Facades\Schema; | |||
| use Illuminate\Database\Schema\Blueprint; | |||
| use Illuminate\Database\Migrations\Migration; | |||
| class CreateUsersTable extends Migration | |||
| { | |||
| /** | |||
| * Run the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function up() | |||
| { | |||
| Schema::create('users', function (Blueprint $table) { | |||
| $table->increments('id'); | |||
| $table->string('name'); | |||
| $table->string('email')->unique(); | |||
| $table->timestamp('email_verified_at')->nullable(); | |||
| $table->string('password'); | |||
| $table->rememberToken(); | |||
| $table->timestamps(); | |||
| }); | |||
| } | |||
| /** | |||
| * Reverse the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function down() | |||
| { | |||
| Schema::dropIfExists('users'); | |||
| } | |||
| } | |||
| @ -0,0 +1,32 @@ | |||
| <?php | |||
| use Illuminate\Support\Facades\Schema; | |||
| use Illuminate\Database\Schema\Blueprint; | |||
| use Illuminate\Database\Migrations\Migration; | |||
| class CreatePasswordResetsTable extends Migration | |||
| { | |||
| /** | |||
| * Run the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function up() | |||
| { | |||
| Schema::create('password_resets', function (Blueprint $table) { | |||
| $table->string('email')->index(); | |||
| $table->string('token'); | |||
| $table->timestamp('created_at')->nullable(); | |||
| }); | |||
| } | |||
| /** | |||
| * Reverse the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function down() | |||
| { | |||
| Schema::dropIfExists('password_resets'); | |||
| } | |||
| } | |||
| @ -0,0 +1,37 @@ | |||
| <?php | |||
| use Illuminate\Support\Facades\Schema; | |||
| use Illuminate\Database\Schema\Blueprint; | |||
| use Illuminate\Database\Migrations\Migration; | |||
| class CreateInstagramTable extends Migration | |||
| { | |||
| /** | |||
| * Run the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function up() | |||
| { | |||
| Schema::create('instagram', function (Blueprint $table) { | |||
| $table->increments('id'); | |||
| $table->string("username"); | |||
| $table->string("image_name", 1000); | |||
| $table->string("image_url", 1000); | |||
| $table->tinyInteger("has_downloaded")->default(1); | |||
| $table->tinyInteger("is_uploaded")->default(0); | |||
| $table->timestamps(); | |||
| $table->index(["image_name"], ["idx_image_name"]); | |||
| }); | |||
| } | |||
| /** | |||
| * Reverse the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function down() | |||
| { | |||
| Schema::dropIfExists('instagram'); | |||
| } | |||
| } | |||
| @ -0,0 +1,34 @@ | |||
| <?php | |||
| use Illuminate\Support\Facades\Schema; | |||
| use Illuminate\Database\Schema\Blueprint; | |||
| use Illuminate\Database\Migrations\Migration; | |||
| class AddIndexToInstagram extends Migration | |||
| { | |||
| /** | |||
| * Run the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function up() | |||
| { | |||
| Schema::table('instagram', function (Blueprint $table) { | |||
| // | |||
| // $table->string("image_name", 800); | |||
| $table->index(["image_name"], "idx_image_name"); | |||
| }); | |||
| } | |||
| /** | |||
| * Reverse the migrations. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function down() | |||
| { | |||
| Schema::table('instagram', function (Blueprint $table) { | |||
| // | |||
| }); | |||
| } | |||
| } | |||
| @ -0,0 +1,16 @@ | |||
| <?php | |||
| use Illuminate\Database\Seeder; | |||
| class DatabaseSeeder extends Seeder | |||
| { | |||
| /** | |||
| * Seed the application's database. | |||
| * | |||
| * @return void | |||
| */ | |||
| public function run() | |||
| { | |||
| // $this->call(UsersTableSeeder::class); | |||
| } | |||
| } | |||
| @ -0,0 +1,142 @@ | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/cf5b1831801fa0058d9e5534205bf4ec/5C5EA56E/t58.9793-16/14566177_1177242382329264_6826783511207215104_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/69988f7ad3aa7095824b410a0c2f01a2/5C5E4BD9/t58.9793-16/10000000_1809206119291849_1530330335424806912_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/3c25a454a73082ba9a02aa8e362290cf/5C5E2E5C/t58.9793-16/15291880_1809000816047138_7842325281351139328_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/8d32582a3dd30825b2f3d00144274577/5C5E99E6/t58.9793-16/10000000_414795945576190_4453231416313905152_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/0c47d5f8528b55d9a69c8e9dad927501/5C5E5F0F/t58.9793-16/14531049_1798750320378818_7982896490047602688_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/1992d6472b53e85f64b82820aba676d3/5C5E4C33/t58.9793-16/14331163_718120641670161_645371870480171008_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/b7e4f1e9fe83c167c456b602a3a7bfb2/5C5E18AE/t58.9793-16/14910938_1606148809688055_3567966423848321024_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/6394e7b7c54c6fa7c603e7aaad443596/5C5E678D/t58.9793-16/14854386_1098325556949425_9008072159599263744_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/fb78c21828105f1a2a2df20cbb6234e6/5C5E9A58/t58.9793-16/14595170_558336551021611_1809857931013783552_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/56a81f41a6558a459435165e93ec86b7/5C5E3395/t58.9793-16/14532661_251595145237201_3312417858306179072_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/d07fe50c9f2c3cba3188fdcc972a6dc6/5C5E70F1/t58.9793-16/14534220_1854293408133809_6062624768148897792_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/2d7bc7d0dc0dfda4a9dc7b7d9893febc/5C5E8FD0/t58.9793-16/12427118_1779802965642153_1390013143979130880_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/b063bd054616b793422d527c54f576ca/5CEFC1EA/t51.2885-15/e35/38469053_261561638009496_4739596084442038272_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjg5MjkxMDg4MDQzOQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/cf4e5e692ee554a1319feb666e8fc490/5CF2E10E/t51.2885-15/e35/37997174_2189095101161692_525899345027923968_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjgyMzk2NDc0Mjc3Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/d3edfa2e893b4cbe614ca30552f16ee2/5CF0AD51/t51.2885-15/e35/38676713_2207915302824901_7183747627681316864_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjg3MTM5MzkwOTI2Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/6d86be3100b47445093cbdfe31487820/5CF57C6D/t51.2885-15/e35/38992951_671117826578087_2289422932629258240_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjY5MDY0NDY3NjExMA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/8dca4c54f626f214ed9ad227497ab95e/5CFACB68/t51.2885-15/e35/38268837_1036003603226295_6694315608718180352_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjY4ODc2NTc3MDQ1NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/e3a767e94cb01d727299e98739b0ad57/5CE46F5D/t51.2885-15/e35/37976986_455780324925736_6662844686828306432_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg0MjcyNjY2ODg1OTQwODkxOQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/ac260e9f936d027a153890636cafb325/5CF86455/t51.2885-15/e35/38532824_246553925990700_8043168152659427328_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTgzNzAxODE3MjAxNzA1MzU2Mw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/b9748b930e7ea6adce23f239e8a9e464/5CF4B05E/t51.2885-15/e35/38097132_284242595685426_5016378817971748864_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTgzNzAxODIwNTE0MzUxMTMyNQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/532c9955057068fc3c9fe0e1d321347c/5CDF941C/t51.2885-15/e35/38081734_270529477061984_2784931424078135296_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTgzNzAxODcxNjA4NTIwNDk2MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nz0502/ https://scontent-lax3-1.cdninstagram.com/vp/cc53e133626a6a9c1cf7fbf4d1ae4832/5CF6A8F1/t51.2885-15/e35/38026170_244191052895433_4689386649736445952_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTgzNzAyMTg5MjM0NzgyODg2Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/skuukzky/ https://scontent-lax3-1.cdninstagram.com/vp/71fed26bd428e8c6db41ec50464a3995/5C5E8932/t58.9793-16/10000000_1064873773626512_6521314897265950720_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/skuukzky/ https://scontent-lax3-1.cdninstagram.com/vp/8b464ff85693fd78fea232829cb082da/5C5E5E97/t58.9793-16/14326615_1765080920445967_1004739474_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/angelcandices/ https://scontent-lax3-1.cdninstagram.com/vp/6a741c05b2601f53470b433ac04e27cc/5C5E36E7/t58.9793-16/14272721_1579934142303486_1437273919_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/yoona__lim/ https://scontent-lax3-1.cdninstagram.com/vp/e17d44fd694b5f5fd4f67a0321080927/5C5EB6E5/t58.9793-16/14271324_1651184605195232_1986984554_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/dc5921cc7bc8411fe8a5f2e3a7f691ba/5CFB8F29/t51.2885-15/e35/15802352_1843349735912398_7048275107805921280_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDgwMTU1NzMyOTcxNDE2NQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/d9953d11e37ba7d92d629e8a03c1c79c/5CEDA97E/t51.2885-15/e35/15803161_238390636605375_513816240519643136_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDgwMDkzNDMzMjk2MDk3Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/ca9038e484a56ca5d94f42f6f443f69d/5CED9E3C/t51.2885-15/e35/15802199_270239943393282_4001595543347265536_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDc5Nzc1NTU5NTcyNzQyMg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/a64c13e1d4bc9ab15b15db678e1a649b/5CE18002/t51.2885-15/e35/15876332_419281465070079_7914443958413950976_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDc5NzE2OTQ0MTY4Mjc2OA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/340c4b3f4ad49272cda0f37a06d9836f/5CDE7E5F/t51.2885-15/e35/15876824_1187609461287168_5256974875779661824_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDc5NjI5MTM2NDE5NjAyOA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/fa8b726acbbd6bf88ab87b2c86e1db1a/5CE37655/t51.2885-15/e35/15802237_2014710602089829_1439117440649789440_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDc5NDg3MTI1NjY5NzU5MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/895b01ff15778a830681c0f375583ab6/5CDD1ABA/t51.2885-15/e35/15802065_723631887794320_6781420380159475712_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDU1NjM5NTYwNTIyNjcyOA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/0be73bfdf091b36e94407af2c4f87d03/5CF9919D/t51.2885-15/e35/15877400_171411963340938_5892118779860615168_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=MTQyNDAxNDQ4NDAyOTAzNTkyMg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/4970744e1446598e084930c2b1d792f9/5CE65B71/t51.2885-15/e35/15876031_1531522580208348_4855755781359796224_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyNDAxMDMxMTEzMjY5MzMxOQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/c0dc25468e84118af3cfdd8a0e13be88/5CFDC18E/t51.2885-15/e35/15802710_454043074985524_2739962549553332224_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=MTQyMzI0OTAzMDIwOTQ3NDQzMw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/791a79eba7769d0e6a92d523d78dac5d/5CF0F3A0/t51.2885-15/e35/15877038_226350581158116_3721077841832443904_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=MTQyMjU3NTA4OTQzNDI1MjM4Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/4f5778c61fa32f0bee104cb8d9cfdf83/5D008D8D/t51.2885-15/e35/15802877_1708316329481316_444899122273583104_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=MTQyMTgwNjk0Njg3MzE0Mjc1Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/1b0c906e7b9df28bf440d9e786f807cb/5CFEBE43/t51.2885-15/e35/15877277_1317012031705179_1983898810530660352_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyMTIwOTI3NDk4NjQxMzM0MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/b9492d584da1a029269b1806f932a3a7/5D000468/t51.2885-15/e35/15802844_1103734846438306_1357118522035011584_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQyMDUzMTkzNjU0ODI5MjM3NQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/8f267d565707c8b8bfe1d73e123b6927/5CDA5A42/t51.2885-15/e35/15801841_1833433913601470_4853314053797314560_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxODk2MTMyMDI4NDE4ODU5Nw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/38ce5948ec7e60f88a13bec3692c87d3/5CE8CD33/t51.2885-15/e35/14624380_588769257978899_8046995561225650176_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNjkwOTM0NTc1MzMzMzYyMQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/5c3c782224c72d6d4585a6e42fb706d2/5CE76211/t51.2885-15/e35/15802511_183394218801231_868904310983884800_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNjA1MjA1MDM3NDg5NTkwOA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/852924192c8c25d8dc781343c961d81f/5CEB4738/t51.2885-15/e35/15803809_1831482940474808_7540338743425630208_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNjAzOTMyNDk4MjQ0MDc4OA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/1466cf743674a075bc8b1426d0c7e376/5CFD0CE8/t51.2885-15/e35/15625014_1830257780548262_7995103495772438528_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNTMxOTE0NTAyNTYxMjIwNw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/2d6bb8cc54c47b1e3b661c5579083d7f/5CE3914D/t51.2885-15/e35/15623670_376079599409528_1579046620454977536_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNDg0OTIwMTA0NTI4NDI4NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/f31cb5460f63f26c07bd5b0d767f6946/5CF2BC1C/t51.2885-15/e35/15624122_792096260942824_3485840481575763968_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxNDgyMjQzODc1MTkwNTEyMw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/b79b60de7cce111ac38d6b613a06c55e/5CFB54B5/t51.2885-15/e35/15625040_670257606514388_868957856341164032_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMzg4NzI5ODMyNDE5NzAyMA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/18bbd84c9f8e8cacd45c57d894071d09/5CE09405/t51.2885-15/e35/14624558_1771072096549703_9155177718654959616_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMzg4NjM4Mjg1MDQxNTE1Mw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/ca3fe8b5ff3133fc97404ff5f8072955/5CF627B3/t51.2885-15/e35/15534841_377276459289373_6424001787425980416_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMzgxODI1Nzk0OTcxNDUwNw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/03879ccc855719bd8109d6e4dde638d5/5CE9AFB7/t51.2885-15/e35/15043801_360007694364460_5982391974445973504_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMzAzMTY2MjQyMjI3Mzk4NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/db4afc0799b60ba8c55ca10b123e3536/5CDD14D6/t51.2885-15/e35/15625040_321136491620006_7091380718143537152_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMjc5NDI4NDg2NDYzMjI4MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/355e64aab4473e7ccc1b18539c6b34ce/5CE8A1A2/t51.2885-15/e35/15534638_1683988001893434_3405643580914532352_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQxMTc3NDA3MzEyMjE5OTg2Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/a42133b25f59242e5108f142055602ba/5CDC3E52/t51.2885-15/e35/13696512_598001330378155_499433003_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=8&ig_cache_key=MTMwNzk4MjM4NzY3ODU1MjQ0Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/60c385372e35cede4feffa51852cdcd9/5CEC4DD0/t51.2885-15/e35/13260924_1344797435534312_2042686122_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTI1MzAxNDkzMTQ2MzI2NTA4MA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/vp/3782bbe348793cb55452d62c2e446b14/5CE4400B/t51.2885-15/e15/10919439_690301561088804_313978469_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=ODk4MjI0NjQ5OTgxMTg4Mzkw.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/f94fcdc2b1b3947b2f7fdd67f4e95153/5D0191B7/t51.2885-15/e35/16465140_600602390127856_3049553142392815616_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ1MTQ1OTgzMDU4MDkzMjI5NQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/dfc5a96d33d0e72f8574ab4953263ff6/5CF9EE74/t51.2885-15/e35/16124352_1444695042207431_6780821176387108864_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQzMjQzMjk1NTU3MzUyMzE5Nw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/a8dc06662eba3983bb903b9369c9259e/5CE9B85C/t51.2885-15/e35/12599414_731786936964298_1847018105_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTIyNDk1MTY0NDQxNzYxODc1Mw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/55bbdbe07878ba882ff659ebc65c0952/5CED2137/t51.2885-15/e35/12912648_635116886639536_1981058087_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTIxNTExOTk5NDU2NTM1NzgxMw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/15dd1c54da19f0097a1e7c041de93ace/5CF45956/t51.2885-15/e35/1171601_1491537631149411_280624256_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTExMzY3MjYwNTg5NjQ3MDkzNg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/432b2fd2c61defb4487d440c981d4c25/5CF14307/t51.2885-15/e15/11325470_1011849898833053_1297265185_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=NDY0MzgwMDUwOTY0OTM0NzUz.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/b9571ad4e331e0d6adc5aee541f26ddc/5CFEA54C/t51.2885-15/e15/11313481_890893077615659_607141138_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=NDUyMDE5MDAwOTAyODczNzY3.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/sabrina888888_/ https://scontent-lax3-1.cdninstagram.com/vp/c5a25e0f313d1baa76d1335ca8d3bee7/5CFAF9BF/t51.2885-15/e15/11312080_451248648369636_1987760967_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=NDM1MDI0NDUyOTIyMzA3MzYx.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/siawase726/ https://scontent-lax3-1.cdninstagram.com/vp/2f6cd1de40a62de2eb73a86e2aaed806/5CFAC4DA/t51.2885-15/e35/10958332_896076843801037_1468585150_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTA1MzU2NDg1ODA0NDU0MjQyNg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/claudiashkim/ https://scontent-lax3-1.cdninstagram.com/vp/047194da3ac9ac9bc113d362dcadd4e6/5C5EF036/t58.9793-16/15220360_1176272879075304_9043993908853342208_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/claudiashkim/ https://scontent-lax3-1.cdninstagram.com/vp/c8fd98d74c17d0e1622a65e2a9abd5bd/5C5F4B55/t58.9793-16/14271316_1274572389251691_4198625196661276672_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/claudiashkim/ https://scontent-lax3-1.cdninstagram.com/vp/a87dd7ddc2baa80965fff148805f2c89/5C5F08B6/t58.9793-16/13730093_709050675924293_8240360662543368192_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/claudiashkim/ https://scontent-lax3-1.cdninstagram.com/vp/e64beb9f03192bdaeadd54cc4dc15512/5C5F5074/t58.9793-16/10000000_1782281958721990_358429620_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amberchenslife/ https://scontent-lax3-1.cdninstagram.com/vp/f59b8621a84d84743ca31cdda3e4c8aa/5CFB7548/t51.2885-15/e35/33929630_247778305990425_2724014202111918080_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTgwMjIwMjAyMjk2MDAzODAzNw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amberchenslife/ https://scontent-lax3-1.cdninstagram.com/vp/91d945612aa4209047fcec36ca6b8026/5C5EFE63/t50.2886-16/18315958_755335844634867_5730855793121558528_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amberchenslife/ https://scontent-lax3-1.cdninstagram.com/vp/c28da6a8191828f19ffbc3f994de2e55/5CE41246/t51.2885-15/e15/11282291_682705335185561_1308529157_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=NDE2MzY5MjA4MzE5Mzk2NjIz.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/vousmevoyez/ https://scontent-lax3-1.cdninstagram.com/vp/d90fe372ee2ff619631344cc68443b2e/5C5EF56A/t58.9793-16/13733442_1802590666643674_1970524305_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/1992.ai__/ https://scontent-lax3-1.cdninstagram.com/vp/2588d2b0e47ea4678f13bac15731f35b/5CF7E983/t51.2885-15/e35/41734866_270426883607968_4238513812069679104_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTg4MjAyMzE1NjIxOTYxNDI5Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/vp/4e727a82781b789779f1f57d24c5eb90/5C5F1505/t51.2885-15/e15/p640x640/39327680_472303023254857_2051130042443890688_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/vp/5c2913b2f582e7ce1be1ffe85d54fd1a/5CF875E6/t51.2885-15/e35/29714769_1821430474820354_7574532309508947968_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTEwMjA4NjgzMDY3NjA5MTg4NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/vp/31ff6ee89c4e136fe0f48390d5b9b5bc/5CFDB1B7/t51.2885-15/e35/29416424_262181637655249_3581572214522118144_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTA0MjU4ODMzMDgwNDc0ODk1NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/0d89ec73c35527e33ecb2f3b911d11d0/5CE09B17/t51.2885-15/e35/18949517_140198163205357_3821102403181084672_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTUzNDY4MzkwOTg5MDI3OTA4Ng%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/602ec7fcd7b8b021db65757f6177934b/5C5F4224/t50.2886-16/17863041_1875796359326412_6015489348911235072_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/41cc8d19fc2596805edef9afabff0d7b/5CEDE3AB/t51.2885-15/e35/17495268_270651133382260_1671733792819118080_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ4ODU5OTM5NDM2NTY3MDk5Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/9f7404753080dacc510c3d20faae7599/5CF797E9/t51.2885-15/e35/17437679_187395345108167_5976999574286368768_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ4ODI1OTk5Njk1NjUwNjkwMQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/e9cafdae43912df4f841bfed162c331e/5CEAC7E8/t51.2885-15/e35/17494824_1410223579041928_7848702405842567168_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ4Nzk0OTA2Mzk1Njc0MTUzNQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/6397ed8e649bb3772e6cb8a33dccd042/5C5F4729/t58.9793-16/10000000_263500677400280_816637376490110976_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/99cb3d66a27c8ba85dd23f590fedc68c/5C5ECA78/t58.9793-16/15198927_718439851648010_7273174095234072576_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/51118c7edb1993f90f9db0a520ff5158/5C5F1E37/t58.9793-16/10000000_360421890988194_8844299438785560576_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/e3ebdd755870fb4f0d9b069e2fdaa17f/5C5F4A7C/t58.9793-16/10000000_1810596172549406_705725262024671232_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/37be5c1f97b89dce86ec06f937d3aa0e/5C5ED842/t58.9793-16/10000000_135785026909067_269595969048281088_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/8e28a8fe9dbb63a5c76554afc9344099/5C5F207D/t58.9793-16/10000000_1874469199439420_1654564188606955520_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/43d3883278ebd95a30c119a60b2dff72/5C5F1BA5/t58.9793-16/10000000_1356189451111998_3058387709732061184_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/32e0170593bf6c070bef2f4b6c6dd601/5C5F2EEE/t58.9793-16/10000000_1377378028953383_228472812535283712_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/a7ad0e069c3dd6fbaef37f86a4e19cdc/5C5F580E/t58.9793-16/14548218_1824373231171819_3855957458652495872_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/d36d635a01afde2c566fd4b4004e9285/5C5F48C7/t58.9793-16/10000000_368690823483844_2688645073414914048_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/8503e4ce19676f94cbc5f5b7c7228829/5C5EC85D/t58.9793-16/10000000_205919986519349_742884365586923520_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/05f28138fdb4c7c371fc633dbbbaa225/5C5ED189/t58.9793-16/10000000_1792389154308076_6403792849606803456_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/4b278943ab6031b3ec95bcfcfbbf3106/5C5F0DF3/t58.9793-16/10000000_282577472143601_8567781691853111296_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/03b95d3cd1d14f36c0e181b15ddac71b/5C5EE120/t50.2886-16/15157832_1155554704539974_2811913362114347008_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/d65c56a7c4f1da8ef76a041890ee1a94/5C5EE736/t58.9793-16/10000000_328154504207383_4301495229678092288_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/228b9c37959badff2a661b479aab1f67/5C5EFD7A/t58.9793-16/10000000_1091514700966183_3936269245393928192_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/f57d642f6fa8eb133bf204561f420f19/5C5ED69F/t58.9793-16/10000000_393435277711842_8518959140742103040_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/634aaac746a817fe83466d456ae5a44d/5C5EF25E/t58.9793-16/10000000_1356670541010113_6602414007347314688_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/d17f1519b8a5a1ba44f2f0776dd889d3/5C5EE39E/t58.9793-16/10000000_542419195954929_4983333919416909824_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/d7f370dec0cfd63fe04acd66f80f4889/5C5F5538/t58.9793-16/10000000_1209660279109041_3617291434593353728_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/dbfeefa10ee17ae8b6936911b3de5b76/5C5EE764/t58.9793-16/10000000_347771445555709_377949829193531392_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/9e88f2d460556cd509c8335dcc5d8f2c/5C5F3A6A/t58.9793-16/10000000_516128695253227_152765631_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/20c4dbffc3f44e2736debf550245c034/5C600F0A/t58.9793-16/10000000_101326173662606_969297131_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/f8274a5ae3ff2e3d7094c778c5b5e813/5C5EF8B7/t58.9793-16/10000000_1570159863292841_524510773_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/23f9b63e9958b325b4a66f3edfc1ca02/5C5ED940/t58.9793-16/10000000_1593095714319484_1011341630_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/b5962b04c2b987e285aa51bf13f59865/5C5F4DB5/t58.9793-16/10000000_552481541613831_1673493496_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/6ccce7d258e61817afde7bcbcc86eddb/5C5F1CFE/t58.9793-16/14158397_1053084294812770_1664026975_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/06b850eb528d1c2f50ca2e55194a080a/5CF78849/t51.2885-15/e35/13724724_289632448054760_797144357_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTI5ODAzNzQ4ODUzOTA5MDk3NA%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/1df9d1a9e1ab1f273869e4babcc15849/5CF9C717/t51.2885-15/e35/12142396_955212974540699_1991452248_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTEwODY0MDMzMjg4OTU2Mjg0MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-lax3-1.cdninstagram.com/vp/6b61737e1b9990192df7a76d1a7fd0c8/5CDE7D35/t51.2885-15/e15/10895321_687391148025811_459001431_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&ig_cache_key=ODk1MjEyMzc4NjM0NjkwNTA1.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/8169d064d06dc85a6d58dace589a2e84/5C5ED570/t51.2885-15/e15/25009053_157016658251000_8029175956662910976_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/62a6515b015b031ef489541c67bad051/5C5F04DB/t58.9793-16/15035208_1143892485648469_4974773199192457216_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/a7d2f34c812666f1b57ee996df4f51a5/5C5F1BF8/t58.9793-16/14949770_199523447123510_332853583118598144_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/71d53871fe1324c20ac8d32bf9451c7d/5C5F1725/t58.9793-16/14085012_1616644631969162_6308034118496026624_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/c4c6389c5770220668021807907eecf7/5C5EDBD0/t58.9793-16/14157359_577841269086927_7795295836136538112_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/taeyeon_ss/ https://scontent-lax3-1.cdninstagram.com/vp/6cffdadb5e3cd6fd9f440cca71d2ec72/5C5F3DB7/t58.9793-16/14215138_1100577443352662_35509177_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/seojuhyun_s/ https://scontent-lax3-1.cdninstagram.com/vp/3b0bf08f8549bdf75a09023ba071a116/5C5F17A1/t58.9793-16/14606222_1816646368611944_2709304652087689216_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/f8b5b9d8470cebaadffdd96773689035/5C5F4E2E/t58.9793-16/14566177_1177242382329264_6826783511207215104_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/e66d2035be75efa191b25330a95fdb7c/5C5EF499/t58.9793-16/10000000_1809206119291849_1530330335424806912_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/6c5ea5dfbca1fae9b9e56c05f0514e62/5C5F7FDC/t58.9793-16/15291880_1809000816047138_7842325281351139328_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/482724a1cc9d8c1cf34dc6bd5f6c1d92/5C5F42A6/t58.9793-16/10000000_414795945576190_4453231416313905152_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/c654bcec077895b09466993a11f0d989/5C5F07CF/t58.9793-16/14531049_1798750320378818_7982896490047602688_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/985cf38de3278c077eaf76a146192831/5C5EF4F3/t58.9793-16/14331163_718120641670161_645371870480171008_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/9868d05e21cbd8607f67e1b910a2ec2e/5C5F6A2E/t58.9793-16/14910938_1606148809688055_3567966423848321024_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/06c0e0a7ae7c67fa64781f84ef40f492/5C5F104D/t58.9793-16/14854386_1098325556949425_9008072159599263744_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/91ae99cd8876267ec4b299c2fe608b1c/5C5F4318/t58.9793-16/14595170_558336551021611_1809857931013783552_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/1e6f65712178737e45752a12a775b8e3/5C5EDC55/t58.9793-16/14532661_251595145237201_3312417858306179072_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/4b8b895e3e832427837ce7d6cca6f250/5C5F19B1/t58.9793-16/14534220_1854293408133809_6062624768148897792_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/vp/99399a01bfc5a0419dfe098b03b69890/5C5F3890/t58.9793-16/12427118_1779802965642153_1390013143979130880_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/withmeii/ https://scontent-lax3-1.cdninstagram.com/vp/66267225a40b796ea8c148036a621b19/5C5F6C5C/t50.2886-16/13959236_1834727930091770_1960602867_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cho_hyunyoung/ https://scontent-lax3-1.cdninstagram.com/vp/c3a2d47430cae0493cc340c8be98a6cd/5C5F38ED/t58.9793-16/10000000_1566741366686551_4571044572561408000_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cho_hyunyoung/ https://scontent-lax3-1.cdninstagram.com/vp/70a2bc8c468f3eb0235986a45def20db/5C5F2FD6/t58.9793-16/10000000_574930686041833_5876580395637538816_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cho_hyunyoung/ https://scontent-lax3-1.cdninstagram.com/vp/b8983001fc87ff2211e086c60d26cd6b/5C5EEEED/t58.9793-16/10000000_1761335077437730_1815297083_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/6226df4fb73c109c2091eb01e3cea948/5CE0EE6E/t51.2885-15/e35/18722356_1862144960720632_3322089450346905600_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTUyNDU5ODY3NDI2NDI5MTQ2MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/5b1a3bfa6a4e532f6c5f7b9bc48abe27/5CDA3443/t51.2885-15/e35/18512695_442148152801001_6577302351474851840_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTUxNzM1NzI1NDI0MzUxOTcxNw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/3de8bb4fd560cfe7c243f52a302f8b39/5CF39076/t51.2885-15/e35/17076913_189132304923182_8059736646133743616_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ3MjI4NjcxNjE4MjU0MzUwMw%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/34e0a0e9f70ccc0ae413fe9a906dadf0/5CE25531/t51.2885-15/e35/16789576_1408955825802257_5817971838852005888_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQ1OTM2NzQxMzA1NzI5NTQ1MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/0a63faf024490f01d5db68ca09fb7dca/5CE4A3C6/t51.2885-15/e35/16230773_695829260577736_2155358461947281408_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTQzOTg4ODUxMTg4NDEwNDg0Mg%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cr5p__br/ https://scontent-lax3-1.cdninstagram.com/vp/d194d01565c6206bad7c32139c025169/5CDE7F28/t51.2885-15/e35/12599327_212715262404837_268917221_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&se=7&ig_cache_key=MTE2OTUwNDQyMzA3NDY5MDc2MQ%3D%3D.2 | |||
| /Users/shixuesen/OneDrive/Pictures/instagram/cxxsomi/ https://scontent-lax3-1.cdninstagram.com/vp/150b1f72876c6c53d858b07040149ebf/5C5F8CC9/t50.2886-16/20269113_129616134311695_1250320273274568704_n.mp4?_nc_ht=scontent-lax3-1.cdninstagram.com | |||
| @ -0,0 +1,25 @@ | |||
| { | |||
| "private": true, | |||
| "scripts": { | |||
| "dev": "npm run development", | |||
| "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", | |||
| "watch": "npm run development -- --watch", | |||
| "watch-poll": "npm run watch -- --watch-poll", | |||
| "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", | |||
| "prod": "npm run production", | |||
| "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" | |||
| }, | |||
| "devDependencies": { | |||
| "axios": "^0.18", | |||
| "bootstrap": "^4.0.0", | |||
| "cross-env": "^5.1", | |||
| "jquery": "^3.2", | |||
| "laravel-mix": "^4.0.7", | |||
| "lodash": "^4.17.5", | |||
| "popper.js": "^1.12", | |||
| "resolve-url-loader": "^2.3.1", | |||
| "sass": "^1.15.2", | |||
| "sass-loader": "^7.1.0", | |||
| "vue": "^2.5.17" | |||
| } | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <phpunit backupGlobals="false" | |||
| backupStaticAttributes="false" | |||
| bootstrap="vendor/autoload.php" | |||
| colors="true" | |||
| convertErrorsToExceptions="true" | |||
| convertNoticesToExceptions="true" | |||
| convertWarningsToExceptions="true" | |||
| processIsolation="false" | |||
| stopOnFailure="false"> | |||
| <testsuites> | |||
| <testsuite name="Unit"> | |||
| <directory suffix="Test.php">./tests/Unit</directory> | |||
| </testsuite> | |||
| <testsuite name="Feature"> | |||
| <directory suffix="Test.php">./tests/Feature</directory> | |||
| </testsuite> | |||
| </testsuites> | |||
| <filter> | |||
| <whitelist processUncoveredFilesFromWhitelist="true"> | |||
| <directory suffix=".php">./app</directory> | |||
| </whitelist> | |||
| </filter> | |||
| <php> | |||
| <env name="APP_ENV" value="testing"/> | |||
| <env name="BCRYPT_ROUNDS" value="4"/> | |||
| <env name="CACHE_DRIVER" value="array"/> | |||
| <env name="MAIL_DRIVER" value="array"/> | |||
| <env name="QUEUE_CONNECTION" value="sync"/> | |||
| <env name="SESSION_DRIVER" value="array"/> | |||
| </php> | |||
| </phpunit> | |||
| @ -0,0 +1,21 @@ | |||
| <IfModule mod_rewrite.c> | |||
| <IfModule mod_negotiation.c> | |||
| Options -MultiViews -Indexes | |||
| </IfModule> | |||
| RewriteEngine On | |||
| # Handle Authorization Header | |||
| RewriteCond %{HTTP:Authorization} . | |||
| RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] | |||
| # Redirect Trailing Slashes If Not A Folder... | |||
| RewriteCond %{REQUEST_FILENAME} !-d | |||
| RewriteCond %{REQUEST_URI} (.+)/$ | |||
| RewriteRule ^ %1 [L,R=301] | |||
| # Handle Front Controller... | |||
| RewriteCond %{REQUEST_FILENAME} !-d | |||
| RewriteCond %{REQUEST_FILENAME} !-f | |||
| RewriteRule ^ index.php [L] | |||
| </IfModule> | |||
| @ -0,0 +1,60 @@ | |||
| <?php | |||
| /** | |||
| * Laravel - A PHP Framework For Web Artisans | |||
| * | |||
| * @package Laravel | |||
| * @author Taylor Otwell <taylor@laravel.com> | |||
| */ | |||
| define('LARAVEL_START', microtime(true)); | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Register The Auto Loader | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Composer provides a convenient, automatically generated class loader for | |||
| | our application. We just need to utilize it! We'll simply require it | |||
| | into the script here so that we don't have to worry about manual | |||
| | loading any of our classes later on. It feels great to relax. | |||
| | | |||
| */ | |||
| require __DIR__.'/../vendor/autoload.php'; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Turn On The Lights | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | We need to illuminate PHP development, so let us turn on the lights. | |||
| | This bootstraps the framework and gets it ready for use, then it | |||
| | will load up this application so that we can run it and send | |||
| | the responses back to the browser and delight our users. | |||
| | | |||
| */ | |||
| $app = require_once __DIR__.'/../bootstrap/app.php'; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Run The Application | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Once we have the application, we can handle the incoming request | |||
| | through the kernel, and send the associated response back to | |||
| | the client's browser allowing them to enjoy the creative | |||
| | and wonderful application we have prepared for them. | |||
| | | |||
| */ | |||
| $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); | |||
| $response = $kernel->handle( | |||
| $request = Illuminate\Http\Request::capture() | |||
| ); | |||
| $response->send(); | |||
| $kernel->terminate($request, $response); | |||
| @ -0,0 +1,2 @@ | |||
| User-agent: * | |||
| Disallow: | |||
| @ -0,0 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024"><defs><linearGradient id="a" x1="50.31%" x2="50%" y1="74.74%" y2="0%"><stop offset="0%" stop-color="#FFE98A"/><stop offset="67.7%" stop-color="#B63E59"/><stop offset="100%" stop-color="#68126F"/></linearGradient><circle id="c" cx="603" cy="682" r="93"/><filter id="b" width="203.2%" height="203.2%" x="-51.6%" y="-51.6%" filterUnits="objectBoundingBox"><feOffset in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="32"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><linearGradient id="d" x1="49.48%" x2="49.87%" y1="11.66%" y2="77.75%"><stop offset="0%" stop-color="#F7EAB9"/><stop offset="100%" stop-color="#E5765E"/></linearGradient><linearGradient id="e" x1="91.59%" x2="66.97%" y1="5.89%" y2="100%"><stop offset="0%" stop-color="#A22A50"/><stop offset="100%" stop-color="#EE7566"/></linearGradient><linearGradient id="f" x1="49.48%" x2="49.61%" y1="11.66%" y2="98.34%"><stop offset="0%" stop-color="#F7EAB9"/><stop offset="100%" stop-color="#E5765E"/></linearGradient><linearGradient id="g" x1="78.5%" x2="36.4%" y1="106.76%" y2="26.41%"><stop offset="0%" stop-color="#A22A50"/><stop offset="100%" stop-color="#EE7566"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><rect width="1024" height="1024" fill="url(#a)"/><use fill="black" filter="url(#b)" xlink:href="#c"/><use fill="#FFF6CB" xlink:href="#c"/><g fill="#FFFFFF" opacity=".3" transform="translate(14 23)"><circle cx="203" cy="255" r="3" fill-opacity=".4"/><circle cx="82" cy="234" r="2"/><circle cx="22" cy="264" r="2" opacity=".4"/><circle cx="113" cy="65" r="3"/><circle cx="202" cy="2" r="2"/><circle cx="2" cy="114" r="2"/><circle cx="152" cy="144" r="2"/><circle cx="362" cy="224" r="2"/><circle cx="453" cy="65" r="3" opacity=".4"/><circle cx="513" cy="255" r="3"/><circle cx="593" cy="115" r="3"/><circle cx="803" cy="5" r="3" opacity=".4"/><circle cx="502" cy="134" r="2"/><circle cx="832" cy="204" r="2"/><circle cx="752" cy="114" r="2"/><circle cx="933" cy="255" r="3" opacity=".4"/><circle cx="703" cy="225" r="3"/><circle cx="903" cy="55" r="3"/><circle cx="982" cy="144" r="2"/><circle cx="632" cy="14" r="2"/></g><g transform="translate(0 550)"><path fill="#8E2C15" d="M259 5.47c0 5.33 3.33 9.5 10 12.5s9.67 9.16 9 18.5h1c.67-6.31 1-11.8 1-16.47 8.67 0 13.33-1.33 14-4 .67 4.98 1.67 8.3 3 9.97 1.33 1.66 2 5.16 2 10.5h1c0-5.65.33-9.64 1-11.97 1-3.5 4-10.03-1-14.53S295 7 290 3c-5-4-10-3-13 2s-5 7-9 7-5-3.53-5-5.53c0-2 2-5-1.5-5s-7.5 0-7.5 2c0 1.33 1.67 2 5 2z"/><path fill="url(#d)" d="M1024 390H0V105.08C77.3 71.4 155.26 35 297.4 35c250 0 250.76 125.25 500 125 84.03-.08 160.02-18.2 226.6-40.93V390z"/><path fill="url(#d)" d="M1024 442H0V271.82c137.51-15.4 203.1-50.49 356.67-60.1C555.24 199.3 606.71 86.59 856.74 86.59c72.78 0 124.44 10.62 167.26 25.68V442z"/><path fill="url(#e)" d="M1024 112.21V412H856.91c99.31-86.5 112.63-140.75 39.97-162.78C710.24 192.64 795.12 86.58 856.9 86.58c72.7 0 124.3 10.6 167.09 25.63z"/><path fill="url(#e)" d="M1024 285.32V412H857c99.31-86.6 112.63-140.94 39.97-163L1024 285.32z"/><path fill="url(#f)" d="M0 474V223.93C67.12 190.69 129.55 155 263 155c250 0 331.46 162.6 530 175 107.42 6.71 163-26.77 231-58.92V474H0z"/><path fill="url(#e)" d="M353.02 474H0V223.93C67.12 190.69 129.55 155 263 155c71.14 0 151.5 12.76 151.5 70.5 0 54.5-45.5 79.72-112.5 109-82.26 35.95-54.57 111.68 51.02 139.5z"/><path fill="url(#g)" d="M353.02 474H0v-14.8l302-124.7c-82.26 35.95-54.57 111.68 51.02 139.5z"/></g><g fill="#FFFFFF" opacity=".2" transform="translate(288 523)"><circle cx="250" cy="110" r="110"/><circle cx="420" cy="78" r="60"/><circle cx="70" cy="220" r="70"/></g><g fill="#FFFFFF" fill-rule="nonzero" opacity=".08" transform="translate(135 316)"><path d="M10 80.22a14.2 14.2 0 0 1 20 0 14.2 14.2 0 0 0 20 0l20-19.86a42.58 42.58 0 0 1 60 0l15 14.9a21.3 21.3 0 0 0 30 0 21.3 21.3 0 0 1 30 0l.9.9A47.69 47.69 0 0 1 220 110H0v-5.76c0-9.02 3.6-17.67 10-24.02zm559.1-66.11l5.9-5.86c11.07-11 28.93-11 40 0l10 9.94a14.19 14.19 0 0 0 20 0 14.19 14.19 0 0 1 20 0 16.36 16.36 0 0 0 21.3 1.5l8.7-6.47a33.47 33.47 0 0 1 40 0l4.06 3.03A39.6 39.6 0 0 1 755 48H555a47.77 47.77 0 0 1 14.1-33.89z"/></g></g></svg> | |||
| @ -0,0 +1,33 @@ | |||
| /** | |||
| * First we will load all of this project's JavaScript dependencies which | |||
| * includes Vue and other libraries. It is a great starting point when | |||
| * building robust, powerful web applications using Vue and Laravel. | |||
| */ | |||
| require('./bootstrap'); | |||
| window.Vue = require('vue'); | |||
| /** | |||
| * The following block of code may be used to automatically register your | |||
| * Vue components. It will recursively scan this directory for the Vue | |||
| * components and automatically register them with their "basename". | |||
| * | |||
| * Eg. ./components/ExampleComponent.vue -> <example-component></example-component> | |||
| */ | |||
| // const files = require.context('./', true, /\.vue$/i) | |||
| // files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default)) | |||
| Vue.component('example-component', require('./components/ExampleComponent.vue').default); | |||
| /** | |||
| * Next, we will create a fresh Vue application instance and attach it to | |||
| * the page. Then, you may begin adding components to this application | |||
| * or customize the JavaScript scaffolding to fit your unique needs. | |||
| */ | |||
| const app = new Vue({ | |||
| el: '#app' | |||
| }); | |||
| @ -0,0 +1,56 @@ | |||
| window._ = require('lodash'); | |||
| /** | |||
| * We'll load jQuery and the Bootstrap jQuery plugin which provides support | |||
| * for JavaScript based Bootstrap features such as modals and tabs. This | |||
| * code may be modified to fit the specific needs of your application. | |||
| */ | |||
| try { | |||
| window.Popper = require('popper.js').default; | |||
| window.$ = window.jQuery = require('jquery'); | |||
| require('bootstrap'); | |||
| } catch (e) {} | |||
| /** | |||
| * We'll load the axios HTTP library which allows us to easily issue requests | |||
| * to our Laravel back-end. This library automatically handles sending the | |||
| * CSRF token as a header based on the value of the "XSRF" token cookie. | |||
| */ | |||
| window.axios = require('axios'); | |||
| window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; | |||
| /** | |||
| * Next we will register the CSRF Token as a common header with Axios so that | |||
| * all outgoing HTTP requests automatically have it attached. This is just | |||
| * a simple convenience so we don't have to attach every token manually. | |||
| */ | |||
| let token = document.head.querySelector('meta[name="csrf-token"]'); | |||
| if (token) { | |||
| window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; | |||
| } else { | |||
| console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); | |||
| } | |||
| /** | |||
| * Echo exposes an expressive API for subscribing to channels and listening | |||
| * for events that are broadcast by Laravel. Echo and event broadcasting | |||
| * allows your team to easily build robust real-time web applications. | |||
| */ | |||
| // import Echo from 'laravel-echo' | |||
| // window.Pusher = require('pusher-js'); | |||
| // window.Echo = new Echo({ | |||
| // broadcaster: 'pusher', | |||
| // key: process.env.MIX_PUSHER_APP_KEY, | |||
| // cluster: process.env.MIX_PUSHER_APP_CLUSTER, | |||
| // encrypted: true | |||
| // }); | |||
| @ -0,0 +1,23 @@ | |||
| <template> | |||
| <div class="container"> | |||
| <div class="row justify-content-center"> | |||
| <div class="col-md-8"> | |||
| <div class="card card-default"> | |||
| <div class="card-header">Example Component</div> | |||
| <div class="card-body"> | |||
| I'm an example component. | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| mounted() { | |||
| console.log('Component mounted.') | |||
| } | |||
| } | |||
| </script> | |||
| @ -0,0 +1,19 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Authentication Language Lines | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The following language lines are used during authentication for various | |||
| | messages that we need to display to the user. You are free to modify | |||
| | these language lines according to your application's requirements. | |||
| | | |||
| */ | |||
| 'failed' => 'These credentials do not match our records.', | |||
| 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', | |||
| ]; | |||
| @ -0,0 +1,19 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Pagination Language Lines | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The following language lines are used by the paginator library to build | |||
| | the simple pagination links. You are free to change them to anything | |||
| | you want to customize your views to better match your application. | |||
| | | |||
| */ | |||
| 'previous' => '« Previous', | |||
| 'next' => 'Next »', | |||
| ]; | |||
| @ -0,0 +1,22 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Password Reset Language Lines | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The following language lines are the default lines which match reasons | |||
| | that are given by the password broker for a password update attempt | |||
| | has failed, such as for an invalid token or invalid new password. | |||
| | | |||
| */ | |||
| 'password' => 'Passwords must be at least six characters and match the confirmation.', | |||
| 'reset' => 'Your password has been reset!', | |||
| 'sent' => 'We have e-mailed your password reset link!', | |||
| 'token' => 'This password reset token is invalid.', | |||
| 'user' => "We can't find a user with that e-mail address.", | |||
| ]; | |||
| @ -0,0 +1,149 @@ | |||
| <?php | |||
| return [ | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Validation Language Lines | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The following language lines contain the default error messages used by | |||
| | the validator class. Some of these rules have multiple versions such | |||
| | as the size rules. Feel free to tweak each of these messages here. | |||
| | | |||
| */ | |||
| 'accepted' => 'The :attribute must be accepted.', | |||
| 'active_url' => 'The :attribute is not a valid URL.', | |||
| 'after' => 'The :attribute must be a date after :date.', | |||
| 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', | |||
| 'alpha' => 'The :attribute may only contain letters.', | |||
| 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', | |||
| 'alpha_num' => 'The :attribute may only contain letters and numbers.', | |||
| 'array' => 'The :attribute must be an array.', | |||
| 'before' => 'The :attribute must be a date before :date.', | |||
| 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', | |||
| 'between' => [ | |||
| 'numeric' => 'The :attribute must be between :min and :max.', | |||
| 'file' => 'The :attribute must be between :min and :max kilobytes.', | |||
| 'string' => 'The :attribute must be between :min and :max characters.', | |||
| 'array' => 'The :attribute must have between :min and :max items.', | |||
| ], | |||
| 'boolean' => 'The :attribute field must be true or false.', | |||
| 'confirmed' => 'The :attribute confirmation does not match.', | |||
| 'date' => 'The :attribute is not a valid date.', | |||
| 'date_equals' => 'The :attribute must be a date equal to :date.', | |||
| 'date_format' => 'The :attribute does not match the format :format.', | |||
| 'different' => 'The :attribute and :other must be different.', | |||
| 'digits' => 'The :attribute must be :digits digits.', | |||
| 'digits_between' => 'The :attribute must be between :min and :max digits.', | |||
| 'dimensions' => 'The :attribute has invalid image dimensions.', | |||
| 'distinct' => 'The :attribute field has a duplicate value.', | |||
| 'email' => 'The :attribute must be a valid email address.', | |||
| 'exists' => 'The selected :attribute is invalid.', | |||
| 'file' => 'The :attribute must be a file.', | |||
| 'filled' => 'The :attribute field must have a value.', | |||
| 'gt' => [ | |||
| 'numeric' => 'The :attribute must be greater than :value.', | |||
| 'file' => 'The :attribute must be greater than :value kilobytes.', | |||
| 'string' => 'The :attribute must be greater than :value characters.', | |||
| 'array' => 'The :attribute must have more than :value items.', | |||
| ], | |||
| 'gte' => [ | |||
| 'numeric' => 'The :attribute must be greater than or equal :value.', | |||
| 'file' => 'The :attribute must be greater than or equal :value kilobytes.', | |||
| 'string' => 'The :attribute must be greater than or equal :value characters.', | |||
| 'array' => 'The :attribute must have :value items or more.', | |||
| ], | |||
| 'image' => 'The :attribute must be an image.', | |||
| 'in' => 'The selected :attribute is invalid.', | |||
| 'in_array' => 'The :attribute field does not exist in :other.', | |||
| 'integer' => 'The :attribute must be an integer.', | |||
| 'ip' => 'The :attribute must be a valid IP address.', | |||
| 'ipv4' => 'The :attribute must be a valid IPv4 address.', | |||
| 'ipv6' => 'The :attribute must be a valid IPv6 address.', | |||
| 'json' => 'The :attribute must be a valid JSON string.', | |||
| 'lt' => [ | |||
| 'numeric' => 'The :attribute must be less than :value.', | |||
| 'file' => 'The :attribute must be less than :value kilobytes.', | |||
| 'string' => 'The :attribute must be less than :value characters.', | |||
| 'array' => 'The :attribute must have less than :value items.', | |||
| ], | |||
| 'lte' => [ | |||
| 'numeric' => 'The :attribute must be less than or equal :value.', | |||
| 'file' => 'The :attribute must be less than or equal :value kilobytes.', | |||
| 'string' => 'The :attribute must be less than or equal :value characters.', | |||
| 'array' => 'The :attribute must not have more than :value items.', | |||
| ], | |||
| 'max' => [ | |||
| 'numeric' => 'The :attribute may not be greater than :max.', | |||
| 'file' => 'The :attribute may not be greater than :max kilobytes.', | |||
| 'string' => 'The :attribute may not be greater than :max characters.', | |||
| 'array' => 'The :attribute may not have more than :max items.', | |||
| ], | |||
| 'mimes' => 'The :attribute must be a file of type: :values.', | |||
| 'mimetypes' => 'The :attribute must be a file of type: :values.', | |||
| 'min' => [ | |||
| 'numeric' => 'The :attribute must be at least :min.', | |||
| 'file' => 'The :attribute must be at least :min kilobytes.', | |||
| 'string' => 'The :attribute must be at least :min characters.', | |||
| 'array' => 'The :attribute must have at least :min items.', | |||
| ], | |||
| 'not_in' => 'The selected :attribute is invalid.', | |||
| 'not_regex' => 'The :attribute format is invalid.', | |||
| 'numeric' => 'The :attribute must be a number.', | |||
| 'present' => 'The :attribute field must be present.', | |||
| 'regex' => 'The :attribute format is invalid.', | |||
| 'required' => 'The :attribute field is required.', | |||
| 'required_if' => 'The :attribute field is required when :other is :value.', | |||
| 'required_unless' => 'The :attribute field is required unless :other is in :values.', | |||
| 'required_with' => 'The :attribute field is required when :values is present.', | |||
| 'required_with_all' => 'The :attribute field is required when :values are present.', | |||
| 'required_without' => 'The :attribute field is required when :values is not present.', | |||
| 'required_without_all' => 'The :attribute field is required when none of :values are present.', | |||
| 'same' => 'The :attribute and :other must match.', | |||
| 'size' => [ | |||
| 'numeric' => 'The :attribute must be :size.', | |||
| 'file' => 'The :attribute must be :size kilobytes.', | |||
| 'string' => 'The :attribute must be :size characters.', | |||
| 'array' => 'The :attribute must contain :size items.', | |||
| ], | |||
| 'starts_with' => 'The :attribute must start with one of the following: :values', | |||
| 'string' => 'The :attribute must be a string.', | |||
| 'timezone' => 'The :attribute must be a valid zone.', | |||
| 'unique' => 'The :attribute has already been taken.', | |||
| 'uploaded' => 'The :attribute failed to upload.', | |||
| 'url' => 'The :attribute format is invalid.', | |||
| 'uuid' => 'The :attribute must be a valid UUID.', | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Custom Validation Language Lines | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may specify custom validation messages for attributes using the | |||
| | convention "attribute.rule" to name the lines. This makes it quick to | |||
| | specify a specific custom language line for a given attribute rule. | |||
| | | |||
| */ | |||
| 'custom' => [ | |||
| 'attribute-name' => [ | |||
| 'rule-name' => 'custom-message', | |||
| ], | |||
| ], | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Custom Validation Attributes | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | The following language lines are used to swap our attribute placeholder | |||
| | with something more reader friendly such as "E-Mail Address" instead | |||
| | of "email". This simply helps us make our message more expressive. | |||
| | | |||
| */ | |||
| 'attributes' => [], | |||
| ]; | |||
| @ -0,0 +1,20 @@ | |||
| // Body | |||
| $body-bg: #f8fafc; | |||
| // Typography | |||
| $font-family-sans-serif: "Nunito", sans-serif; | |||
| $font-size-base: 0.9rem; | |||
| $line-height-base: 1.6; | |||
| // Colors | |||
| $blue: #3490dc; | |||
| $indigo: #6574cd; | |||
| $purple: #9561e2; | |||
| $pink: #f66D9b; | |||
| $red: #e3342f; | |||
| $orange: #f6993f; | |||
| $yellow: #ffed4a; | |||
| $green: #38c172; | |||
| $teal: #4dc0b5; | |||
| $cyan: #6cb2eb; | |||
| @ -0,0 +1,14 @@ | |||
| // Fonts | |||
| @import url('https://fonts.googleapis.com/css?family=Nunito'); | |||
| // Variables | |||
| @import 'variables'; | |||
| // Bootstrap | |||
| @import '~bootstrap/scss/bootstrap'; | |||
| .navbar-laravel { | |||
| background-color: #fff; | |||
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); | |||
| } | |||
| @ -0,0 +1,27 @@ | |||
| @extends('layout') | |||
| @section('content') | |||
| <h1>Calendar</h1> | |||
| <table class="table"> | |||
| <thead> | |||
| <tr> | |||
| <th scope="col">Organizer</th> | |||
| <th scope="col">Subject</th> | |||
| <th scope="col">Start</th> | |||
| <th scope="col">End</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| @isset($events) | |||
| @foreach($events as $event) | |||
| <tr> | |||
| <td>{{ $event->getOrganizer()->getEmailAddress()->getName() }}</td> | |||
| <td>{{ $event->getSubject() }}</td> | |||
| <td>{{ \Carbon\Carbon::parse($event->getStart()->getDateTime())->format('n/j/y g:i A') }}</td> | |||
| <td>{{ \Carbon\Carbon::parse($event->getEnd()->getDateTime())->format('n/j/y g:i A') }}</td> | |||
| </tr> | |||
| @endforeach | |||
| @endif | |||
| </tbody> | |||
| </table> | |||
| @endsection | |||
| @ -0,0 +1,85 @@ | |||
| <!DOCTYPE html> | |||
| <html> | |||
| <head> | |||
| <title>PHP Graph Tutorial</title> | |||
| <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" | |||
| integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous"> | |||
| <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" | |||
| integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous"> | |||
| <link rel="stylesheet" href="{{ asset('/css/app.css') }}"> | |||
| <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> | |||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" | |||
| integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> | |||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" | |||
| integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script> | |||
| </head> | |||
| <body> | |||
| <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> | |||
| <div class="container"> | |||
| <a href="/" class="navbar-brand">PHP Graph Tutorial</a> | |||
| <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" | |||
| aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> | |||
| <span class="navbar-toggler-icon"></span> | |||
| </button> | |||
| <div class="collapse navbar-collapse" id="navbarCollapse"> | |||
| <ul class="navbar-nav mr-auto"> | |||
| <li class="nav-item"> | |||
| <a href="/" class="nav-link {{$_SERVER['REQUEST_URI'] == '/' ? ' active' : ''}}">Home</a> | |||
| </li> | |||
| @if(isset($userName)) | |||
| <li class="nav-item" data-turbolinks="false"> | |||
| <a href="/calendar" class="nav-link{{$_SERVER['REQUEST_URI'] == '/calendar' ? ' active' : ''}}">Calendar</a> | |||
| </li> | |||
| <li class="nav-item" data-turbolinks="false"> | |||
| <a href="/instagram" class="nav-link{{$_SERVER['REQUEST_URI'] == '/instagram' ? ' active' : ''}}">Instagram</a> | |||
| </li> | |||
| @endif | |||
| </ul> | |||
| <ul class="navbar-nav justify-content-end"> | |||
| <li class="nav-item"> | |||
| <a class="nav-link" href="https://developer.microsoft.com/graph/docs/concepts/overview" target="_blank"> | |||
| <i class="fas fa-external-link-alt mr-1"></i>Docs | |||
| </a> | |||
| </li> | |||
| @if(isset($userName)) | |||
| <li class="nav-item dropdown"> | |||
| <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" | |||
| aria-haspopup="true" aria-expanded="false"> | |||
| @if(isset($user_avatar)) | |||
| <img src="{{ $user_avatar }}" class="rounded-circle align-self-center mr-2" style="width: 32px;"> | |||
| @else | |||
| <i class="far fa-user-circle fa-lg rounded-circle align-self-center mr-2" style="width: 32px;"></i> | |||
| @endif | |||
| </a> | |||
| <div class="dropdown-menu dropdown-menu-right"> | |||
| <h5 class="dropdown-item-text mb-0">{{ $userName }}</h5> | |||
| <p class="dropdown-item-text text-muted mb-0">{{ $userEmail }}</p> | |||
| <div class="dropdown-divider"></div> | |||
| <a href="/signout" class="dropdown-item">Sign Out</a> | |||
| </div> | |||
| </li> | |||
| @else | |||
| <li class="nav-item"> | |||
| <a href="/signin" class="nav-link">Sign In</a> | |||
| </li> | |||
| @endif | |||
| </ul> | |||
| </div> | |||
| </div> | |||
| </nav> | |||
| <main role="main" class="container"> | |||
| @if(session('error')) | |||
| <div class="alert alert-danger" role="alert"> | |||
| <p class="mb-3">{{ session('error') }}</p> | |||
| @if(session('errorDetail')) | |||
| <pre class="alert-pre border bg-light p-2"><code>{{ session('errorDetail') }}</code></pre> | |||
| @endif | |||
| </div> | |||
| @endif | |||
| @yield('content') | |||
| </main> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,14 @@ | |||
| @extends('layout') | |||
| @section('content') | |||
| <div class="jumbotron"> | |||
| <h1>PHP Graph Tutorial</h1> | |||
| <p class="lead">This sample app shows how to use the Microsoft Graph API to access Outlook and OneDrive data from PHP</p> | |||
| @if(isset($userName)) | |||
| <h4>Welcome {{ $userName }}!</h4> | |||
| <p>Use the navigation bar at the top of the page to get started.</p> | |||
| @else | |||
| <a href="/signin" class="btn btn-primary btn-large">Click here to sign in</a> | |||
| @endif | |||
| </div> | |||
| @endsection | |||
| @ -0,0 +1,18 @@ | |||
| <?php | |||
| use Illuminate\Http\Request; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | API Routes | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here is where you can register API routes for your application. These | |||
| | routes are loaded by the RouteServiceProvider within a group which | |||
| | is assigned the "api" middleware group. Enjoy building your API! | |||
| | | |||
| */ | |||
| Route::middleware('auth:api')->get('/user', function (Request $request) { | |||
| return $request->user(); | |||
| }); | |||
| @ -0,0 +1,16 @@ | |||
| <?php | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Broadcast Channels | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | Here you may register all of the event broadcasting channels that your | |||
| | application supports. The given channel authorization callbacks are | |||
| | used to check if an authenticated user can listen to the channel. | |||
| | | |||
| */ | |||
| Broadcast::channel('App.User.{id}', function ($user, $id) { | |||
| return (int) $user->id === (int) $id; | |||
| }); | |||
| @ -0,0 +1,18 @@ | |||
| <?php | |||
| use Illuminate\Foundation\Inspiring; | |||
| /* | |||
| |-------------------------------------------------------------------------- | |||
| | Console Routes | |||
| |-------------------------------------------------------------------------- | |||
| | | |||
| | This file is where you may define all of your Closure based console | |||
| | commands. Each Closure is bound to a command instance allowing a | |||
| | simple approach to interacting with each command's IO methods. | |||
| | | |||
| */ | |||
| Artisan::command('inspire', function () { | |||
| $this->comment(Inspiring::quote()); | |||
| })->describe('Display an inspiring quote'); | |||
| @ -0,0 +1,8 @@ | |||
| <?php | |||
| Route::get('/', 'HomeController@welcome'); | |||
| Route::get('/signin', 'AuthController@signin'); | |||
| Route::get('/callback', 'AuthController@callback'); | |||
| Route::get('/signout', 'AuthController@signout'); | |||
| Route::get('/calendar', 'CalendarController@calendar'); | |||
| Route::get('/instagram', 'InstagramController@index'); | |||
| @ -0,0 +1,21 @@ | |||
| <?php | |||
| /** | |||
| * Laravel - A PHP Framework For Web Artisans | |||
| * | |||
| * @package Laravel | |||
| * @author Taylor Otwell <taylor@laravel.com> | |||
| */ | |||
| $uri = urldecode( | |||
| parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) | |||
| ); | |||
| // This file allows us to emulate Apache's "mod_rewrite" functionality from the | |||
| // built-in PHP web server. This provides a convenient way to test a Laravel | |||
| // application without having installed a "real" web server software here. | |||
| if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { | |||
| return false; | |||
| } | |||
| require_once __DIR__.'/public/index.php'; | |||