├── .gitignore ├── README.MD ├── composer.json ├── composer.lock ├── config └── logicboxes.php ├── phpcs.xml ├── phpunit.xml ├── src ├── Api │ ├── Base.php │ ├── Contact.php │ ├── Customer.php │ ├── Dns.php │ ├── Domain.php │ ├── Requests │ │ └── Contact.php │ └── Reseller.php ├── Facades │ └── Logicboxes.php ├── Helpers │ └── functions.php ├── Logicboxes.php └── LogicboxesServiceProvider.php └── tests ├── BaseTrait.php ├── CustomerTest.php ├── DomainTest.php ├── TestCase.php └── config.ini.example /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | /node_modules 3 | /public/storage 4 | /public/panel 5 | Homestead.yaml 6 | Homestead.json 7 | .env 8 | .env_backup 9 | .idea 10 | .DS_Store 11 | .php_cs.cache 12 | storage/debugbar 13 | npm-debug.log 14 | /tests/config.ini 15 | .vcode 16 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | [![Total Downloads](https://poser.pugx.org/netinternet/logicboxes/downloads)](https://packagist.org/packages/netinternet/logicboxes) 2 | [![Latest Stable Version](https://poser.pugx.org/netinternet/logicboxes/v/stable)](https://packagist.org/packages/netinternet/logicboxes) 3 | 4 | # Logicboxes Package 5 | 6 | LogicBoxes package provides most of the LogicBoxes API functionality and compatible company apis like resellerclub, whois.com and many more. 7 | 8 | This package mainly developed for laravel package but you can use as a standalone package. 9 | 10 | ## Installation 11 | 12 | ``` 13 | composer require netinternet/logicboxes 14 | ``` 15 | 16 | Package should be autodiscover by default but if you are using older versions of laravel you should change config/app.php with below; 17 | 18 | Add this in providers array; 19 | 20 | ```js 21 | Netinternet\Logicboxes\LogicboxesServiceProvider::class, 22 | ``` 23 | 24 | Add this in aliases array; 25 | ```js 26 | 'Logicboxes' => Netinternet\Logicboxes\Facades\Logicboxes::class, 27 | ``` 28 | 29 | ## Configuration 30 | 31 | Use command below and choose logicboxes option when asked. It will create logicboxes.php in config directory. 32 | 33 | ```php 34 | php artisan vendor:publish 35 | ``` 36 | 37 | You can also create this file manually and paste below content in file; 38 | 39 | ```php 40 | env('LOGICBOXES_ENV', 'test'), 43 | 'auth-userid' => env('LOGICBOXES_AUTHID'), 44 | 'api-key' => env('LOGICBOXES_APIKEY') 45 | ]; 46 | ``` 47 | 48 | As you can see by default package uses environment variables. Be sure that use test mode when development mode. We strongly recommend to create [LogicBox Demo Account](http://cp.onlyfordemo.net/servlet/ResellerSignupServlet?&validatenow=false) 49 | 50 | ## Usage 51 | 52 | You can choose to use facade or helper function. We will use helper functions for examples in this documentation. 53 | 54 | 55 | ```php 56 | use Logicboxes; 57 | // With Facade 58 | public function myMethod() 59 | { 60 | return Logicboxes::domain('domain-name.tld')->ns(); 61 | } 62 | ``` 63 | or with helper 64 | ```php 65 | public function myMethod() 66 | { 67 | return logicboxes()->domain('domain-name.tld')->ns(); 68 | } 69 | ``` 70 | 71 | 72 | ## Avalaible Methods 73 | 74 | ```php 75 | // get domain nameservers. 76 | logicboxes()->domain('domain-name.tld')->nameservers(); 77 | // get domain nameservers short. 78 | logicboxes()->domain('domain-name.tld')->ns(); 79 | // get domains all details. 80 | logicboxes()->domain('domain-name.tld')->details(); 81 | // get domains status 82 | logicboxes()->domain('domain-name.tld')->status(); 83 | // get domains order details 84 | logicboxes()->domain('domain-name.tld')->order(); 85 | // get domains dnssec details 86 | logicboxes()->domain('domain-name.tld')->dnssec(); 87 | // get domains contact id list. 88 | logicboxes()->domain('domain-name.tld')->contact()->ids(); 89 | // get domains registrant contact details 90 | logicboxes()->domain('domain-name.tld')->contact()->registrant(); 91 | // get domains admin contact details 92 | logicboxes()->domain('domain-name.tld')->contact()->admin(); 93 | // get domains tech contact details 94 | logicboxes()->domain('domain-name.tld')->contact()->tech(); 95 | // get domains billing contact details 96 | logicboxes()->domain('domain-name.tld')->contact()->billing(); 97 | // check for domain 98 | logicboxes()->domain('domain-name')->check(['com','net']) 99 | // first parameter is array of tlds and second parameter domain suggessions as a boolean. Default is false. 100 | // and you can also set domain index as third parameter for getting immediate domain status without result 101 | //object ```logicboxes()->domain('domain-name')->check(['com','net'],false,1)``` 102 | 103 | // get domain order id 104 | logicboxes()->domain('domain-name.tld')->orderId(); 105 | // set enable theft protection 106 | logicboxes()->domain('domain-name.tld')->enableTheftProtection(); 107 | // set disable theft protection 108 | logicboxes()->domain('domain-name.tld')->disableTheftProtection(); 109 | // modify domain nameservers 110 | logicboxes()->domain('domain-name.tld')->modifyNameServers((array) $ns); 111 | // delete this domain 112 | logicboxes()->domain('domain-name.tld')->delete(); 113 | // cancel domain transfer process 114 | logicboxes()->domain('domain-name.tld')->cancelTransfer(); 115 | // register domain 116 | logicboxes()->domain('domain-name.tld')->register([ 117 | 'years' => $years, 118 | 'ns' => (array) $ns, 119 | 'customer-id' => $customerId, 120 | 'reg-contact-id' => $regContactId, 121 | 'admin-contact-id' => $adminContactId, 122 | 'tech-contact-id' => $techContactId, 123 | 'billing-contact-id' => $billingContactId, 124 | 'invoice-option' => 'KeepInvoice', 125 | 'purchase-privacy' => $purchasePrivacy, 126 | 'protect-privacy' => $protectPrivacy, 127 | ]); 128 | 129 | // Domain transfer 130 | logicboxes()->domain('domain-name.tld')->transfer([ 131 | 'auth-code' => $authCode, 132 | 'years' => $years, 133 | 'ns' => (array)$ns, 134 | 'customer-id' => $customerId, 135 | 'reg-contact-id' => $regContactId, 136 | 'admin-contact-id' => $adminContactId, 137 | 'tech-contact-id' => $techContactId, 138 | 'billing-contact-id' => $billingContactId, 139 | 'invoice-option' => $invoiceOption, 140 | 'purchase-privacy' => $purchasePrivacy, 141 | 'protect-privacy' => $protectPrivacy, 142 | ]); 143 | 144 | // set Auth Code 145 | logicboxes()->domain('domain-name.tld')->authCode('authcode'); 146 | 147 | // modify Auth Code 148 | logicboxes()->domain('domain-name.tld')->modifyAuthCode('authcode'); 149 | 150 | // modify Auth Code 151 | logicboxes()->domain('domain-name.tld')->validateTransferRequest(); 152 | 153 | // renew domain ($date => epochtime) 154 | logicboxes()->domain('domain-name.tld')->renew($years, $date, $invoiceOption, true); 155 | // $purchasePrivacy is default false 156 | 157 | // deafult customer nameservers 158 | logicboxes()->domain()->customerDefaultNameServers($customerId); 159 | 160 | // Check premium 161 | logicboxes()->domain('domain-name.tld')->isDomainPremium(); 162 | 163 | // add new child nameserver 164 | logicboxes()->domain('domain-name.tld')->addChildNs('ns1.domain.com', ['0.0.0.0', '0.0.0.1']); 165 | 166 | // get lock applied list 167 | logicboxes()->domain('domain-name.tld')->getListLockApplied(); 168 | 169 | // set suspend 170 | logicboxes()->domain('domain-name.tld')->suspend('reason text'); 171 | // set unsuspend 172 | logicboxes()->domain('domain-name.tld')->unSuspend(); 173 | 174 | ``` 175 | 176 | #### Customer 177 | 178 | ```php 179 | // Creating a customer 180 | logicboxes()->customer()->create([ 181 | 'username' => $this->faker->email, 182 | 'passwd' => 'Qs3jiA5fd8mq4', 183 | 'name' => $this->faker->name, 184 | 'company' => $this->faker->company, 185 | 'address-line-1' => $this->faker->streetAddress, 186 | 'city' => $this->faker->city, 187 | 'state' => $this->faker->state, 188 | 'country' => $this->faker->countryCode, 189 | 'zipcode' => $this->faker->postcode, 190 | 'phone-cc' => 90, 191 | 'phone' => 5555555555, 192 | 'lang-pref' => 'en' 193 | ]); 194 | 195 | // getting a customer by email or id 196 | logicboxes()->customer()->get('app@yourdomain.com') 197 | //or by id 198 | logicboxes()->customer()->get(17939294) 199 | // Changing customers password 200 | logicboxes()->customer()->get('app@yourdomain.com','myNew8CharPassword') 201 | // Change customer 202 | logicboxes()->customer()->moveProduct("app@yourdomain.com", 'old-customer-id', 'new-customer-id, 'old-contact'); 203 | ``` 204 | 205 | ## Test Configuration 206 | - You should first open the LogicBox test account [LogicBox Demo Account Link](http://cp.onlyfordemo.net/servlet/ResellerSignupServlet?&validatenow=false) 207 | - Copy example config file: 208 | ```sh 209 | cp tests/config.ini.example tests/config.ini 210 | ``` 211 | - Change credentials in tests/config.ini file. 212 | - Run phpunit: 213 | ```sh 214 | $ vendor/phpunit/phpunit/phpunit 215 | ``` 216 | 217 | ## Contributing 218 | 1. Fork it ( https://github.com/netinternet/logicboxes-api/ ) 219 | 2. Create your feature branch (git checkout -b my-new-feature) 220 | 3. Commit your changes (git commit -am 'Add some feature') 221 | 4. Push to the branch (git push origin my-new-feature) 222 | 5. Create a new Pull Request 223 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "netinternet/logicboxes", 3 | "description": "Laravel logicboxes package", 4 | "keywords": [ 5 | "laravel", 6 | "logicboxes", 7 | "domain", 8 | "registrar" 9 | ], 10 | "license": "MIT", 11 | "authors": [ 12 | { 13 | "name": "Hakan ERSU", 14 | "email": "hakanersu@gmail.com" 15 | }, 16 | { 17 | "name": "Baris ESEN", 18 | "email": "barisesennn@gmail.com" 19 | } 20 | ], 21 | "require": { 22 | "php": ">=5.4.0", 23 | "illuminate/support": ">=5.4", 24 | "illuminate/console": ">=5.4", 25 | "illuminate/filesystem": ">=5.4", 26 | "symfony/class-loader": "^2.3|^3.0" 27 | }, 28 | "require-dev": { 29 | "illuminate/config": ">=5.4", 30 | "illuminate/view": ">=5.4", 31 | "fzaninotto/faker": "~1.4", 32 | "phpunit/phpunit": "^6.4", 33 | "guzzlehttp/guzzle": "~6.0", 34 | "orchestra/testbench": "~3.0", 35 | "squizlabs/php_codesniffer": "^3.4" 36 | }, 37 | "autoload": { 38 | "psr-4": { 39 | "Netinternet\\Logicboxes\\": "src", 40 | "Netinternet\\Logicboxes\\Test\\": "tests/" 41 | }, 42 | "files" : [ 43 | "src/Helpers/functions.php" 44 | ] 45 | }, 46 | "extra": { 47 | "branch-alias": { 48 | "dev-master": "1.0-dev" 49 | }, 50 | "laravel": { 51 | "providers": [ 52 | "Netinternet\\Logicboxes\\LogicboxesServiceProvider" 53 | ], 54 | "aliases": { 55 | "Logicboxes": "Netinternet\\Logicboxes\\Facades\\Logicboxes" 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "d0e5a860ca77a1eb8059228cda54b003", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "v1.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 20 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Roman Borschel", 47 | "email": "roman@code-factory.org" 48 | }, 49 | { 50 | "name": "Benjamin Eberlei", 51 | "email": "kontakt@beberlei.de" 52 | }, 53 | { 54 | "name": "Guilherme Blanco", 55 | "email": "guilhermeblanco@gmail.com" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2018-01-09T20:05:19+00:00" 75 | }, 76 | { 77 | "name": "doctrine/lexer", 78 | "version": "v1.0.1", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/doctrine/lexer.git", 82 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 87 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "php": ">=5.3.2" 92 | }, 93 | "type": "library", 94 | "extra": { 95 | "branch-alias": { 96 | "dev-master": "1.0.x-dev" 97 | } 98 | }, 99 | "autoload": { 100 | "psr-0": { 101 | "Doctrine\\Common\\Lexer\\": "lib/" 102 | } 103 | }, 104 | "notification-url": "https://packagist.org/downloads/", 105 | "license": [ 106 | "MIT" 107 | ], 108 | "authors": [ 109 | { 110 | "name": "Roman Borschel", 111 | "email": "roman@code-factory.org" 112 | }, 113 | { 114 | "name": "Guilherme Blanco", 115 | "email": "guilhermeblanco@gmail.com" 116 | }, 117 | { 118 | "name": "Johannes Schmitt", 119 | "email": "schmittjoh@gmail.com" 120 | } 121 | ], 122 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 123 | "homepage": "http://www.doctrine-project.org", 124 | "keywords": [ 125 | "lexer", 126 | "parser" 127 | ], 128 | "time": "2014-09-09T13:34:57+00:00" 129 | }, 130 | { 131 | "name": "egulias/email-validator", 132 | "version": "2.1.7", 133 | "source": { 134 | "type": "git", 135 | "url": "https://github.com/egulias/EmailValidator.git", 136 | "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" 137 | }, 138 | "dist": { 139 | "type": "zip", 140 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", 141 | "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", 142 | "shasum": "" 143 | }, 144 | "require": { 145 | "doctrine/lexer": "^1.0.1", 146 | "php": ">= 5.5" 147 | }, 148 | "require-dev": { 149 | "dominicsayers/isemail": "dev-master", 150 | "phpunit/phpunit": "^4.8.35||^5.7||^6.0", 151 | "satooshi/php-coveralls": "^1.0.1" 152 | }, 153 | "suggest": { 154 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 155 | }, 156 | "type": "library", 157 | "extra": { 158 | "branch-alias": { 159 | "dev-master": "2.0.x-dev" 160 | } 161 | }, 162 | "autoload": { 163 | "psr-4": { 164 | "Egulias\\EmailValidator\\": "EmailValidator" 165 | } 166 | }, 167 | "notification-url": "https://packagist.org/downloads/", 168 | "license": [ 169 | "MIT" 170 | ], 171 | "authors": [ 172 | { 173 | "name": "Eduardo Gulias Davis" 174 | } 175 | ], 176 | "description": "A library for validating emails against several RFCs", 177 | "homepage": "https://github.com/egulias/EmailValidator", 178 | "keywords": [ 179 | "email", 180 | "emailvalidation", 181 | "emailvalidator", 182 | "validation", 183 | "validator" 184 | ], 185 | "time": "2018-12-04T22:38:24+00:00" 186 | }, 187 | { 188 | "name": "erusev/parsedown", 189 | "version": "1.7.1", 190 | "source": { 191 | "type": "git", 192 | "url": "https://github.com/erusev/parsedown.git", 193 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" 194 | }, 195 | "dist": { 196 | "type": "zip", 197 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", 198 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", 199 | "shasum": "" 200 | }, 201 | "require": { 202 | "ext-mbstring": "*", 203 | "php": ">=5.3.0" 204 | }, 205 | "require-dev": { 206 | "phpunit/phpunit": "^4.8.35" 207 | }, 208 | "type": "library", 209 | "autoload": { 210 | "psr-0": { 211 | "Parsedown": "" 212 | } 213 | }, 214 | "notification-url": "https://packagist.org/downloads/", 215 | "license": [ 216 | "MIT" 217 | ], 218 | "authors": [ 219 | { 220 | "name": "Emanuil Rusev", 221 | "email": "hello@erusev.com", 222 | "homepage": "http://erusev.com" 223 | } 224 | ], 225 | "description": "Parser for Markdown.", 226 | "homepage": "http://parsedown.org", 227 | "keywords": [ 228 | "markdown", 229 | "parser" 230 | ], 231 | "time": "2018-03-08T01:11:30+00:00" 232 | }, 233 | { 234 | "name": "laravel/framework", 235 | "version": "v5.5.45", 236 | "source": { 237 | "type": "git", 238 | "url": "https://github.com/laravel/framework.git", 239 | "reference": "52c79ecf54b6168a54730ccb6c4c9f3561732a80" 240 | }, 241 | "dist": { 242 | "type": "zip", 243 | "url": "https://api.github.com/repos/laravel/framework/zipball/52c79ecf54b6168a54730ccb6c4c9f3561732a80", 244 | "reference": "52c79ecf54b6168a54730ccb6c4c9f3561732a80", 245 | "shasum": "" 246 | }, 247 | "require": { 248 | "doctrine/inflector": "~1.1", 249 | "erusev/parsedown": "~1.7", 250 | "ext-mbstring": "*", 251 | "ext-openssl": "*", 252 | "league/flysystem": "^1.0.8", 253 | "monolog/monolog": "~1.12", 254 | "mtdowling/cron-expression": "~1.0", 255 | "nesbot/carbon": "^1.26.0", 256 | "php": ">=7.0", 257 | "psr/container": "~1.0", 258 | "psr/simple-cache": "^1.0", 259 | "ramsey/uuid": "~3.0", 260 | "swiftmailer/swiftmailer": "~6.0", 261 | "symfony/console": "~3.3", 262 | "symfony/debug": "~3.3", 263 | "symfony/finder": "~3.3", 264 | "symfony/http-foundation": "~3.3", 265 | "symfony/http-kernel": "~3.3", 266 | "symfony/process": "~3.3", 267 | "symfony/routing": "~3.3", 268 | "symfony/var-dumper": "~3.3", 269 | "tijsverkoyen/css-to-inline-styles": "~2.2", 270 | "vlucas/phpdotenv": "~2.2" 271 | }, 272 | "replace": { 273 | "illuminate/auth": "self.version", 274 | "illuminate/broadcasting": "self.version", 275 | "illuminate/bus": "self.version", 276 | "illuminate/cache": "self.version", 277 | "illuminate/config": "self.version", 278 | "illuminate/console": "self.version", 279 | "illuminate/container": "self.version", 280 | "illuminate/contracts": "self.version", 281 | "illuminate/cookie": "self.version", 282 | "illuminate/database": "self.version", 283 | "illuminate/encryption": "self.version", 284 | "illuminate/events": "self.version", 285 | "illuminate/filesystem": "self.version", 286 | "illuminate/hashing": "self.version", 287 | "illuminate/http": "self.version", 288 | "illuminate/log": "self.version", 289 | "illuminate/mail": "self.version", 290 | "illuminate/notifications": "self.version", 291 | "illuminate/pagination": "self.version", 292 | "illuminate/pipeline": "self.version", 293 | "illuminate/queue": "self.version", 294 | "illuminate/redis": "self.version", 295 | "illuminate/routing": "self.version", 296 | "illuminate/session": "self.version", 297 | "illuminate/support": "self.version", 298 | "illuminate/translation": "self.version", 299 | "illuminate/validation": "self.version", 300 | "illuminate/view": "self.version", 301 | "tightenco/collect": "<5.5.33" 302 | }, 303 | "require-dev": { 304 | "aws/aws-sdk-php": "~3.0", 305 | "doctrine/dbal": "~2.5", 306 | "filp/whoops": "^2.1.4", 307 | "mockery/mockery": "~1.0", 308 | "orchestra/testbench-core": "3.5.*", 309 | "pda/pheanstalk": "~3.0", 310 | "phpunit/phpunit": "~6.0", 311 | "predis/predis": "^1.1.1", 312 | "symfony/css-selector": "~3.3", 313 | "symfony/dom-crawler": "~3.3" 314 | }, 315 | "suggest": { 316 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", 317 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", 318 | "ext-pcntl": "Required to use all features of the queue worker.", 319 | "ext-posix": "Required to use all features of the queue worker.", 320 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 321 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", 322 | "laravel/tinker": "Required to use the tinker console command (~1.0).", 323 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", 324 | "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).", 325 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", 326 | "nexmo/client": "Required to use the Nexmo transport (~1.0).", 327 | "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", 328 | "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", 329 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", 330 | "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.3).", 331 | "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", 332 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." 333 | }, 334 | "type": "library", 335 | "extra": { 336 | "branch-alias": { 337 | "dev-master": "5.5-dev" 338 | } 339 | }, 340 | "autoload": { 341 | "files": [ 342 | "src/Illuminate/Foundation/helpers.php", 343 | "src/Illuminate/Support/helpers.php" 344 | ], 345 | "psr-4": { 346 | "Illuminate\\": "src/Illuminate/" 347 | } 348 | }, 349 | "notification-url": "https://packagist.org/downloads/", 350 | "license": [ 351 | "MIT" 352 | ], 353 | "authors": [ 354 | { 355 | "name": "Taylor Otwell", 356 | "email": "taylor@laravel.com" 357 | } 358 | ], 359 | "description": "The Laravel Framework.", 360 | "homepage": "https://laravel.com", 361 | "keywords": [ 362 | "framework", 363 | "laravel" 364 | ], 365 | "time": "2019-01-28T20:53:19+00:00" 366 | }, 367 | { 368 | "name": "league/flysystem", 369 | "version": "1.0.50", 370 | "source": { 371 | "type": "git", 372 | "url": "https://github.com/thephpleague/flysystem.git", 373 | "reference": "dab4e7624efa543a943be978008f439c333f2249" 374 | }, 375 | "dist": { 376 | "type": "zip", 377 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dab4e7624efa543a943be978008f439c333f2249", 378 | "reference": "dab4e7624efa543a943be978008f439c333f2249", 379 | "shasum": "" 380 | }, 381 | "require": { 382 | "ext-fileinfo": "*", 383 | "php": ">=5.5.9" 384 | }, 385 | "conflict": { 386 | "league/flysystem-sftp": "<1.0.6" 387 | }, 388 | "require-dev": { 389 | "phpspec/phpspec": "^3.4", 390 | "phpunit/phpunit": "^5.7.10" 391 | }, 392 | "suggest": { 393 | "ext-fileinfo": "Required for MimeType", 394 | "ext-ftp": "Allows you to use FTP server storage", 395 | "ext-openssl": "Allows you to use FTPS server storage", 396 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 397 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 398 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 399 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 400 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 401 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 402 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 403 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 404 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 405 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 406 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 407 | }, 408 | "type": "library", 409 | "extra": { 410 | "branch-alias": { 411 | "dev-master": "1.1-dev" 412 | } 413 | }, 414 | "autoload": { 415 | "psr-4": { 416 | "League\\Flysystem\\": "src/" 417 | } 418 | }, 419 | "notification-url": "https://packagist.org/downloads/", 420 | "license": [ 421 | "MIT" 422 | ], 423 | "authors": [ 424 | { 425 | "name": "Frank de Jonge", 426 | "email": "info@frenky.net" 427 | } 428 | ], 429 | "description": "Filesystem abstraction: Many filesystems, one API.", 430 | "keywords": [ 431 | "Cloud Files", 432 | "WebDAV", 433 | "abstraction", 434 | "aws", 435 | "cloud", 436 | "copy.com", 437 | "dropbox", 438 | "file systems", 439 | "files", 440 | "filesystem", 441 | "filesystems", 442 | "ftp", 443 | "rackspace", 444 | "remote", 445 | "s3", 446 | "sftp", 447 | "storage" 448 | ], 449 | "time": "2019-02-01T08:50:36+00:00" 450 | }, 451 | { 452 | "name": "monolog/monolog", 453 | "version": "1.24.0", 454 | "source": { 455 | "type": "git", 456 | "url": "https://github.com/Seldaek/monolog.git", 457 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" 458 | }, 459 | "dist": { 460 | "type": "zip", 461 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 462 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 463 | "shasum": "" 464 | }, 465 | "require": { 466 | "php": ">=5.3.0", 467 | "psr/log": "~1.0" 468 | }, 469 | "provide": { 470 | "psr/log-implementation": "1.0.0" 471 | }, 472 | "require-dev": { 473 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 474 | "doctrine/couchdb": "~1.0@dev", 475 | "graylog2/gelf-php": "~1.0", 476 | "jakub-onderka/php-parallel-lint": "0.9", 477 | "php-amqplib/php-amqplib": "~2.4", 478 | "php-console/php-console": "^3.1.3", 479 | "phpunit/phpunit": "~4.5", 480 | "phpunit/phpunit-mock-objects": "2.3.0", 481 | "ruflin/elastica": ">=0.90 <3.0", 482 | "sentry/sentry": "^0.13", 483 | "swiftmailer/swiftmailer": "^5.3|^6.0" 484 | }, 485 | "suggest": { 486 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 487 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 488 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 489 | "ext-mongo": "Allow sending log messages to a MongoDB server", 490 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 491 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", 492 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 493 | "php-console/php-console": "Allow sending log messages to Google Chrome", 494 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 495 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 496 | "sentry/sentry": "Allow sending log messages to a Sentry server" 497 | }, 498 | "type": "library", 499 | "extra": { 500 | "branch-alias": { 501 | "dev-master": "2.0.x-dev" 502 | } 503 | }, 504 | "autoload": { 505 | "psr-4": { 506 | "Monolog\\": "src/Monolog" 507 | } 508 | }, 509 | "notification-url": "https://packagist.org/downloads/", 510 | "license": [ 511 | "MIT" 512 | ], 513 | "authors": [ 514 | { 515 | "name": "Jordi Boggiano", 516 | "email": "j.boggiano@seld.be", 517 | "homepage": "http://seld.be" 518 | } 519 | ], 520 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 521 | "homepage": "http://github.com/Seldaek/monolog", 522 | "keywords": [ 523 | "log", 524 | "logging", 525 | "psr-3" 526 | ], 527 | "time": "2018-11-05T09:00:11+00:00" 528 | }, 529 | { 530 | "name": "mtdowling/cron-expression", 531 | "version": "v1.2.1", 532 | "source": { 533 | "type": "git", 534 | "url": "https://github.com/mtdowling/cron-expression.git", 535 | "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" 536 | }, 537 | "dist": { 538 | "type": "zip", 539 | "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", 540 | "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", 541 | "shasum": "" 542 | }, 543 | "require": { 544 | "php": ">=5.3.2" 545 | }, 546 | "require-dev": { 547 | "phpunit/phpunit": "~4.0|~5.0" 548 | }, 549 | "type": "library", 550 | "autoload": { 551 | "psr-4": { 552 | "Cron\\": "src/Cron/" 553 | } 554 | }, 555 | "notification-url": "https://packagist.org/downloads/", 556 | "license": [ 557 | "MIT" 558 | ], 559 | "authors": [ 560 | { 561 | "name": "Michael Dowling", 562 | "email": "mtdowling@gmail.com", 563 | "homepage": "https://github.com/mtdowling" 564 | } 565 | ], 566 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 567 | "keywords": [ 568 | "cron", 569 | "schedule" 570 | ], 571 | "time": "2017-01-23T04:29:33+00:00" 572 | }, 573 | { 574 | "name": "nesbot/carbon", 575 | "version": "1.36.2", 576 | "source": { 577 | "type": "git", 578 | "url": "https://github.com/briannesbitt/Carbon.git", 579 | "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" 580 | }, 581 | "dist": { 582 | "type": "zip", 583 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", 584 | "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", 585 | "shasum": "" 586 | }, 587 | "require": { 588 | "php": ">=5.3.9", 589 | "symfony/translation": "~2.6 || ~3.0 || ~4.0" 590 | }, 591 | "require-dev": { 592 | "phpunit/phpunit": "^4.8.35 || ^5.7" 593 | }, 594 | "suggest": { 595 | "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", 596 | "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." 597 | }, 598 | "type": "library", 599 | "extra": { 600 | "laravel": { 601 | "providers": [ 602 | "Carbon\\Laravel\\ServiceProvider" 603 | ] 604 | } 605 | }, 606 | "autoload": { 607 | "psr-4": { 608 | "": "src/" 609 | } 610 | }, 611 | "notification-url": "https://packagist.org/downloads/", 612 | "license": [ 613 | "MIT" 614 | ], 615 | "authors": [ 616 | { 617 | "name": "Brian Nesbitt", 618 | "email": "brian@nesbot.com", 619 | "homepage": "http://nesbot.com" 620 | } 621 | ], 622 | "description": "A simple API extension for DateTime.", 623 | "homepage": "http://carbon.nesbot.com", 624 | "keywords": [ 625 | "date", 626 | "datetime", 627 | "time" 628 | ], 629 | "time": "2018-12-28T10:07:33+00:00" 630 | }, 631 | { 632 | "name": "paragonie/random_compat", 633 | "version": "v9.99.99", 634 | "source": { 635 | "type": "git", 636 | "url": "https://github.com/paragonie/random_compat.git", 637 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 638 | }, 639 | "dist": { 640 | "type": "zip", 641 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 642 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 643 | "shasum": "" 644 | }, 645 | "require": { 646 | "php": "^7" 647 | }, 648 | "require-dev": { 649 | "phpunit/phpunit": "4.*|5.*", 650 | "vimeo/psalm": "^1" 651 | }, 652 | "suggest": { 653 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 654 | }, 655 | "type": "library", 656 | "notification-url": "https://packagist.org/downloads/", 657 | "license": [ 658 | "MIT" 659 | ], 660 | "authors": [ 661 | { 662 | "name": "Paragon Initiative Enterprises", 663 | "email": "security@paragonie.com", 664 | "homepage": "https://paragonie.com" 665 | } 666 | ], 667 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 668 | "keywords": [ 669 | "csprng", 670 | "polyfill", 671 | "pseudorandom", 672 | "random" 673 | ], 674 | "time": "2018-07-02T15:55:56+00:00" 675 | }, 676 | { 677 | "name": "psr/container", 678 | "version": "1.0.0", 679 | "source": { 680 | "type": "git", 681 | "url": "https://github.com/php-fig/container.git", 682 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 683 | }, 684 | "dist": { 685 | "type": "zip", 686 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 687 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 688 | "shasum": "" 689 | }, 690 | "require": { 691 | "php": ">=5.3.0" 692 | }, 693 | "type": "library", 694 | "extra": { 695 | "branch-alias": { 696 | "dev-master": "1.0.x-dev" 697 | } 698 | }, 699 | "autoload": { 700 | "psr-4": { 701 | "Psr\\Container\\": "src/" 702 | } 703 | }, 704 | "notification-url": "https://packagist.org/downloads/", 705 | "license": [ 706 | "MIT" 707 | ], 708 | "authors": [ 709 | { 710 | "name": "PHP-FIG", 711 | "homepage": "http://www.php-fig.org/" 712 | } 713 | ], 714 | "description": "Common Container Interface (PHP FIG PSR-11)", 715 | "homepage": "https://github.com/php-fig/container", 716 | "keywords": [ 717 | "PSR-11", 718 | "container", 719 | "container-interface", 720 | "container-interop", 721 | "psr" 722 | ], 723 | "time": "2017-02-14T16:28:37+00:00" 724 | }, 725 | { 726 | "name": "psr/log", 727 | "version": "1.1.0", 728 | "source": { 729 | "type": "git", 730 | "url": "https://github.com/php-fig/log.git", 731 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" 732 | }, 733 | "dist": { 734 | "type": "zip", 735 | "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 736 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 737 | "shasum": "" 738 | }, 739 | "require": { 740 | "php": ">=5.3.0" 741 | }, 742 | "type": "library", 743 | "extra": { 744 | "branch-alias": { 745 | "dev-master": "1.0.x-dev" 746 | } 747 | }, 748 | "autoload": { 749 | "psr-4": { 750 | "Psr\\Log\\": "Psr/Log/" 751 | } 752 | }, 753 | "notification-url": "https://packagist.org/downloads/", 754 | "license": [ 755 | "MIT" 756 | ], 757 | "authors": [ 758 | { 759 | "name": "PHP-FIG", 760 | "homepage": "http://www.php-fig.org/" 761 | } 762 | ], 763 | "description": "Common interface for logging libraries", 764 | "homepage": "https://github.com/php-fig/log", 765 | "keywords": [ 766 | "log", 767 | "psr", 768 | "psr-3" 769 | ], 770 | "time": "2018-11-20T15:27:04+00:00" 771 | }, 772 | { 773 | "name": "psr/simple-cache", 774 | "version": "1.0.1", 775 | "source": { 776 | "type": "git", 777 | "url": "https://github.com/php-fig/simple-cache.git", 778 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 779 | }, 780 | "dist": { 781 | "type": "zip", 782 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 783 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 784 | "shasum": "" 785 | }, 786 | "require": { 787 | "php": ">=5.3.0" 788 | }, 789 | "type": "library", 790 | "extra": { 791 | "branch-alias": { 792 | "dev-master": "1.0.x-dev" 793 | } 794 | }, 795 | "autoload": { 796 | "psr-4": { 797 | "Psr\\SimpleCache\\": "src/" 798 | } 799 | }, 800 | "notification-url": "https://packagist.org/downloads/", 801 | "license": [ 802 | "MIT" 803 | ], 804 | "authors": [ 805 | { 806 | "name": "PHP-FIG", 807 | "homepage": "http://www.php-fig.org/" 808 | } 809 | ], 810 | "description": "Common interfaces for simple caching", 811 | "keywords": [ 812 | "cache", 813 | "caching", 814 | "psr", 815 | "psr-16", 816 | "simple-cache" 817 | ], 818 | "time": "2017-10-23T01:57:42+00:00" 819 | }, 820 | { 821 | "name": "ramsey/uuid", 822 | "version": "3.8.0", 823 | "source": { 824 | "type": "git", 825 | "url": "https://github.com/ramsey/uuid.git", 826 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" 827 | }, 828 | "dist": { 829 | "type": "zip", 830 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 831 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 832 | "shasum": "" 833 | }, 834 | "require": { 835 | "paragonie/random_compat": "^1.0|^2.0|9.99.99", 836 | "php": "^5.4 || ^7.0", 837 | "symfony/polyfill-ctype": "^1.8" 838 | }, 839 | "replace": { 840 | "rhumsaa/uuid": "self.version" 841 | }, 842 | "require-dev": { 843 | "codeception/aspect-mock": "^1.0 | ~2.0.0", 844 | "doctrine/annotations": "~1.2.0", 845 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", 846 | "ircmaxell/random-lib": "^1.1", 847 | "jakub-onderka/php-parallel-lint": "^0.9.0", 848 | "mockery/mockery": "^0.9.9", 849 | "moontoast/math": "^1.1", 850 | "php-mock/php-mock-phpunit": "^0.3|^1.1", 851 | "phpunit/phpunit": "^4.7|^5.0|^6.5", 852 | "squizlabs/php_codesniffer": "^2.3" 853 | }, 854 | "suggest": { 855 | "ext-ctype": "Provides support for PHP Ctype functions", 856 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", 857 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", 858 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 859 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", 860 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", 861 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 862 | }, 863 | "type": "library", 864 | "extra": { 865 | "branch-alias": { 866 | "dev-master": "3.x-dev" 867 | } 868 | }, 869 | "autoload": { 870 | "psr-4": { 871 | "Ramsey\\Uuid\\": "src/" 872 | } 873 | }, 874 | "notification-url": "https://packagist.org/downloads/", 875 | "license": [ 876 | "MIT" 877 | ], 878 | "authors": [ 879 | { 880 | "name": "Marijn Huizendveld", 881 | "email": "marijn.huizendveld@gmail.com" 882 | }, 883 | { 884 | "name": "Thibaud Fabre", 885 | "email": "thibaud@aztech.io" 886 | }, 887 | { 888 | "name": "Ben Ramsey", 889 | "email": "ben@benramsey.com", 890 | "homepage": "https://benramsey.com" 891 | } 892 | ], 893 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 894 | "homepage": "https://github.com/ramsey/uuid", 895 | "keywords": [ 896 | "guid", 897 | "identifier", 898 | "uuid" 899 | ], 900 | "time": "2018-07-19T23:38:55+00:00" 901 | }, 902 | { 903 | "name": "swiftmailer/swiftmailer", 904 | "version": "v6.1.3", 905 | "source": { 906 | "type": "git", 907 | "url": "https://github.com/swiftmailer/swiftmailer.git", 908 | "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" 909 | }, 910 | "dist": { 911 | "type": "zip", 912 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", 913 | "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", 914 | "shasum": "" 915 | }, 916 | "require": { 917 | "egulias/email-validator": "~2.0", 918 | "php": ">=7.0.0" 919 | }, 920 | "require-dev": { 921 | "mockery/mockery": "~0.9.1", 922 | "symfony/phpunit-bridge": "~3.3@dev" 923 | }, 924 | "suggest": { 925 | "ext-intl": "Needed to support internationalized email addresses", 926 | "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" 927 | }, 928 | "type": "library", 929 | "extra": { 930 | "branch-alias": { 931 | "dev-master": "6.1-dev" 932 | } 933 | }, 934 | "autoload": { 935 | "files": [ 936 | "lib/swift_required.php" 937 | ] 938 | }, 939 | "notification-url": "https://packagist.org/downloads/", 940 | "license": [ 941 | "MIT" 942 | ], 943 | "authors": [ 944 | { 945 | "name": "Chris Corbyn" 946 | }, 947 | { 948 | "name": "Fabien Potencier", 949 | "email": "fabien@symfony.com" 950 | } 951 | ], 952 | "description": "Swiftmailer, free feature-rich PHP mailer", 953 | "homepage": "https://swiftmailer.symfony.com", 954 | "keywords": [ 955 | "email", 956 | "mail", 957 | "mailer" 958 | ], 959 | "time": "2018-09-11T07:12:52+00:00" 960 | }, 961 | { 962 | "name": "symfony/class-loader", 963 | "version": "v3.4.22", 964 | "source": { 965 | "type": "git", 966 | "url": "https://github.com/symfony/class-loader.git", 967 | "reference": "4459eef5298dedfb69f771186a580062b8516497" 968 | }, 969 | "dist": { 970 | "type": "zip", 971 | "url": "https://api.github.com/repos/symfony/class-loader/zipball/4459eef5298dedfb69f771186a580062b8516497", 972 | "reference": "4459eef5298dedfb69f771186a580062b8516497", 973 | "shasum": "" 974 | }, 975 | "require": { 976 | "php": "^5.5.9|>=7.0.8" 977 | }, 978 | "require-dev": { 979 | "symfony/finder": "~2.8|~3.0|~4.0", 980 | "symfony/polyfill-apcu": "~1.1" 981 | }, 982 | "suggest": { 983 | "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" 984 | }, 985 | "type": "library", 986 | "extra": { 987 | "branch-alias": { 988 | "dev-master": "3.4-dev" 989 | } 990 | }, 991 | "autoload": { 992 | "psr-4": { 993 | "Symfony\\Component\\ClassLoader\\": "" 994 | }, 995 | "exclude-from-classmap": [ 996 | "/Tests/" 997 | ] 998 | }, 999 | "notification-url": "https://packagist.org/downloads/", 1000 | "license": [ 1001 | "MIT" 1002 | ], 1003 | "authors": [ 1004 | { 1005 | "name": "Fabien Potencier", 1006 | "email": "fabien@symfony.com" 1007 | }, 1008 | { 1009 | "name": "Symfony Community", 1010 | "homepage": "https://symfony.com/contributors" 1011 | } 1012 | ], 1013 | "description": "Symfony ClassLoader Component", 1014 | "homepage": "https://symfony.com", 1015 | "time": "2019-01-16T09:39:14+00:00" 1016 | }, 1017 | { 1018 | "name": "symfony/console", 1019 | "version": "v3.4.22", 1020 | "source": { 1021 | "type": "git", 1022 | "url": "https://github.com/symfony/console.git", 1023 | "reference": "069bf3f0e8f871a2169a06e43d9f3f03f355e9be" 1024 | }, 1025 | "dist": { 1026 | "type": "zip", 1027 | "url": "https://api.github.com/repos/symfony/console/zipball/069bf3f0e8f871a2169a06e43d9f3f03f355e9be", 1028 | "reference": "069bf3f0e8f871a2169a06e43d9f3f03f355e9be", 1029 | "shasum": "" 1030 | }, 1031 | "require": { 1032 | "php": "^5.5.9|>=7.0.8", 1033 | "symfony/debug": "~2.8|~3.0|~4.0", 1034 | "symfony/polyfill-mbstring": "~1.0" 1035 | }, 1036 | "conflict": { 1037 | "symfony/dependency-injection": "<3.4", 1038 | "symfony/process": "<3.3" 1039 | }, 1040 | "provide": { 1041 | "psr/log-implementation": "1.0" 1042 | }, 1043 | "require-dev": { 1044 | "psr/log": "~1.0", 1045 | "symfony/config": "~3.3|~4.0", 1046 | "symfony/dependency-injection": "~3.4|~4.0", 1047 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0", 1048 | "symfony/lock": "~3.4|~4.0", 1049 | "symfony/process": "~3.3|~4.0" 1050 | }, 1051 | "suggest": { 1052 | "psr/log": "For using the console logger", 1053 | "symfony/event-dispatcher": "", 1054 | "symfony/lock": "", 1055 | "symfony/process": "" 1056 | }, 1057 | "type": "library", 1058 | "extra": { 1059 | "branch-alias": { 1060 | "dev-master": "3.4-dev" 1061 | } 1062 | }, 1063 | "autoload": { 1064 | "psr-4": { 1065 | "Symfony\\Component\\Console\\": "" 1066 | }, 1067 | "exclude-from-classmap": [ 1068 | "/Tests/" 1069 | ] 1070 | }, 1071 | "notification-url": "https://packagist.org/downloads/", 1072 | "license": [ 1073 | "MIT" 1074 | ], 1075 | "authors": [ 1076 | { 1077 | "name": "Fabien Potencier", 1078 | "email": "fabien@symfony.com" 1079 | }, 1080 | { 1081 | "name": "Symfony Community", 1082 | "homepage": "https://symfony.com/contributors" 1083 | } 1084 | ], 1085 | "description": "Symfony Console Component", 1086 | "homepage": "https://symfony.com", 1087 | "time": "2019-01-25T10:42:12+00:00" 1088 | }, 1089 | { 1090 | "name": "symfony/contracts", 1091 | "version": "v1.0.2", 1092 | "source": { 1093 | "type": "git", 1094 | "url": "https://github.com/symfony/contracts.git", 1095 | "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" 1096 | }, 1097 | "dist": { 1098 | "type": "zip", 1099 | "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", 1100 | "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", 1101 | "shasum": "" 1102 | }, 1103 | "require": { 1104 | "php": "^7.1.3" 1105 | }, 1106 | "require-dev": { 1107 | "psr/cache": "^1.0", 1108 | "psr/container": "^1.0" 1109 | }, 1110 | "suggest": { 1111 | "psr/cache": "When using the Cache contracts", 1112 | "psr/container": "When using the Service contracts", 1113 | "symfony/cache-contracts-implementation": "", 1114 | "symfony/service-contracts-implementation": "", 1115 | "symfony/translation-contracts-implementation": "" 1116 | }, 1117 | "type": "library", 1118 | "extra": { 1119 | "branch-alias": { 1120 | "dev-master": "1.0-dev" 1121 | } 1122 | }, 1123 | "autoload": { 1124 | "psr-4": { 1125 | "Symfony\\Contracts\\": "" 1126 | }, 1127 | "exclude-from-classmap": [ 1128 | "**/Tests/" 1129 | ] 1130 | }, 1131 | "notification-url": "https://packagist.org/downloads/", 1132 | "license": [ 1133 | "MIT" 1134 | ], 1135 | "authors": [ 1136 | { 1137 | "name": "Nicolas Grekas", 1138 | "email": "p@tchwork.com" 1139 | }, 1140 | { 1141 | "name": "Symfony Community", 1142 | "homepage": "https://symfony.com/contributors" 1143 | } 1144 | ], 1145 | "description": "A set of abstractions extracted out of the Symfony components", 1146 | "homepage": "https://symfony.com", 1147 | "keywords": [ 1148 | "abstractions", 1149 | "contracts", 1150 | "decoupling", 1151 | "interfaces", 1152 | "interoperability", 1153 | "standards" 1154 | ], 1155 | "time": "2018-12-05T08:06:11+00:00" 1156 | }, 1157 | { 1158 | "name": "symfony/css-selector", 1159 | "version": "v4.2.3", 1160 | "source": { 1161 | "type": "git", 1162 | "url": "https://github.com/symfony/css-selector.git", 1163 | "reference": "48eddf66950fa57996e1be4a55916d65c10c604a" 1164 | }, 1165 | "dist": { 1166 | "type": "zip", 1167 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a", 1168 | "reference": "48eddf66950fa57996e1be4a55916d65c10c604a", 1169 | "shasum": "" 1170 | }, 1171 | "require": { 1172 | "php": "^7.1.3" 1173 | }, 1174 | "type": "library", 1175 | "extra": { 1176 | "branch-alias": { 1177 | "dev-master": "4.2-dev" 1178 | } 1179 | }, 1180 | "autoload": { 1181 | "psr-4": { 1182 | "Symfony\\Component\\CssSelector\\": "" 1183 | }, 1184 | "exclude-from-classmap": [ 1185 | "/Tests/" 1186 | ] 1187 | }, 1188 | "notification-url": "https://packagist.org/downloads/", 1189 | "license": [ 1190 | "MIT" 1191 | ], 1192 | "authors": [ 1193 | { 1194 | "name": "Jean-François Simon", 1195 | "email": "jeanfrancois.simon@sensiolabs.com" 1196 | }, 1197 | { 1198 | "name": "Fabien Potencier", 1199 | "email": "fabien@symfony.com" 1200 | }, 1201 | { 1202 | "name": "Symfony Community", 1203 | "homepage": "https://symfony.com/contributors" 1204 | } 1205 | ], 1206 | "description": "Symfony CssSelector Component", 1207 | "homepage": "https://symfony.com", 1208 | "time": "2019-01-16T20:31:39+00:00" 1209 | }, 1210 | { 1211 | "name": "symfony/debug", 1212 | "version": "v3.4.22", 1213 | "source": { 1214 | "type": "git", 1215 | "url": "https://github.com/symfony/debug.git", 1216 | "reference": "667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8" 1217 | }, 1218 | "dist": { 1219 | "type": "zip", 1220 | "url": "https://api.github.com/repos/symfony/debug/zipball/667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8", 1221 | "reference": "667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8", 1222 | "shasum": "" 1223 | }, 1224 | "require": { 1225 | "php": "^5.5.9|>=7.0.8", 1226 | "psr/log": "~1.0" 1227 | }, 1228 | "conflict": { 1229 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 1230 | }, 1231 | "require-dev": { 1232 | "symfony/http-kernel": "~2.8|~3.0|~4.0" 1233 | }, 1234 | "type": "library", 1235 | "extra": { 1236 | "branch-alias": { 1237 | "dev-master": "3.4-dev" 1238 | } 1239 | }, 1240 | "autoload": { 1241 | "psr-4": { 1242 | "Symfony\\Component\\Debug\\": "" 1243 | }, 1244 | "exclude-from-classmap": [ 1245 | "/Tests/" 1246 | ] 1247 | }, 1248 | "notification-url": "https://packagist.org/downloads/", 1249 | "license": [ 1250 | "MIT" 1251 | ], 1252 | "authors": [ 1253 | { 1254 | "name": "Fabien Potencier", 1255 | "email": "fabien@symfony.com" 1256 | }, 1257 | { 1258 | "name": "Symfony Community", 1259 | "homepage": "https://symfony.com/contributors" 1260 | } 1261 | ], 1262 | "description": "Symfony Debug Component", 1263 | "homepage": "https://symfony.com", 1264 | "time": "2019-01-25T10:19:25+00:00" 1265 | }, 1266 | { 1267 | "name": "symfony/event-dispatcher", 1268 | "version": "v4.2.3", 1269 | "source": { 1270 | "type": "git", 1271 | "url": "https://github.com/symfony/event-dispatcher.git", 1272 | "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1" 1273 | }, 1274 | "dist": { 1275 | "type": "zip", 1276 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", 1277 | "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1", 1278 | "shasum": "" 1279 | }, 1280 | "require": { 1281 | "php": "^7.1.3", 1282 | "symfony/contracts": "^1.0" 1283 | }, 1284 | "conflict": { 1285 | "symfony/dependency-injection": "<3.4" 1286 | }, 1287 | "require-dev": { 1288 | "psr/log": "~1.0", 1289 | "symfony/config": "~3.4|~4.0", 1290 | "symfony/dependency-injection": "~3.4|~4.0", 1291 | "symfony/expression-language": "~3.4|~4.0", 1292 | "symfony/stopwatch": "~3.4|~4.0" 1293 | }, 1294 | "suggest": { 1295 | "symfony/dependency-injection": "", 1296 | "symfony/http-kernel": "" 1297 | }, 1298 | "type": "library", 1299 | "extra": { 1300 | "branch-alias": { 1301 | "dev-master": "4.2-dev" 1302 | } 1303 | }, 1304 | "autoload": { 1305 | "psr-4": { 1306 | "Symfony\\Component\\EventDispatcher\\": "" 1307 | }, 1308 | "exclude-from-classmap": [ 1309 | "/Tests/" 1310 | ] 1311 | }, 1312 | "notification-url": "https://packagist.org/downloads/", 1313 | "license": [ 1314 | "MIT" 1315 | ], 1316 | "authors": [ 1317 | { 1318 | "name": "Fabien Potencier", 1319 | "email": "fabien@symfony.com" 1320 | }, 1321 | { 1322 | "name": "Symfony Community", 1323 | "homepage": "https://symfony.com/contributors" 1324 | } 1325 | ], 1326 | "description": "Symfony EventDispatcher Component", 1327 | "homepage": "https://symfony.com", 1328 | "time": "2019-01-16T20:35:37+00:00" 1329 | }, 1330 | { 1331 | "name": "symfony/finder", 1332 | "version": "v3.4.22", 1333 | "source": { 1334 | "type": "git", 1335 | "url": "https://github.com/symfony/finder.git", 1336 | "reference": "7c0c627220308928e958a87c293108e5891cde1d" 1337 | }, 1338 | "dist": { 1339 | "type": "zip", 1340 | "url": "https://api.github.com/repos/symfony/finder/zipball/7c0c627220308928e958a87c293108e5891cde1d", 1341 | "reference": "7c0c627220308928e958a87c293108e5891cde1d", 1342 | "shasum": "" 1343 | }, 1344 | "require": { 1345 | "php": "^5.5.9|>=7.0.8" 1346 | }, 1347 | "type": "library", 1348 | "extra": { 1349 | "branch-alias": { 1350 | "dev-master": "3.4-dev" 1351 | } 1352 | }, 1353 | "autoload": { 1354 | "psr-4": { 1355 | "Symfony\\Component\\Finder\\": "" 1356 | }, 1357 | "exclude-from-classmap": [ 1358 | "/Tests/" 1359 | ] 1360 | }, 1361 | "notification-url": "https://packagist.org/downloads/", 1362 | "license": [ 1363 | "MIT" 1364 | ], 1365 | "authors": [ 1366 | { 1367 | "name": "Fabien Potencier", 1368 | "email": "fabien@symfony.com" 1369 | }, 1370 | { 1371 | "name": "Symfony Community", 1372 | "homepage": "https://symfony.com/contributors" 1373 | } 1374 | ], 1375 | "description": "Symfony Finder Component", 1376 | "homepage": "https://symfony.com", 1377 | "time": "2019-01-16T13:43:35+00:00" 1378 | }, 1379 | { 1380 | "name": "symfony/http-foundation", 1381 | "version": "v3.4.22", 1382 | "source": { 1383 | "type": "git", 1384 | "url": "https://github.com/symfony/http-foundation.git", 1385 | "reference": "9a81d2330ea255ded06a69b4f7fb7804836e7a05" 1386 | }, 1387 | "dist": { 1388 | "type": "zip", 1389 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9a81d2330ea255ded06a69b4f7fb7804836e7a05", 1390 | "reference": "9a81d2330ea255ded06a69b4f7fb7804836e7a05", 1391 | "shasum": "" 1392 | }, 1393 | "require": { 1394 | "php": "^5.5.9|>=7.0.8", 1395 | "symfony/polyfill-mbstring": "~1.1", 1396 | "symfony/polyfill-php70": "~1.6" 1397 | }, 1398 | "require-dev": { 1399 | "symfony/expression-language": "~2.8|~3.0|~4.0" 1400 | }, 1401 | "type": "library", 1402 | "extra": { 1403 | "branch-alias": { 1404 | "dev-master": "3.4-dev" 1405 | } 1406 | }, 1407 | "autoload": { 1408 | "psr-4": { 1409 | "Symfony\\Component\\HttpFoundation\\": "" 1410 | }, 1411 | "exclude-from-classmap": [ 1412 | "/Tests/" 1413 | ] 1414 | }, 1415 | "notification-url": "https://packagist.org/downloads/", 1416 | "license": [ 1417 | "MIT" 1418 | ], 1419 | "authors": [ 1420 | { 1421 | "name": "Fabien Potencier", 1422 | "email": "fabien@symfony.com" 1423 | }, 1424 | { 1425 | "name": "Symfony Community", 1426 | "homepage": "https://symfony.com/contributors" 1427 | } 1428 | ], 1429 | "description": "Symfony HttpFoundation Component", 1430 | "homepage": "https://symfony.com", 1431 | "time": "2019-01-27T09:04:14+00:00" 1432 | }, 1433 | { 1434 | "name": "symfony/http-kernel", 1435 | "version": "v3.4.22", 1436 | "source": { 1437 | "type": "git", 1438 | "url": "https://github.com/symfony/http-kernel.git", 1439 | "reference": "dc6bf17684b7120f7bf74fae85c9155506041002" 1440 | }, 1441 | "dist": { 1442 | "type": "zip", 1443 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dc6bf17684b7120f7bf74fae85c9155506041002", 1444 | "reference": "dc6bf17684b7120f7bf74fae85c9155506041002", 1445 | "shasum": "" 1446 | }, 1447 | "require": { 1448 | "php": "^5.5.9|>=7.0.8", 1449 | "psr/log": "~1.0", 1450 | "symfony/debug": "^3.3.3|~4.0", 1451 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0", 1452 | "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", 1453 | "symfony/polyfill-ctype": "~1.8" 1454 | }, 1455 | "conflict": { 1456 | "symfony/config": "<2.8", 1457 | "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", 1458 | "symfony/var-dumper": "<3.3", 1459 | "twig/twig": "<1.34|<2.4,>=2" 1460 | }, 1461 | "provide": { 1462 | "psr/log-implementation": "1.0" 1463 | }, 1464 | "require-dev": { 1465 | "psr/cache": "~1.0", 1466 | "symfony/browser-kit": "~2.8|~3.0|~4.0", 1467 | "symfony/class-loader": "~2.8|~3.0", 1468 | "symfony/config": "~2.8|~3.0|~4.0", 1469 | "symfony/console": "~2.8|~3.0|~4.0", 1470 | "symfony/css-selector": "~2.8|~3.0|~4.0", 1471 | "symfony/dependency-injection": "^3.4.10|^4.0.10", 1472 | "symfony/dom-crawler": "~2.8|~3.0|~4.0", 1473 | "symfony/expression-language": "~2.8|~3.0|~4.0", 1474 | "symfony/finder": "~2.8|~3.0|~4.0", 1475 | "symfony/process": "~2.8|~3.0|~4.0", 1476 | "symfony/routing": "~3.4|~4.0", 1477 | "symfony/stopwatch": "~2.8|~3.0|~4.0", 1478 | "symfony/templating": "~2.8|~3.0|~4.0", 1479 | "symfony/translation": "~2.8|~3.0|~4.0", 1480 | "symfony/var-dumper": "~3.3|~4.0" 1481 | }, 1482 | "suggest": { 1483 | "symfony/browser-kit": "", 1484 | "symfony/config": "", 1485 | "symfony/console": "", 1486 | "symfony/dependency-injection": "", 1487 | "symfony/finder": "", 1488 | "symfony/var-dumper": "" 1489 | }, 1490 | "type": "library", 1491 | "extra": { 1492 | "branch-alias": { 1493 | "dev-master": "3.4-dev" 1494 | } 1495 | }, 1496 | "autoload": { 1497 | "psr-4": { 1498 | "Symfony\\Component\\HttpKernel\\": "" 1499 | }, 1500 | "exclude-from-classmap": [ 1501 | "/Tests/" 1502 | ] 1503 | }, 1504 | "notification-url": "https://packagist.org/downloads/", 1505 | "license": [ 1506 | "MIT" 1507 | ], 1508 | "authors": [ 1509 | { 1510 | "name": "Fabien Potencier", 1511 | "email": "fabien@symfony.com" 1512 | }, 1513 | { 1514 | "name": "Symfony Community", 1515 | "homepage": "https://symfony.com/contributors" 1516 | } 1517 | ], 1518 | "description": "Symfony HttpKernel Component", 1519 | "homepage": "https://symfony.com", 1520 | "time": "2019-02-03T12:22:50+00:00" 1521 | }, 1522 | { 1523 | "name": "symfony/polyfill-ctype", 1524 | "version": "v1.10.0", 1525 | "source": { 1526 | "type": "git", 1527 | "url": "https://github.com/symfony/polyfill-ctype.git", 1528 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" 1529 | }, 1530 | "dist": { 1531 | "type": "zip", 1532 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", 1533 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", 1534 | "shasum": "" 1535 | }, 1536 | "require": { 1537 | "php": ">=5.3.3" 1538 | }, 1539 | "suggest": { 1540 | "ext-ctype": "For best performance" 1541 | }, 1542 | "type": "library", 1543 | "extra": { 1544 | "branch-alias": { 1545 | "dev-master": "1.9-dev" 1546 | } 1547 | }, 1548 | "autoload": { 1549 | "psr-4": { 1550 | "Symfony\\Polyfill\\Ctype\\": "" 1551 | }, 1552 | "files": [ 1553 | "bootstrap.php" 1554 | ] 1555 | }, 1556 | "notification-url": "https://packagist.org/downloads/", 1557 | "license": [ 1558 | "MIT" 1559 | ], 1560 | "authors": [ 1561 | { 1562 | "name": "Symfony Community", 1563 | "homepage": "https://symfony.com/contributors" 1564 | }, 1565 | { 1566 | "name": "Gert de Pagter", 1567 | "email": "BackEndTea@gmail.com" 1568 | } 1569 | ], 1570 | "description": "Symfony polyfill for ctype functions", 1571 | "homepage": "https://symfony.com", 1572 | "keywords": [ 1573 | "compatibility", 1574 | "ctype", 1575 | "polyfill", 1576 | "portable" 1577 | ], 1578 | "time": "2018-08-06T14:22:27+00:00" 1579 | }, 1580 | { 1581 | "name": "symfony/polyfill-mbstring", 1582 | "version": "v1.10.0", 1583 | "source": { 1584 | "type": "git", 1585 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1586 | "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" 1587 | }, 1588 | "dist": { 1589 | "type": "zip", 1590 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", 1591 | "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", 1592 | "shasum": "" 1593 | }, 1594 | "require": { 1595 | "php": ">=5.3.3" 1596 | }, 1597 | "suggest": { 1598 | "ext-mbstring": "For best performance" 1599 | }, 1600 | "type": "library", 1601 | "extra": { 1602 | "branch-alias": { 1603 | "dev-master": "1.9-dev" 1604 | } 1605 | }, 1606 | "autoload": { 1607 | "psr-4": { 1608 | "Symfony\\Polyfill\\Mbstring\\": "" 1609 | }, 1610 | "files": [ 1611 | "bootstrap.php" 1612 | ] 1613 | }, 1614 | "notification-url": "https://packagist.org/downloads/", 1615 | "license": [ 1616 | "MIT" 1617 | ], 1618 | "authors": [ 1619 | { 1620 | "name": "Nicolas Grekas", 1621 | "email": "p@tchwork.com" 1622 | }, 1623 | { 1624 | "name": "Symfony Community", 1625 | "homepage": "https://symfony.com/contributors" 1626 | } 1627 | ], 1628 | "description": "Symfony polyfill for the Mbstring extension", 1629 | "homepage": "https://symfony.com", 1630 | "keywords": [ 1631 | "compatibility", 1632 | "mbstring", 1633 | "polyfill", 1634 | "portable", 1635 | "shim" 1636 | ], 1637 | "time": "2018-09-21T13:07:52+00:00" 1638 | }, 1639 | { 1640 | "name": "symfony/polyfill-php70", 1641 | "version": "v1.10.0", 1642 | "source": { 1643 | "type": "git", 1644 | "url": "https://github.com/symfony/polyfill-php70.git", 1645 | "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" 1646 | }, 1647 | "dist": { 1648 | "type": "zip", 1649 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", 1650 | "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", 1651 | "shasum": "" 1652 | }, 1653 | "require": { 1654 | "paragonie/random_compat": "~1.0|~2.0|~9.99", 1655 | "php": ">=5.3.3" 1656 | }, 1657 | "type": "library", 1658 | "extra": { 1659 | "branch-alias": { 1660 | "dev-master": "1.9-dev" 1661 | } 1662 | }, 1663 | "autoload": { 1664 | "psr-4": { 1665 | "Symfony\\Polyfill\\Php70\\": "" 1666 | }, 1667 | "files": [ 1668 | "bootstrap.php" 1669 | ], 1670 | "classmap": [ 1671 | "Resources/stubs" 1672 | ] 1673 | }, 1674 | "notification-url": "https://packagist.org/downloads/", 1675 | "license": [ 1676 | "MIT" 1677 | ], 1678 | "authors": [ 1679 | { 1680 | "name": "Nicolas Grekas", 1681 | "email": "p@tchwork.com" 1682 | }, 1683 | { 1684 | "name": "Symfony Community", 1685 | "homepage": "https://symfony.com/contributors" 1686 | } 1687 | ], 1688 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 1689 | "homepage": "https://symfony.com", 1690 | "keywords": [ 1691 | "compatibility", 1692 | "polyfill", 1693 | "portable", 1694 | "shim" 1695 | ], 1696 | "time": "2018-09-21T06:26:08+00:00" 1697 | }, 1698 | { 1699 | "name": "symfony/process", 1700 | "version": "v3.4.22", 1701 | "source": { 1702 | "type": "git", 1703 | "url": "https://github.com/symfony/process.git", 1704 | "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e" 1705 | }, 1706 | "dist": { 1707 | "type": "zip", 1708 | "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e", 1709 | "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e", 1710 | "shasum": "" 1711 | }, 1712 | "require": { 1713 | "php": "^5.5.9|>=7.0.8" 1714 | }, 1715 | "type": "library", 1716 | "extra": { 1717 | "branch-alias": { 1718 | "dev-master": "3.4-dev" 1719 | } 1720 | }, 1721 | "autoload": { 1722 | "psr-4": { 1723 | "Symfony\\Component\\Process\\": "" 1724 | }, 1725 | "exclude-from-classmap": [ 1726 | "/Tests/" 1727 | ] 1728 | }, 1729 | "notification-url": "https://packagist.org/downloads/", 1730 | "license": [ 1731 | "MIT" 1732 | ], 1733 | "authors": [ 1734 | { 1735 | "name": "Fabien Potencier", 1736 | "email": "fabien@symfony.com" 1737 | }, 1738 | { 1739 | "name": "Symfony Community", 1740 | "homepage": "https://symfony.com/contributors" 1741 | } 1742 | ], 1743 | "description": "Symfony Process Component", 1744 | "homepage": "https://symfony.com", 1745 | "time": "2019-01-16T13:27:11+00:00" 1746 | }, 1747 | { 1748 | "name": "symfony/routing", 1749 | "version": "v3.4.22", 1750 | "source": { 1751 | "type": "git", 1752 | "url": "https://github.com/symfony/routing.git", 1753 | "reference": "62f0b8d8cd2cd359c3caa5a9f5253a4a6d480646" 1754 | }, 1755 | "dist": { 1756 | "type": "zip", 1757 | "url": "https://api.github.com/repos/symfony/routing/zipball/62f0b8d8cd2cd359c3caa5a9f5253a4a6d480646", 1758 | "reference": "62f0b8d8cd2cd359c3caa5a9f5253a4a6d480646", 1759 | "shasum": "" 1760 | }, 1761 | "require": { 1762 | "php": "^5.5.9|>=7.0.8" 1763 | }, 1764 | "conflict": { 1765 | "symfony/config": "<3.3.1", 1766 | "symfony/dependency-injection": "<3.3", 1767 | "symfony/yaml": "<3.4" 1768 | }, 1769 | "require-dev": { 1770 | "doctrine/annotations": "~1.0", 1771 | "psr/log": "~1.0", 1772 | "symfony/config": "^3.3.1|~4.0", 1773 | "symfony/dependency-injection": "~3.3|~4.0", 1774 | "symfony/expression-language": "~2.8|~3.0|~4.0", 1775 | "symfony/http-foundation": "~2.8|~3.0|~4.0", 1776 | "symfony/yaml": "~3.4|~4.0" 1777 | }, 1778 | "suggest": { 1779 | "doctrine/annotations": "For using the annotation loader", 1780 | "symfony/config": "For using the all-in-one router or any loader", 1781 | "symfony/dependency-injection": "For loading routes from a service", 1782 | "symfony/expression-language": "For using expression matching", 1783 | "symfony/http-foundation": "For using a Symfony Request object", 1784 | "symfony/yaml": "For using the YAML loader" 1785 | }, 1786 | "type": "library", 1787 | "extra": { 1788 | "branch-alias": { 1789 | "dev-master": "3.4-dev" 1790 | } 1791 | }, 1792 | "autoload": { 1793 | "psr-4": { 1794 | "Symfony\\Component\\Routing\\": "" 1795 | }, 1796 | "exclude-from-classmap": [ 1797 | "/Tests/" 1798 | ] 1799 | }, 1800 | "notification-url": "https://packagist.org/downloads/", 1801 | "license": [ 1802 | "MIT" 1803 | ], 1804 | "authors": [ 1805 | { 1806 | "name": "Fabien Potencier", 1807 | "email": "fabien@symfony.com" 1808 | }, 1809 | { 1810 | "name": "Symfony Community", 1811 | "homepage": "https://symfony.com/contributors" 1812 | } 1813 | ], 1814 | "description": "Symfony Routing Component", 1815 | "homepage": "https://symfony.com", 1816 | "keywords": [ 1817 | "router", 1818 | "routing", 1819 | "uri", 1820 | "url" 1821 | ], 1822 | "time": "2019-01-29T08:47:12+00:00" 1823 | }, 1824 | { 1825 | "name": "symfony/translation", 1826 | "version": "v4.2.3", 1827 | "source": { 1828 | "type": "git", 1829 | "url": "https://github.com/symfony/translation.git", 1830 | "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050" 1831 | }, 1832 | "dist": { 1833 | "type": "zip", 1834 | "url": "https://api.github.com/repos/symfony/translation/zipball/23fd7aac70d99a17a8e6473a41fec8fab3331050", 1835 | "reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050", 1836 | "shasum": "" 1837 | }, 1838 | "require": { 1839 | "php": "^7.1.3", 1840 | "symfony/contracts": "^1.0.2", 1841 | "symfony/polyfill-mbstring": "~1.0" 1842 | }, 1843 | "conflict": { 1844 | "symfony/config": "<3.4", 1845 | "symfony/dependency-injection": "<3.4", 1846 | "symfony/yaml": "<3.4" 1847 | }, 1848 | "provide": { 1849 | "symfony/translation-contracts-implementation": "1.0" 1850 | }, 1851 | "require-dev": { 1852 | "psr/log": "~1.0", 1853 | "symfony/config": "~3.4|~4.0", 1854 | "symfony/console": "~3.4|~4.0", 1855 | "symfony/dependency-injection": "~3.4|~4.0", 1856 | "symfony/finder": "~2.8|~3.0|~4.0", 1857 | "symfony/intl": "~3.4|~4.0", 1858 | "symfony/yaml": "~3.4|~4.0" 1859 | }, 1860 | "suggest": { 1861 | "psr/log-implementation": "To use logging capability in translator", 1862 | "symfony/config": "", 1863 | "symfony/yaml": "" 1864 | }, 1865 | "type": "library", 1866 | "extra": { 1867 | "branch-alias": { 1868 | "dev-master": "4.2-dev" 1869 | } 1870 | }, 1871 | "autoload": { 1872 | "psr-4": { 1873 | "Symfony\\Component\\Translation\\": "" 1874 | }, 1875 | "exclude-from-classmap": [ 1876 | "/Tests/" 1877 | ] 1878 | }, 1879 | "notification-url": "https://packagist.org/downloads/", 1880 | "license": [ 1881 | "MIT" 1882 | ], 1883 | "authors": [ 1884 | { 1885 | "name": "Fabien Potencier", 1886 | "email": "fabien@symfony.com" 1887 | }, 1888 | { 1889 | "name": "Symfony Community", 1890 | "homepage": "https://symfony.com/contributors" 1891 | } 1892 | ], 1893 | "description": "Symfony Translation Component", 1894 | "homepage": "https://symfony.com", 1895 | "time": "2019-01-27T23:11:39+00:00" 1896 | }, 1897 | { 1898 | "name": "symfony/var-dumper", 1899 | "version": "v3.4.22", 1900 | "source": { 1901 | "type": "git", 1902 | "url": "https://github.com/symfony/var-dumper.git", 1903 | "reference": "2159335b452d929cbb9921fc4eb7d1bfed32d0be" 1904 | }, 1905 | "dist": { 1906 | "type": "zip", 1907 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2159335b452d929cbb9921fc4eb7d1bfed32d0be", 1908 | "reference": "2159335b452d929cbb9921fc4eb7d1bfed32d0be", 1909 | "shasum": "" 1910 | }, 1911 | "require": { 1912 | "php": "^5.5.9|>=7.0.8", 1913 | "symfony/polyfill-mbstring": "~1.0" 1914 | }, 1915 | "conflict": { 1916 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" 1917 | }, 1918 | "require-dev": { 1919 | "ext-iconv": "*", 1920 | "twig/twig": "~1.34|~2.4" 1921 | }, 1922 | "suggest": { 1923 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 1924 | "ext-intl": "To show region name in time zone dump", 1925 | "ext-symfony_debug": "" 1926 | }, 1927 | "type": "library", 1928 | "extra": { 1929 | "branch-alias": { 1930 | "dev-master": "3.4-dev" 1931 | } 1932 | }, 1933 | "autoload": { 1934 | "files": [ 1935 | "Resources/functions/dump.php" 1936 | ], 1937 | "psr-4": { 1938 | "Symfony\\Component\\VarDumper\\": "" 1939 | }, 1940 | "exclude-from-classmap": [ 1941 | "/Tests/" 1942 | ] 1943 | }, 1944 | "notification-url": "https://packagist.org/downloads/", 1945 | "license": [ 1946 | "MIT" 1947 | ], 1948 | "authors": [ 1949 | { 1950 | "name": "Nicolas Grekas", 1951 | "email": "p@tchwork.com" 1952 | }, 1953 | { 1954 | "name": "Symfony Community", 1955 | "homepage": "https://symfony.com/contributors" 1956 | } 1957 | ], 1958 | "description": "Symfony mechanism for exploring and dumping PHP variables", 1959 | "homepage": "https://symfony.com", 1960 | "keywords": [ 1961 | "debug", 1962 | "dump" 1963 | ], 1964 | "time": "2019-01-29T16:19:17+00:00" 1965 | }, 1966 | { 1967 | "name": "tijsverkoyen/css-to-inline-styles", 1968 | "version": "2.2.1", 1969 | "source": { 1970 | "type": "git", 1971 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 1972 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" 1973 | }, 1974 | "dist": { 1975 | "type": "zip", 1976 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 1977 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 1978 | "shasum": "" 1979 | }, 1980 | "require": { 1981 | "php": "^5.5 || ^7.0", 1982 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" 1983 | }, 1984 | "require-dev": { 1985 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1986 | }, 1987 | "type": "library", 1988 | "extra": { 1989 | "branch-alias": { 1990 | "dev-master": "2.2.x-dev" 1991 | } 1992 | }, 1993 | "autoload": { 1994 | "psr-4": { 1995 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 1996 | } 1997 | }, 1998 | "notification-url": "https://packagist.org/downloads/", 1999 | "license": [ 2000 | "BSD-3-Clause" 2001 | ], 2002 | "authors": [ 2003 | { 2004 | "name": "Tijs Verkoyen", 2005 | "email": "css_to_inline_styles@verkoyen.eu", 2006 | "role": "Developer" 2007 | } 2008 | ], 2009 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", 2010 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 2011 | "time": "2017-11-27T11:13:29+00:00" 2012 | }, 2013 | { 2014 | "name": "vlucas/phpdotenv", 2015 | "version": "v2.6.1", 2016 | "source": { 2017 | "type": "git", 2018 | "url": "https://github.com/vlucas/phpdotenv.git", 2019 | "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" 2020 | }, 2021 | "dist": { 2022 | "type": "zip", 2023 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", 2024 | "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", 2025 | "shasum": "" 2026 | }, 2027 | "require": { 2028 | "php": ">=5.3.9", 2029 | "symfony/polyfill-ctype": "^1.9" 2030 | }, 2031 | "require-dev": { 2032 | "phpunit/phpunit": "^4.8.35 || ^5.0" 2033 | }, 2034 | "type": "library", 2035 | "extra": { 2036 | "branch-alias": { 2037 | "dev-master": "2.6-dev" 2038 | } 2039 | }, 2040 | "autoload": { 2041 | "psr-4": { 2042 | "Dotenv\\": "src/" 2043 | } 2044 | }, 2045 | "notification-url": "https://packagist.org/downloads/", 2046 | "license": [ 2047 | "BSD-3-Clause" 2048 | ], 2049 | "authors": [ 2050 | { 2051 | "name": "Vance Lucas", 2052 | "email": "vance@vancelucas.com", 2053 | "homepage": "http://www.vancelucas.com" 2054 | } 2055 | ], 2056 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 2057 | "keywords": [ 2058 | "dotenv", 2059 | "env", 2060 | "environment" 2061 | ], 2062 | "time": "2019-01-29T11:11:52+00:00" 2063 | } 2064 | ], 2065 | "packages-dev": [ 2066 | { 2067 | "name": "doctrine/instantiator", 2068 | "version": "1.1.0", 2069 | "source": { 2070 | "type": "git", 2071 | "url": "https://github.com/doctrine/instantiator.git", 2072 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 2073 | }, 2074 | "dist": { 2075 | "type": "zip", 2076 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 2077 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 2078 | "shasum": "" 2079 | }, 2080 | "require": { 2081 | "php": "^7.1" 2082 | }, 2083 | "require-dev": { 2084 | "athletic/athletic": "~0.1.8", 2085 | "ext-pdo": "*", 2086 | "ext-phar": "*", 2087 | "phpunit/phpunit": "^6.2.3", 2088 | "squizlabs/php_codesniffer": "^3.0.2" 2089 | }, 2090 | "type": "library", 2091 | "extra": { 2092 | "branch-alias": { 2093 | "dev-master": "1.2.x-dev" 2094 | } 2095 | }, 2096 | "autoload": { 2097 | "psr-4": { 2098 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 2099 | } 2100 | }, 2101 | "notification-url": "https://packagist.org/downloads/", 2102 | "license": [ 2103 | "MIT" 2104 | ], 2105 | "authors": [ 2106 | { 2107 | "name": "Marco Pivetta", 2108 | "email": "ocramius@gmail.com", 2109 | "homepage": "http://ocramius.github.com/" 2110 | } 2111 | ], 2112 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 2113 | "homepage": "https://github.com/doctrine/instantiator", 2114 | "keywords": [ 2115 | "constructor", 2116 | "instantiate" 2117 | ], 2118 | "time": "2017-07-22T11:58:36+00:00" 2119 | }, 2120 | { 2121 | "name": "fzaninotto/faker", 2122 | "version": "v1.8.0", 2123 | "source": { 2124 | "type": "git", 2125 | "url": "https://github.com/fzaninotto/Faker.git", 2126 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" 2127 | }, 2128 | "dist": { 2129 | "type": "zip", 2130 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", 2131 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", 2132 | "shasum": "" 2133 | }, 2134 | "require": { 2135 | "php": "^5.3.3 || ^7.0" 2136 | }, 2137 | "require-dev": { 2138 | "ext-intl": "*", 2139 | "phpunit/phpunit": "^4.8.35 || ^5.7", 2140 | "squizlabs/php_codesniffer": "^1.5" 2141 | }, 2142 | "type": "library", 2143 | "extra": { 2144 | "branch-alias": { 2145 | "dev-master": "1.8-dev" 2146 | } 2147 | }, 2148 | "autoload": { 2149 | "psr-4": { 2150 | "Faker\\": "src/Faker/" 2151 | } 2152 | }, 2153 | "notification-url": "https://packagist.org/downloads/", 2154 | "license": [ 2155 | "MIT" 2156 | ], 2157 | "authors": [ 2158 | { 2159 | "name": "François Zaninotto" 2160 | } 2161 | ], 2162 | "description": "Faker is a PHP library that generates fake data for you.", 2163 | "keywords": [ 2164 | "data", 2165 | "faker", 2166 | "fixtures" 2167 | ], 2168 | "time": "2018-07-12T10:23:15+00:00" 2169 | }, 2170 | { 2171 | "name": "guzzlehttp/guzzle", 2172 | "version": "6.3.3", 2173 | "source": { 2174 | "type": "git", 2175 | "url": "https://github.com/guzzle/guzzle.git", 2176 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" 2177 | }, 2178 | "dist": { 2179 | "type": "zip", 2180 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", 2181 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", 2182 | "shasum": "" 2183 | }, 2184 | "require": { 2185 | "guzzlehttp/promises": "^1.0", 2186 | "guzzlehttp/psr7": "^1.4", 2187 | "php": ">=5.5" 2188 | }, 2189 | "require-dev": { 2190 | "ext-curl": "*", 2191 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", 2192 | "psr/log": "^1.0" 2193 | }, 2194 | "suggest": { 2195 | "psr/log": "Required for using the Log middleware" 2196 | }, 2197 | "type": "library", 2198 | "extra": { 2199 | "branch-alias": { 2200 | "dev-master": "6.3-dev" 2201 | } 2202 | }, 2203 | "autoload": { 2204 | "files": [ 2205 | "src/functions_include.php" 2206 | ], 2207 | "psr-4": { 2208 | "GuzzleHttp\\": "src/" 2209 | } 2210 | }, 2211 | "notification-url": "https://packagist.org/downloads/", 2212 | "license": [ 2213 | "MIT" 2214 | ], 2215 | "authors": [ 2216 | { 2217 | "name": "Michael Dowling", 2218 | "email": "mtdowling@gmail.com", 2219 | "homepage": "https://github.com/mtdowling" 2220 | } 2221 | ], 2222 | "description": "Guzzle is a PHP HTTP client library", 2223 | "homepage": "http://guzzlephp.org/", 2224 | "keywords": [ 2225 | "client", 2226 | "curl", 2227 | "framework", 2228 | "http", 2229 | "http client", 2230 | "rest", 2231 | "web service" 2232 | ], 2233 | "time": "2018-04-22T15:46:56+00:00" 2234 | }, 2235 | { 2236 | "name": "guzzlehttp/promises", 2237 | "version": "v1.3.1", 2238 | "source": { 2239 | "type": "git", 2240 | "url": "https://github.com/guzzle/promises.git", 2241 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 2242 | }, 2243 | "dist": { 2244 | "type": "zip", 2245 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 2246 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 2247 | "shasum": "" 2248 | }, 2249 | "require": { 2250 | "php": ">=5.5.0" 2251 | }, 2252 | "require-dev": { 2253 | "phpunit/phpunit": "^4.0" 2254 | }, 2255 | "type": "library", 2256 | "extra": { 2257 | "branch-alias": { 2258 | "dev-master": "1.4-dev" 2259 | } 2260 | }, 2261 | "autoload": { 2262 | "psr-4": { 2263 | "GuzzleHttp\\Promise\\": "src/" 2264 | }, 2265 | "files": [ 2266 | "src/functions_include.php" 2267 | ] 2268 | }, 2269 | "notification-url": "https://packagist.org/downloads/", 2270 | "license": [ 2271 | "MIT" 2272 | ], 2273 | "authors": [ 2274 | { 2275 | "name": "Michael Dowling", 2276 | "email": "mtdowling@gmail.com", 2277 | "homepage": "https://github.com/mtdowling" 2278 | } 2279 | ], 2280 | "description": "Guzzle promises library", 2281 | "keywords": [ 2282 | "promise" 2283 | ], 2284 | "time": "2016-12-20T10:07:11+00:00" 2285 | }, 2286 | { 2287 | "name": "guzzlehttp/psr7", 2288 | "version": "1.5.2", 2289 | "source": { 2290 | "type": "git", 2291 | "url": "https://github.com/guzzle/psr7.git", 2292 | "reference": "9f83dded91781a01c63574e387eaa769be769115" 2293 | }, 2294 | "dist": { 2295 | "type": "zip", 2296 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", 2297 | "reference": "9f83dded91781a01c63574e387eaa769be769115", 2298 | "shasum": "" 2299 | }, 2300 | "require": { 2301 | "php": ">=5.4.0", 2302 | "psr/http-message": "~1.0", 2303 | "ralouphie/getallheaders": "^2.0.5" 2304 | }, 2305 | "provide": { 2306 | "psr/http-message-implementation": "1.0" 2307 | }, 2308 | "require-dev": { 2309 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" 2310 | }, 2311 | "type": "library", 2312 | "extra": { 2313 | "branch-alias": { 2314 | "dev-master": "1.5-dev" 2315 | } 2316 | }, 2317 | "autoload": { 2318 | "psr-4": { 2319 | "GuzzleHttp\\Psr7\\": "src/" 2320 | }, 2321 | "files": [ 2322 | "src/functions_include.php" 2323 | ] 2324 | }, 2325 | "notification-url": "https://packagist.org/downloads/", 2326 | "license": [ 2327 | "MIT" 2328 | ], 2329 | "authors": [ 2330 | { 2331 | "name": "Michael Dowling", 2332 | "email": "mtdowling@gmail.com", 2333 | "homepage": "https://github.com/mtdowling" 2334 | }, 2335 | { 2336 | "name": "Tobias Schultze", 2337 | "homepage": "https://github.com/Tobion" 2338 | } 2339 | ], 2340 | "description": "PSR-7 message implementation that also provides common utility methods", 2341 | "keywords": [ 2342 | "http", 2343 | "message", 2344 | "psr-7", 2345 | "request", 2346 | "response", 2347 | "stream", 2348 | "uri", 2349 | "url" 2350 | ], 2351 | "time": "2018-12-04T20:46:45+00:00" 2352 | }, 2353 | { 2354 | "name": "myclabs/deep-copy", 2355 | "version": "1.8.1", 2356 | "source": { 2357 | "type": "git", 2358 | "url": "https://github.com/myclabs/DeepCopy.git", 2359 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" 2360 | }, 2361 | "dist": { 2362 | "type": "zip", 2363 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", 2364 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", 2365 | "shasum": "" 2366 | }, 2367 | "require": { 2368 | "php": "^7.1" 2369 | }, 2370 | "replace": { 2371 | "myclabs/deep-copy": "self.version" 2372 | }, 2373 | "require-dev": { 2374 | "doctrine/collections": "^1.0", 2375 | "doctrine/common": "^2.6", 2376 | "phpunit/phpunit": "^7.1" 2377 | }, 2378 | "type": "library", 2379 | "autoload": { 2380 | "psr-4": { 2381 | "DeepCopy\\": "src/DeepCopy/" 2382 | }, 2383 | "files": [ 2384 | "src/DeepCopy/deep_copy.php" 2385 | ] 2386 | }, 2387 | "notification-url": "https://packagist.org/downloads/", 2388 | "license": [ 2389 | "MIT" 2390 | ], 2391 | "description": "Create deep copies (clones) of your objects", 2392 | "keywords": [ 2393 | "clone", 2394 | "copy", 2395 | "duplicate", 2396 | "object", 2397 | "object graph" 2398 | ], 2399 | "time": "2018-06-11T23:09:50+00:00" 2400 | }, 2401 | { 2402 | "name": "orchestra/testbench", 2403 | "version": "v3.5.5", 2404 | "source": { 2405 | "type": "git", 2406 | "url": "https://github.com/orchestral/testbench.git", 2407 | "reference": "fd032489df469d611a264083e62db96677c9061e" 2408 | }, 2409 | "dist": { 2410 | "type": "zip", 2411 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/fd032489df469d611a264083e62db96677c9061e", 2412 | "reference": "fd032489df469d611a264083e62db96677c9061e", 2413 | "shasum": "" 2414 | }, 2415 | "require": { 2416 | "laravel/framework": "~5.5.34", 2417 | "orchestra/testbench-core": "~3.5.9", 2418 | "php": ">=7.0", 2419 | "phpunit/phpunit": "~6.0" 2420 | }, 2421 | "require-dev": { 2422 | "mockery/mockery": "~1.0", 2423 | "orchestra/database": "~3.5.0" 2424 | }, 2425 | "suggest": { 2426 | "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.5)." 2427 | }, 2428 | "type": "library", 2429 | "extra": { 2430 | "branch-alias": { 2431 | "dev-master": "3.5-dev" 2432 | } 2433 | }, 2434 | "notification-url": "https://packagist.org/downloads/", 2435 | "license": [ 2436 | "MIT" 2437 | ], 2438 | "authors": [ 2439 | { 2440 | "name": "Mior Muhammad Zaki", 2441 | "email": "crynobone@gmail.com", 2442 | "homepage": "https://github.com/crynobone" 2443 | } 2444 | ], 2445 | "description": "Laravel Testing Helper for Packages Development", 2446 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 2447 | "keywords": [ 2448 | "BDD", 2449 | "TDD", 2450 | "laravel", 2451 | "orchestra-platform", 2452 | "orchestral", 2453 | "testing" 2454 | ], 2455 | "time": "2018-02-20T05:30:39+00:00" 2456 | }, 2457 | { 2458 | "name": "orchestra/testbench-core", 2459 | "version": "v3.5.10", 2460 | "source": { 2461 | "type": "git", 2462 | "url": "https://github.com/orchestral/testbench-core.git", 2463 | "reference": "09a57dc446a24fd19a75ff57b679b86094251f8e" 2464 | }, 2465 | "dist": { 2466 | "type": "zip", 2467 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/09a57dc446a24fd19a75ff57b679b86094251f8e", 2468 | "reference": "09a57dc446a24fd19a75ff57b679b86094251f8e", 2469 | "shasum": "" 2470 | }, 2471 | "require": { 2472 | "fzaninotto/faker": "~1.4", 2473 | "php": ">=7.0" 2474 | }, 2475 | "require-dev": { 2476 | "laravel/framework": "~5.5.0", 2477 | "mockery/mockery": "~1.0", 2478 | "orchestra/database": "~3.5.0", 2479 | "phpunit/phpunit": "~6.0" 2480 | }, 2481 | "suggest": { 2482 | "laravel/framework": "Required for testing (~5.5.0).", 2483 | "mockery/mockery": "Allow to use Mockery for testing (~1.0).", 2484 | "orchestra/database": "Allow to use --realpath migration for testing (~3.5).", 2485 | "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.5).", 2486 | "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (~3.5).", 2487 | "phpunit/phpunit": "Allow to use PHPUnit for testing (~6.0)." 2488 | }, 2489 | "type": "library", 2490 | "extra": { 2491 | "branch-alias": { 2492 | "dev-master": "3.5-dev" 2493 | } 2494 | }, 2495 | "autoload": { 2496 | "psr-4": { 2497 | "Orchestra\\Testbench\\": "src/" 2498 | } 2499 | }, 2500 | "notification-url": "https://packagist.org/downloads/", 2501 | "license": [ 2502 | "MIT" 2503 | ], 2504 | "authors": [ 2505 | { 2506 | "name": "Mior Muhammad Zaki", 2507 | "email": "crynobone@gmail.com", 2508 | "homepage": "https://github.com/crynobone" 2509 | } 2510 | ], 2511 | "description": "Testing Helper for Laravel Development", 2512 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 2513 | "keywords": [ 2514 | "BDD", 2515 | "TDD", 2516 | "laravel", 2517 | "orchestra-platform", 2518 | "orchestral", 2519 | "testing" 2520 | ], 2521 | "time": "2018-03-13T02:35:58+00:00" 2522 | }, 2523 | { 2524 | "name": "phar-io/manifest", 2525 | "version": "1.0.1", 2526 | "source": { 2527 | "type": "git", 2528 | "url": "https://github.com/phar-io/manifest.git", 2529 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 2530 | }, 2531 | "dist": { 2532 | "type": "zip", 2533 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 2534 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 2535 | "shasum": "" 2536 | }, 2537 | "require": { 2538 | "ext-dom": "*", 2539 | "ext-phar": "*", 2540 | "phar-io/version": "^1.0.1", 2541 | "php": "^5.6 || ^7.0" 2542 | }, 2543 | "type": "library", 2544 | "extra": { 2545 | "branch-alias": { 2546 | "dev-master": "1.0.x-dev" 2547 | } 2548 | }, 2549 | "autoload": { 2550 | "classmap": [ 2551 | "src/" 2552 | ] 2553 | }, 2554 | "notification-url": "https://packagist.org/downloads/", 2555 | "license": [ 2556 | "BSD-3-Clause" 2557 | ], 2558 | "authors": [ 2559 | { 2560 | "name": "Arne Blankerts", 2561 | "email": "arne@blankerts.de", 2562 | "role": "Developer" 2563 | }, 2564 | { 2565 | "name": "Sebastian Heuer", 2566 | "email": "sebastian@phpeople.de", 2567 | "role": "Developer" 2568 | }, 2569 | { 2570 | "name": "Sebastian Bergmann", 2571 | "email": "sebastian@phpunit.de", 2572 | "role": "Developer" 2573 | } 2574 | ], 2575 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 2576 | "time": "2017-03-05T18:14:27+00:00" 2577 | }, 2578 | { 2579 | "name": "phar-io/version", 2580 | "version": "1.0.1", 2581 | "source": { 2582 | "type": "git", 2583 | "url": "https://github.com/phar-io/version.git", 2584 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 2585 | }, 2586 | "dist": { 2587 | "type": "zip", 2588 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 2589 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 2590 | "shasum": "" 2591 | }, 2592 | "require": { 2593 | "php": "^5.6 || ^7.0" 2594 | }, 2595 | "type": "library", 2596 | "autoload": { 2597 | "classmap": [ 2598 | "src/" 2599 | ] 2600 | }, 2601 | "notification-url": "https://packagist.org/downloads/", 2602 | "license": [ 2603 | "BSD-3-Clause" 2604 | ], 2605 | "authors": [ 2606 | { 2607 | "name": "Arne Blankerts", 2608 | "email": "arne@blankerts.de", 2609 | "role": "Developer" 2610 | }, 2611 | { 2612 | "name": "Sebastian Heuer", 2613 | "email": "sebastian@phpeople.de", 2614 | "role": "Developer" 2615 | }, 2616 | { 2617 | "name": "Sebastian Bergmann", 2618 | "email": "sebastian@phpunit.de", 2619 | "role": "Developer" 2620 | } 2621 | ], 2622 | "description": "Library for handling version information and constraints", 2623 | "time": "2017-03-05T17:38:23+00:00" 2624 | }, 2625 | { 2626 | "name": "phpdocumentor/reflection-common", 2627 | "version": "1.0.1", 2628 | "source": { 2629 | "type": "git", 2630 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 2631 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 2632 | }, 2633 | "dist": { 2634 | "type": "zip", 2635 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 2636 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 2637 | "shasum": "" 2638 | }, 2639 | "require": { 2640 | "php": ">=5.5" 2641 | }, 2642 | "require-dev": { 2643 | "phpunit/phpunit": "^4.6" 2644 | }, 2645 | "type": "library", 2646 | "extra": { 2647 | "branch-alias": { 2648 | "dev-master": "1.0.x-dev" 2649 | } 2650 | }, 2651 | "autoload": { 2652 | "psr-4": { 2653 | "phpDocumentor\\Reflection\\": [ 2654 | "src" 2655 | ] 2656 | } 2657 | }, 2658 | "notification-url": "https://packagist.org/downloads/", 2659 | "license": [ 2660 | "MIT" 2661 | ], 2662 | "authors": [ 2663 | { 2664 | "name": "Jaap van Otterdijk", 2665 | "email": "opensource@ijaap.nl" 2666 | } 2667 | ], 2668 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 2669 | "homepage": "http://www.phpdoc.org", 2670 | "keywords": [ 2671 | "FQSEN", 2672 | "phpDocumentor", 2673 | "phpdoc", 2674 | "reflection", 2675 | "static analysis" 2676 | ], 2677 | "time": "2017-09-11T18:02:19+00:00" 2678 | }, 2679 | { 2680 | "name": "phpdocumentor/reflection-docblock", 2681 | "version": "4.3.0", 2682 | "source": { 2683 | "type": "git", 2684 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 2685 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 2686 | }, 2687 | "dist": { 2688 | "type": "zip", 2689 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 2690 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 2691 | "shasum": "" 2692 | }, 2693 | "require": { 2694 | "php": "^7.0", 2695 | "phpdocumentor/reflection-common": "^1.0.0", 2696 | "phpdocumentor/type-resolver": "^0.4.0", 2697 | "webmozart/assert": "^1.0" 2698 | }, 2699 | "require-dev": { 2700 | "doctrine/instantiator": "~1.0.5", 2701 | "mockery/mockery": "^1.0", 2702 | "phpunit/phpunit": "^6.4" 2703 | }, 2704 | "type": "library", 2705 | "extra": { 2706 | "branch-alias": { 2707 | "dev-master": "4.x-dev" 2708 | } 2709 | }, 2710 | "autoload": { 2711 | "psr-4": { 2712 | "phpDocumentor\\Reflection\\": [ 2713 | "src/" 2714 | ] 2715 | } 2716 | }, 2717 | "notification-url": "https://packagist.org/downloads/", 2718 | "license": [ 2719 | "MIT" 2720 | ], 2721 | "authors": [ 2722 | { 2723 | "name": "Mike van Riel", 2724 | "email": "me@mikevanriel.com" 2725 | } 2726 | ], 2727 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 2728 | "time": "2017-11-30T07:14:17+00:00" 2729 | }, 2730 | { 2731 | "name": "phpdocumentor/type-resolver", 2732 | "version": "0.4.0", 2733 | "source": { 2734 | "type": "git", 2735 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 2736 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 2737 | }, 2738 | "dist": { 2739 | "type": "zip", 2740 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 2741 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 2742 | "shasum": "" 2743 | }, 2744 | "require": { 2745 | "php": "^5.5 || ^7.0", 2746 | "phpdocumentor/reflection-common": "^1.0" 2747 | }, 2748 | "require-dev": { 2749 | "mockery/mockery": "^0.9.4", 2750 | "phpunit/phpunit": "^5.2||^4.8.24" 2751 | }, 2752 | "type": "library", 2753 | "extra": { 2754 | "branch-alias": { 2755 | "dev-master": "1.0.x-dev" 2756 | } 2757 | }, 2758 | "autoload": { 2759 | "psr-4": { 2760 | "phpDocumentor\\Reflection\\": [ 2761 | "src/" 2762 | ] 2763 | } 2764 | }, 2765 | "notification-url": "https://packagist.org/downloads/", 2766 | "license": [ 2767 | "MIT" 2768 | ], 2769 | "authors": [ 2770 | { 2771 | "name": "Mike van Riel", 2772 | "email": "me@mikevanriel.com" 2773 | } 2774 | ], 2775 | "time": "2017-07-14T14:27:02+00:00" 2776 | }, 2777 | { 2778 | "name": "phpspec/prophecy", 2779 | "version": "1.8.0", 2780 | "source": { 2781 | "type": "git", 2782 | "url": "https://github.com/phpspec/prophecy.git", 2783 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 2784 | }, 2785 | "dist": { 2786 | "type": "zip", 2787 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 2788 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 2789 | "shasum": "" 2790 | }, 2791 | "require": { 2792 | "doctrine/instantiator": "^1.0.2", 2793 | "php": "^5.3|^7.0", 2794 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 2795 | "sebastian/comparator": "^1.1|^2.0|^3.0", 2796 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 2797 | }, 2798 | "require-dev": { 2799 | "phpspec/phpspec": "^2.5|^3.2", 2800 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 2801 | }, 2802 | "type": "library", 2803 | "extra": { 2804 | "branch-alias": { 2805 | "dev-master": "1.8.x-dev" 2806 | } 2807 | }, 2808 | "autoload": { 2809 | "psr-0": { 2810 | "Prophecy\\": "src/" 2811 | } 2812 | }, 2813 | "notification-url": "https://packagist.org/downloads/", 2814 | "license": [ 2815 | "MIT" 2816 | ], 2817 | "authors": [ 2818 | { 2819 | "name": "Konstantin Kudryashov", 2820 | "email": "ever.zet@gmail.com", 2821 | "homepage": "http://everzet.com" 2822 | }, 2823 | { 2824 | "name": "Marcello Duarte", 2825 | "email": "marcello.duarte@gmail.com" 2826 | } 2827 | ], 2828 | "description": "Highly opinionated mocking framework for PHP 5.3+", 2829 | "homepage": "https://github.com/phpspec/prophecy", 2830 | "keywords": [ 2831 | "Double", 2832 | "Dummy", 2833 | "fake", 2834 | "mock", 2835 | "spy", 2836 | "stub" 2837 | ], 2838 | "time": "2018-08-05T17:53:17+00:00" 2839 | }, 2840 | { 2841 | "name": "phpunit/php-code-coverage", 2842 | "version": "5.3.2", 2843 | "source": { 2844 | "type": "git", 2845 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2846 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac" 2847 | }, 2848 | "dist": { 2849 | "type": "zip", 2850 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", 2851 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac", 2852 | "shasum": "" 2853 | }, 2854 | "require": { 2855 | "ext-dom": "*", 2856 | "ext-xmlwriter": "*", 2857 | "php": "^7.0", 2858 | "phpunit/php-file-iterator": "^1.4.2", 2859 | "phpunit/php-text-template": "^1.2.1", 2860 | "phpunit/php-token-stream": "^2.0.1", 2861 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 2862 | "sebastian/environment": "^3.0", 2863 | "sebastian/version": "^2.0.1", 2864 | "theseer/tokenizer": "^1.1" 2865 | }, 2866 | "require-dev": { 2867 | "phpunit/phpunit": "^6.0" 2868 | }, 2869 | "suggest": { 2870 | "ext-xdebug": "^2.5.5" 2871 | }, 2872 | "type": "library", 2873 | "extra": { 2874 | "branch-alias": { 2875 | "dev-master": "5.3.x-dev" 2876 | } 2877 | }, 2878 | "autoload": { 2879 | "classmap": [ 2880 | "src/" 2881 | ] 2882 | }, 2883 | "notification-url": "https://packagist.org/downloads/", 2884 | "license": [ 2885 | "BSD-3-Clause" 2886 | ], 2887 | "authors": [ 2888 | { 2889 | "name": "Sebastian Bergmann", 2890 | "email": "sebastian@phpunit.de", 2891 | "role": "lead" 2892 | } 2893 | ], 2894 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2895 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2896 | "keywords": [ 2897 | "coverage", 2898 | "testing", 2899 | "xunit" 2900 | ], 2901 | "time": "2018-04-06T15:36:58+00:00" 2902 | }, 2903 | { 2904 | "name": "phpunit/php-file-iterator", 2905 | "version": "1.4.5", 2906 | "source": { 2907 | "type": "git", 2908 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2909 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 2910 | }, 2911 | "dist": { 2912 | "type": "zip", 2913 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 2914 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 2915 | "shasum": "" 2916 | }, 2917 | "require": { 2918 | "php": ">=5.3.3" 2919 | }, 2920 | "type": "library", 2921 | "extra": { 2922 | "branch-alias": { 2923 | "dev-master": "1.4.x-dev" 2924 | } 2925 | }, 2926 | "autoload": { 2927 | "classmap": [ 2928 | "src/" 2929 | ] 2930 | }, 2931 | "notification-url": "https://packagist.org/downloads/", 2932 | "license": [ 2933 | "BSD-3-Clause" 2934 | ], 2935 | "authors": [ 2936 | { 2937 | "name": "Sebastian Bergmann", 2938 | "email": "sb@sebastian-bergmann.de", 2939 | "role": "lead" 2940 | } 2941 | ], 2942 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2943 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2944 | "keywords": [ 2945 | "filesystem", 2946 | "iterator" 2947 | ], 2948 | "time": "2017-11-27T13:52:08+00:00" 2949 | }, 2950 | { 2951 | "name": "phpunit/php-text-template", 2952 | "version": "1.2.1", 2953 | "source": { 2954 | "type": "git", 2955 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2956 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 2957 | }, 2958 | "dist": { 2959 | "type": "zip", 2960 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2961 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2962 | "shasum": "" 2963 | }, 2964 | "require": { 2965 | "php": ">=5.3.3" 2966 | }, 2967 | "type": "library", 2968 | "autoload": { 2969 | "classmap": [ 2970 | "src/" 2971 | ] 2972 | }, 2973 | "notification-url": "https://packagist.org/downloads/", 2974 | "license": [ 2975 | "BSD-3-Clause" 2976 | ], 2977 | "authors": [ 2978 | { 2979 | "name": "Sebastian Bergmann", 2980 | "email": "sebastian@phpunit.de", 2981 | "role": "lead" 2982 | } 2983 | ], 2984 | "description": "Simple template engine.", 2985 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2986 | "keywords": [ 2987 | "template" 2988 | ], 2989 | "time": "2015-06-21T13:50:34+00:00" 2990 | }, 2991 | { 2992 | "name": "phpunit/php-timer", 2993 | "version": "1.0.9", 2994 | "source": { 2995 | "type": "git", 2996 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2997 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 2998 | }, 2999 | "dist": { 3000 | "type": "zip", 3001 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 3002 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 3003 | "shasum": "" 3004 | }, 3005 | "require": { 3006 | "php": "^5.3.3 || ^7.0" 3007 | }, 3008 | "require-dev": { 3009 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3010 | }, 3011 | "type": "library", 3012 | "extra": { 3013 | "branch-alias": { 3014 | "dev-master": "1.0-dev" 3015 | } 3016 | }, 3017 | "autoload": { 3018 | "classmap": [ 3019 | "src/" 3020 | ] 3021 | }, 3022 | "notification-url": "https://packagist.org/downloads/", 3023 | "license": [ 3024 | "BSD-3-Clause" 3025 | ], 3026 | "authors": [ 3027 | { 3028 | "name": "Sebastian Bergmann", 3029 | "email": "sb@sebastian-bergmann.de", 3030 | "role": "lead" 3031 | } 3032 | ], 3033 | "description": "Utility class for timing", 3034 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 3035 | "keywords": [ 3036 | "timer" 3037 | ], 3038 | "time": "2017-02-26T11:10:40+00:00" 3039 | }, 3040 | { 3041 | "name": "phpunit/php-token-stream", 3042 | "version": "2.0.2", 3043 | "source": { 3044 | "type": "git", 3045 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 3046 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 3047 | }, 3048 | "dist": { 3049 | "type": "zip", 3050 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 3051 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 3052 | "shasum": "" 3053 | }, 3054 | "require": { 3055 | "ext-tokenizer": "*", 3056 | "php": "^7.0" 3057 | }, 3058 | "require-dev": { 3059 | "phpunit/phpunit": "^6.2.4" 3060 | }, 3061 | "type": "library", 3062 | "extra": { 3063 | "branch-alias": { 3064 | "dev-master": "2.0-dev" 3065 | } 3066 | }, 3067 | "autoload": { 3068 | "classmap": [ 3069 | "src/" 3070 | ] 3071 | }, 3072 | "notification-url": "https://packagist.org/downloads/", 3073 | "license": [ 3074 | "BSD-3-Clause" 3075 | ], 3076 | "authors": [ 3077 | { 3078 | "name": "Sebastian Bergmann", 3079 | "email": "sebastian@phpunit.de" 3080 | } 3081 | ], 3082 | "description": "Wrapper around PHP's tokenizer extension.", 3083 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 3084 | "keywords": [ 3085 | "tokenizer" 3086 | ], 3087 | "time": "2017-11-27T05:48:46+00:00" 3088 | }, 3089 | { 3090 | "name": "phpunit/phpunit", 3091 | "version": "6.5.14", 3092 | "source": { 3093 | "type": "git", 3094 | "url": "https://github.com/sebastianbergmann/phpunit.git", 3095 | "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" 3096 | }, 3097 | "dist": { 3098 | "type": "zip", 3099 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", 3100 | "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", 3101 | "shasum": "" 3102 | }, 3103 | "require": { 3104 | "ext-dom": "*", 3105 | "ext-json": "*", 3106 | "ext-libxml": "*", 3107 | "ext-mbstring": "*", 3108 | "ext-xml": "*", 3109 | "myclabs/deep-copy": "^1.6.1", 3110 | "phar-io/manifest": "^1.0.1", 3111 | "phar-io/version": "^1.0", 3112 | "php": "^7.0", 3113 | "phpspec/prophecy": "^1.7", 3114 | "phpunit/php-code-coverage": "^5.3", 3115 | "phpunit/php-file-iterator": "^1.4.3", 3116 | "phpunit/php-text-template": "^1.2.1", 3117 | "phpunit/php-timer": "^1.0.9", 3118 | "phpunit/phpunit-mock-objects": "^5.0.9", 3119 | "sebastian/comparator": "^2.1", 3120 | "sebastian/diff": "^2.0", 3121 | "sebastian/environment": "^3.1", 3122 | "sebastian/exporter": "^3.1", 3123 | "sebastian/global-state": "^2.0", 3124 | "sebastian/object-enumerator": "^3.0.3", 3125 | "sebastian/resource-operations": "^1.0", 3126 | "sebastian/version": "^2.0.1" 3127 | }, 3128 | "conflict": { 3129 | "phpdocumentor/reflection-docblock": "3.0.2", 3130 | "phpunit/dbunit": "<3.0" 3131 | }, 3132 | "require-dev": { 3133 | "ext-pdo": "*" 3134 | }, 3135 | "suggest": { 3136 | "ext-xdebug": "*", 3137 | "phpunit/php-invoker": "^1.1" 3138 | }, 3139 | "bin": [ 3140 | "phpunit" 3141 | ], 3142 | "type": "library", 3143 | "extra": { 3144 | "branch-alias": { 3145 | "dev-master": "6.5.x-dev" 3146 | } 3147 | }, 3148 | "autoload": { 3149 | "classmap": [ 3150 | "src/" 3151 | ] 3152 | }, 3153 | "notification-url": "https://packagist.org/downloads/", 3154 | "license": [ 3155 | "BSD-3-Clause" 3156 | ], 3157 | "authors": [ 3158 | { 3159 | "name": "Sebastian Bergmann", 3160 | "email": "sebastian@phpunit.de", 3161 | "role": "lead" 3162 | } 3163 | ], 3164 | "description": "The PHP Unit Testing framework.", 3165 | "homepage": "https://phpunit.de/", 3166 | "keywords": [ 3167 | "phpunit", 3168 | "testing", 3169 | "xunit" 3170 | ], 3171 | "time": "2019-02-01T05:22:47+00:00" 3172 | }, 3173 | { 3174 | "name": "phpunit/phpunit-mock-objects", 3175 | "version": "5.0.10", 3176 | "source": { 3177 | "type": "git", 3178 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 3179 | "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" 3180 | }, 3181 | "dist": { 3182 | "type": "zip", 3183 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", 3184 | "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", 3185 | "shasum": "" 3186 | }, 3187 | "require": { 3188 | "doctrine/instantiator": "^1.0.5", 3189 | "php": "^7.0", 3190 | "phpunit/php-text-template": "^1.2.1", 3191 | "sebastian/exporter": "^3.1" 3192 | }, 3193 | "conflict": { 3194 | "phpunit/phpunit": "<6.0" 3195 | }, 3196 | "require-dev": { 3197 | "phpunit/phpunit": "^6.5.11" 3198 | }, 3199 | "suggest": { 3200 | "ext-soap": "*" 3201 | }, 3202 | "type": "library", 3203 | "extra": { 3204 | "branch-alias": { 3205 | "dev-master": "5.0.x-dev" 3206 | } 3207 | }, 3208 | "autoload": { 3209 | "classmap": [ 3210 | "src/" 3211 | ] 3212 | }, 3213 | "notification-url": "https://packagist.org/downloads/", 3214 | "license": [ 3215 | "BSD-3-Clause" 3216 | ], 3217 | "authors": [ 3218 | { 3219 | "name": "Sebastian Bergmann", 3220 | "email": "sebastian@phpunit.de", 3221 | "role": "lead" 3222 | } 3223 | ], 3224 | "description": "Mock Object library for PHPUnit", 3225 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 3226 | "keywords": [ 3227 | "mock", 3228 | "xunit" 3229 | ], 3230 | "abandoned": true, 3231 | "time": "2018-08-09T05:50:03+00:00" 3232 | }, 3233 | { 3234 | "name": "psr/http-message", 3235 | "version": "1.0.1", 3236 | "source": { 3237 | "type": "git", 3238 | "url": "https://github.com/php-fig/http-message.git", 3239 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 3240 | }, 3241 | "dist": { 3242 | "type": "zip", 3243 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 3244 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 3245 | "shasum": "" 3246 | }, 3247 | "require": { 3248 | "php": ">=5.3.0" 3249 | }, 3250 | "type": "library", 3251 | "extra": { 3252 | "branch-alias": { 3253 | "dev-master": "1.0.x-dev" 3254 | } 3255 | }, 3256 | "autoload": { 3257 | "psr-4": { 3258 | "Psr\\Http\\Message\\": "src/" 3259 | } 3260 | }, 3261 | "notification-url": "https://packagist.org/downloads/", 3262 | "license": [ 3263 | "MIT" 3264 | ], 3265 | "authors": [ 3266 | { 3267 | "name": "PHP-FIG", 3268 | "homepage": "http://www.php-fig.org/" 3269 | } 3270 | ], 3271 | "description": "Common interface for HTTP messages", 3272 | "homepage": "https://github.com/php-fig/http-message", 3273 | "keywords": [ 3274 | "http", 3275 | "http-message", 3276 | "psr", 3277 | "psr-7", 3278 | "request", 3279 | "response" 3280 | ], 3281 | "time": "2016-08-06T14:39:51+00:00" 3282 | }, 3283 | { 3284 | "name": "ralouphie/getallheaders", 3285 | "version": "2.0.5", 3286 | "source": { 3287 | "type": "git", 3288 | "url": "https://github.com/ralouphie/getallheaders.git", 3289 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" 3290 | }, 3291 | "dist": { 3292 | "type": "zip", 3293 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", 3294 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", 3295 | "shasum": "" 3296 | }, 3297 | "require": { 3298 | "php": ">=5.3" 3299 | }, 3300 | "require-dev": { 3301 | "phpunit/phpunit": "~3.7.0", 3302 | "satooshi/php-coveralls": ">=1.0" 3303 | }, 3304 | "type": "library", 3305 | "autoload": { 3306 | "files": [ 3307 | "src/getallheaders.php" 3308 | ] 3309 | }, 3310 | "notification-url": "https://packagist.org/downloads/", 3311 | "license": [ 3312 | "MIT" 3313 | ], 3314 | "authors": [ 3315 | { 3316 | "name": "Ralph Khattar", 3317 | "email": "ralph.khattar@gmail.com" 3318 | } 3319 | ], 3320 | "description": "A polyfill for getallheaders.", 3321 | "time": "2016-02-11T07:05:27+00:00" 3322 | }, 3323 | { 3324 | "name": "sebastian/code-unit-reverse-lookup", 3325 | "version": "1.0.1", 3326 | "source": { 3327 | "type": "git", 3328 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 3329 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 3330 | }, 3331 | "dist": { 3332 | "type": "zip", 3333 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3334 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3335 | "shasum": "" 3336 | }, 3337 | "require": { 3338 | "php": "^5.6 || ^7.0" 3339 | }, 3340 | "require-dev": { 3341 | "phpunit/phpunit": "^5.7 || ^6.0" 3342 | }, 3343 | "type": "library", 3344 | "extra": { 3345 | "branch-alias": { 3346 | "dev-master": "1.0.x-dev" 3347 | } 3348 | }, 3349 | "autoload": { 3350 | "classmap": [ 3351 | "src/" 3352 | ] 3353 | }, 3354 | "notification-url": "https://packagist.org/downloads/", 3355 | "license": [ 3356 | "BSD-3-Clause" 3357 | ], 3358 | "authors": [ 3359 | { 3360 | "name": "Sebastian Bergmann", 3361 | "email": "sebastian@phpunit.de" 3362 | } 3363 | ], 3364 | "description": "Looks up which function or method a line of code belongs to", 3365 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 3366 | "time": "2017-03-04T06:30:41+00:00" 3367 | }, 3368 | { 3369 | "name": "sebastian/comparator", 3370 | "version": "2.1.3", 3371 | "source": { 3372 | "type": "git", 3373 | "url": "https://github.com/sebastianbergmann/comparator.git", 3374 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" 3375 | }, 3376 | "dist": { 3377 | "type": "zip", 3378 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", 3379 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", 3380 | "shasum": "" 3381 | }, 3382 | "require": { 3383 | "php": "^7.0", 3384 | "sebastian/diff": "^2.0 || ^3.0", 3385 | "sebastian/exporter": "^3.1" 3386 | }, 3387 | "require-dev": { 3388 | "phpunit/phpunit": "^6.4" 3389 | }, 3390 | "type": "library", 3391 | "extra": { 3392 | "branch-alias": { 3393 | "dev-master": "2.1.x-dev" 3394 | } 3395 | }, 3396 | "autoload": { 3397 | "classmap": [ 3398 | "src/" 3399 | ] 3400 | }, 3401 | "notification-url": "https://packagist.org/downloads/", 3402 | "license": [ 3403 | "BSD-3-Clause" 3404 | ], 3405 | "authors": [ 3406 | { 3407 | "name": "Jeff Welch", 3408 | "email": "whatthejeff@gmail.com" 3409 | }, 3410 | { 3411 | "name": "Volker Dusch", 3412 | "email": "github@wallbash.com" 3413 | }, 3414 | { 3415 | "name": "Bernhard Schussek", 3416 | "email": "bschussek@2bepublished.at" 3417 | }, 3418 | { 3419 | "name": "Sebastian Bergmann", 3420 | "email": "sebastian@phpunit.de" 3421 | } 3422 | ], 3423 | "description": "Provides the functionality to compare PHP values for equality", 3424 | "homepage": "https://github.com/sebastianbergmann/comparator", 3425 | "keywords": [ 3426 | "comparator", 3427 | "compare", 3428 | "equality" 3429 | ], 3430 | "time": "2018-02-01T13:46:46+00:00" 3431 | }, 3432 | { 3433 | "name": "sebastian/diff", 3434 | "version": "2.0.1", 3435 | "source": { 3436 | "type": "git", 3437 | "url": "https://github.com/sebastianbergmann/diff.git", 3438 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" 3439 | }, 3440 | "dist": { 3441 | "type": "zip", 3442 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 3443 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 3444 | "shasum": "" 3445 | }, 3446 | "require": { 3447 | "php": "^7.0" 3448 | }, 3449 | "require-dev": { 3450 | "phpunit/phpunit": "^6.2" 3451 | }, 3452 | "type": "library", 3453 | "extra": { 3454 | "branch-alias": { 3455 | "dev-master": "2.0-dev" 3456 | } 3457 | }, 3458 | "autoload": { 3459 | "classmap": [ 3460 | "src/" 3461 | ] 3462 | }, 3463 | "notification-url": "https://packagist.org/downloads/", 3464 | "license": [ 3465 | "BSD-3-Clause" 3466 | ], 3467 | "authors": [ 3468 | { 3469 | "name": "Kore Nordmann", 3470 | "email": "mail@kore-nordmann.de" 3471 | }, 3472 | { 3473 | "name": "Sebastian Bergmann", 3474 | "email": "sebastian@phpunit.de" 3475 | } 3476 | ], 3477 | "description": "Diff implementation", 3478 | "homepage": "https://github.com/sebastianbergmann/diff", 3479 | "keywords": [ 3480 | "diff" 3481 | ], 3482 | "time": "2017-08-03T08:09:46+00:00" 3483 | }, 3484 | { 3485 | "name": "sebastian/environment", 3486 | "version": "3.1.0", 3487 | "source": { 3488 | "type": "git", 3489 | "url": "https://github.com/sebastianbergmann/environment.git", 3490 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 3491 | }, 3492 | "dist": { 3493 | "type": "zip", 3494 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 3495 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 3496 | "shasum": "" 3497 | }, 3498 | "require": { 3499 | "php": "^7.0" 3500 | }, 3501 | "require-dev": { 3502 | "phpunit/phpunit": "^6.1" 3503 | }, 3504 | "type": "library", 3505 | "extra": { 3506 | "branch-alias": { 3507 | "dev-master": "3.1.x-dev" 3508 | } 3509 | }, 3510 | "autoload": { 3511 | "classmap": [ 3512 | "src/" 3513 | ] 3514 | }, 3515 | "notification-url": "https://packagist.org/downloads/", 3516 | "license": [ 3517 | "BSD-3-Clause" 3518 | ], 3519 | "authors": [ 3520 | { 3521 | "name": "Sebastian Bergmann", 3522 | "email": "sebastian@phpunit.de" 3523 | } 3524 | ], 3525 | "description": "Provides functionality to handle HHVM/PHP environments", 3526 | "homepage": "http://www.github.com/sebastianbergmann/environment", 3527 | "keywords": [ 3528 | "Xdebug", 3529 | "environment", 3530 | "hhvm" 3531 | ], 3532 | "time": "2017-07-01T08:51:00+00:00" 3533 | }, 3534 | { 3535 | "name": "sebastian/exporter", 3536 | "version": "3.1.0", 3537 | "source": { 3538 | "type": "git", 3539 | "url": "https://github.com/sebastianbergmann/exporter.git", 3540 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 3541 | }, 3542 | "dist": { 3543 | "type": "zip", 3544 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 3545 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 3546 | "shasum": "" 3547 | }, 3548 | "require": { 3549 | "php": "^7.0", 3550 | "sebastian/recursion-context": "^3.0" 3551 | }, 3552 | "require-dev": { 3553 | "ext-mbstring": "*", 3554 | "phpunit/phpunit": "^6.0" 3555 | }, 3556 | "type": "library", 3557 | "extra": { 3558 | "branch-alias": { 3559 | "dev-master": "3.1.x-dev" 3560 | } 3561 | }, 3562 | "autoload": { 3563 | "classmap": [ 3564 | "src/" 3565 | ] 3566 | }, 3567 | "notification-url": "https://packagist.org/downloads/", 3568 | "license": [ 3569 | "BSD-3-Clause" 3570 | ], 3571 | "authors": [ 3572 | { 3573 | "name": "Jeff Welch", 3574 | "email": "whatthejeff@gmail.com" 3575 | }, 3576 | { 3577 | "name": "Volker Dusch", 3578 | "email": "github@wallbash.com" 3579 | }, 3580 | { 3581 | "name": "Bernhard Schussek", 3582 | "email": "bschussek@2bepublished.at" 3583 | }, 3584 | { 3585 | "name": "Sebastian Bergmann", 3586 | "email": "sebastian@phpunit.de" 3587 | }, 3588 | { 3589 | "name": "Adam Harvey", 3590 | "email": "aharvey@php.net" 3591 | } 3592 | ], 3593 | "description": "Provides the functionality to export PHP variables for visualization", 3594 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 3595 | "keywords": [ 3596 | "export", 3597 | "exporter" 3598 | ], 3599 | "time": "2017-04-03T13:19:02+00:00" 3600 | }, 3601 | { 3602 | "name": "sebastian/global-state", 3603 | "version": "2.0.0", 3604 | "source": { 3605 | "type": "git", 3606 | "url": "https://github.com/sebastianbergmann/global-state.git", 3607 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 3608 | }, 3609 | "dist": { 3610 | "type": "zip", 3611 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 3612 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 3613 | "shasum": "" 3614 | }, 3615 | "require": { 3616 | "php": "^7.0" 3617 | }, 3618 | "require-dev": { 3619 | "phpunit/phpunit": "^6.0" 3620 | }, 3621 | "suggest": { 3622 | "ext-uopz": "*" 3623 | }, 3624 | "type": "library", 3625 | "extra": { 3626 | "branch-alias": { 3627 | "dev-master": "2.0-dev" 3628 | } 3629 | }, 3630 | "autoload": { 3631 | "classmap": [ 3632 | "src/" 3633 | ] 3634 | }, 3635 | "notification-url": "https://packagist.org/downloads/", 3636 | "license": [ 3637 | "BSD-3-Clause" 3638 | ], 3639 | "authors": [ 3640 | { 3641 | "name": "Sebastian Bergmann", 3642 | "email": "sebastian@phpunit.de" 3643 | } 3644 | ], 3645 | "description": "Snapshotting of global state", 3646 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 3647 | "keywords": [ 3648 | "global state" 3649 | ], 3650 | "time": "2017-04-27T15:39:26+00:00" 3651 | }, 3652 | { 3653 | "name": "sebastian/object-enumerator", 3654 | "version": "3.0.3", 3655 | "source": { 3656 | "type": "git", 3657 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 3658 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 3659 | }, 3660 | "dist": { 3661 | "type": "zip", 3662 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3663 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3664 | "shasum": "" 3665 | }, 3666 | "require": { 3667 | "php": "^7.0", 3668 | "sebastian/object-reflector": "^1.1.1", 3669 | "sebastian/recursion-context": "^3.0" 3670 | }, 3671 | "require-dev": { 3672 | "phpunit/phpunit": "^6.0" 3673 | }, 3674 | "type": "library", 3675 | "extra": { 3676 | "branch-alias": { 3677 | "dev-master": "3.0.x-dev" 3678 | } 3679 | }, 3680 | "autoload": { 3681 | "classmap": [ 3682 | "src/" 3683 | ] 3684 | }, 3685 | "notification-url": "https://packagist.org/downloads/", 3686 | "license": [ 3687 | "BSD-3-Clause" 3688 | ], 3689 | "authors": [ 3690 | { 3691 | "name": "Sebastian Bergmann", 3692 | "email": "sebastian@phpunit.de" 3693 | } 3694 | ], 3695 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3696 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3697 | "time": "2017-08-03T12:35:26+00:00" 3698 | }, 3699 | { 3700 | "name": "sebastian/object-reflector", 3701 | "version": "1.1.1", 3702 | "source": { 3703 | "type": "git", 3704 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 3705 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 3706 | }, 3707 | "dist": { 3708 | "type": "zip", 3709 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 3710 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 3711 | "shasum": "" 3712 | }, 3713 | "require": { 3714 | "php": "^7.0" 3715 | }, 3716 | "require-dev": { 3717 | "phpunit/phpunit": "^6.0" 3718 | }, 3719 | "type": "library", 3720 | "extra": { 3721 | "branch-alias": { 3722 | "dev-master": "1.1-dev" 3723 | } 3724 | }, 3725 | "autoload": { 3726 | "classmap": [ 3727 | "src/" 3728 | ] 3729 | }, 3730 | "notification-url": "https://packagist.org/downloads/", 3731 | "license": [ 3732 | "BSD-3-Clause" 3733 | ], 3734 | "authors": [ 3735 | { 3736 | "name": "Sebastian Bergmann", 3737 | "email": "sebastian@phpunit.de" 3738 | } 3739 | ], 3740 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 3741 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 3742 | "time": "2017-03-29T09:07:27+00:00" 3743 | }, 3744 | { 3745 | "name": "sebastian/recursion-context", 3746 | "version": "3.0.0", 3747 | "source": { 3748 | "type": "git", 3749 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3750 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 3751 | }, 3752 | "dist": { 3753 | "type": "zip", 3754 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3755 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3756 | "shasum": "" 3757 | }, 3758 | "require": { 3759 | "php": "^7.0" 3760 | }, 3761 | "require-dev": { 3762 | "phpunit/phpunit": "^6.0" 3763 | }, 3764 | "type": "library", 3765 | "extra": { 3766 | "branch-alias": { 3767 | "dev-master": "3.0.x-dev" 3768 | } 3769 | }, 3770 | "autoload": { 3771 | "classmap": [ 3772 | "src/" 3773 | ] 3774 | }, 3775 | "notification-url": "https://packagist.org/downloads/", 3776 | "license": [ 3777 | "BSD-3-Clause" 3778 | ], 3779 | "authors": [ 3780 | { 3781 | "name": "Jeff Welch", 3782 | "email": "whatthejeff@gmail.com" 3783 | }, 3784 | { 3785 | "name": "Sebastian Bergmann", 3786 | "email": "sebastian@phpunit.de" 3787 | }, 3788 | { 3789 | "name": "Adam Harvey", 3790 | "email": "aharvey@php.net" 3791 | } 3792 | ], 3793 | "description": "Provides functionality to recursively process PHP variables", 3794 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 3795 | "time": "2017-03-03T06:23:57+00:00" 3796 | }, 3797 | { 3798 | "name": "sebastian/resource-operations", 3799 | "version": "1.0.0", 3800 | "source": { 3801 | "type": "git", 3802 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 3803 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 3804 | }, 3805 | "dist": { 3806 | "type": "zip", 3807 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3808 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3809 | "shasum": "" 3810 | }, 3811 | "require": { 3812 | "php": ">=5.6.0" 3813 | }, 3814 | "type": "library", 3815 | "extra": { 3816 | "branch-alias": { 3817 | "dev-master": "1.0.x-dev" 3818 | } 3819 | }, 3820 | "autoload": { 3821 | "classmap": [ 3822 | "src/" 3823 | ] 3824 | }, 3825 | "notification-url": "https://packagist.org/downloads/", 3826 | "license": [ 3827 | "BSD-3-Clause" 3828 | ], 3829 | "authors": [ 3830 | { 3831 | "name": "Sebastian Bergmann", 3832 | "email": "sebastian@phpunit.de" 3833 | } 3834 | ], 3835 | "description": "Provides a list of PHP built-in functions that operate on resources", 3836 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 3837 | "time": "2015-07-28T20:34:47+00:00" 3838 | }, 3839 | { 3840 | "name": "sebastian/version", 3841 | "version": "2.0.1", 3842 | "source": { 3843 | "type": "git", 3844 | "url": "https://github.com/sebastianbergmann/version.git", 3845 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 3846 | }, 3847 | "dist": { 3848 | "type": "zip", 3849 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 3850 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 3851 | "shasum": "" 3852 | }, 3853 | "require": { 3854 | "php": ">=5.6" 3855 | }, 3856 | "type": "library", 3857 | "extra": { 3858 | "branch-alias": { 3859 | "dev-master": "2.0.x-dev" 3860 | } 3861 | }, 3862 | "autoload": { 3863 | "classmap": [ 3864 | "src/" 3865 | ] 3866 | }, 3867 | "notification-url": "https://packagist.org/downloads/", 3868 | "license": [ 3869 | "BSD-3-Clause" 3870 | ], 3871 | "authors": [ 3872 | { 3873 | "name": "Sebastian Bergmann", 3874 | "email": "sebastian@phpunit.de", 3875 | "role": "lead" 3876 | } 3877 | ], 3878 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3879 | "homepage": "https://github.com/sebastianbergmann/version", 3880 | "time": "2016-10-03T07:35:21+00:00" 3881 | }, 3882 | { 3883 | "name": "squizlabs/php_codesniffer", 3884 | "version": "3.4.0", 3885 | "source": { 3886 | "type": "git", 3887 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 3888 | "reference": "379deb987e26c7cd103a7b387aea178baec96e48" 3889 | }, 3890 | "dist": { 3891 | "type": "zip", 3892 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", 3893 | "reference": "379deb987e26c7cd103a7b387aea178baec96e48", 3894 | "shasum": "" 3895 | }, 3896 | "require": { 3897 | "ext-simplexml": "*", 3898 | "ext-tokenizer": "*", 3899 | "ext-xmlwriter": "*", 3900 | "php": ">=5.4.0" 3901 | }, 3902 | "require-dev": { 3903 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 3904 | }, 3905 | "bin": [ 3906 | "bin/phpcs", 3907 | "bin/phpcbf" 3908 | ], 3909 | "type": "library", 3910 | "extra": { 3911 | "branch-alias": { 3912 | "dev-master": "3.x-dev" 3913 | } 3914 | }, 3915 | "notification-url": "https://packagist.org/downloads/", 3916 | "license": [ 3917 | "BSD-3-Clause" 3918 | ], 3919 | "authors": [ 3920 | { 3921 | "name": "Greg Sherwood", 3922 | "role": "lead" 3923 | } 3924 | ], 3925 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 3926 | "homepage": "http://www.squizlabs.com/php-codesniffer", 3927 | "keywords": [ 3928 | "phpcs", 3929 | "standards" 3930 | ], 3931 | "time": "2018-12-19T23:57:18+00:00" 3932 | }, 3933 | { 3934 | "name": "theseer/tokenizer", 3935 | "version": "1.1.0", 3936 | "source": { 3937 | "type": "git", 3938 | "url": "https://github.com/theseer/tokenizer.git", 3939 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 3940 | }, 3941 | "dist": { 3942 | "type": "zip", 3943 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 3944 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 3945 | "shasum": "" 3946 | }, 3947 | "require": { 3948 | "ext-dom": "*", 3949 | "ext-tokenizer": "*", 3950 | "ext-xmlwriter": "*", 3951 | "php": "^7.0" 3952 | }, 3953 | "type": "library", 3954 | "autoload": { 3955 | "classmap": [ 3956 | "src/" 3957 | ] 3958 | }, 3959 | "notification-url": "https://packagist.org/downloads/", 3960 | "license": [ 3961 | "BSD-3-Clause" 3962 | ], 3963 | "authors": [ 3964 | { 3965 | "name": "Arne Blankerts", 3966 | "email": "arne@blankerts.de", 3967 | "role": "Developer" 3968 | } 3969 | ], 3970 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3971 | "time": "2017-04-07T12:08:54+00:00" 3972 | }, 3973 | { 3974 | "name": "webmozart/assert", 3975 | "version": "1.4.0", 3976 | "source": { 3977 | "type": "git", 3978 | "url": "https://github.com/webmozart/assert.git", 3979 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 3980 | }, 3981 | "dist": { 3982 | "type": "zip", 3983 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 3984 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 3985 | "shasum": "" 3986 | }, 3987 | "require": { 3988 | "php": "^5.3.3 || ^7.0", 3989 | "symfony/polyfill-ctype": "^1.8" 3990 | }, 3991 | "require-dev": { 3992 | "phpunit/phpunit": "^4.6", 3993 | "sebastian/version": "^1.0.1" 3994 | }, 3995 | "type": "library", 3996 | "extra": { 3997 | "branch-alias": { 3998 | "dev-master": "1.3-dev" 3999 | } 4000 | }, 4001 | "autoload": { 4002 | "psr-4": { 4003 | "Webmozart\\Assert\\": "src/" 4004 | } 4005 | }, 4006 | "notification-url": "https://packagist.org/downloads/", 4007 | "license": [ 4008 | "MIT" 4009 | ], 4010 | "authors": [ 4011 | { 4012 | "name": "Bernhard Schussek", 4013 | "email": "bschussek@gmail.com" 4014 | } 4015 | ], 4016 | "description": "Assertions to validate method input/output with nice error messages.", 4017 | "keywords": [ 4018 | "assert", 4019 | "check", 4020 | "validate" 4021 | ], 4022 | "time": "2018-12-25T11:19:39+00:00" 4023 | } 4024 | ], 4025 | "aliases": [], 4026 | "minimum-stability": "stable", 4027 | "stability-flags": [], 4028 | "prefer-stable": false, 4029 | "prefer-lowest": false, 4030 | "platform": { 4031 | "php": ">=5.4.0" 4032 | }, 4033 | "platform-dev": [] 4034 | } 4035 | -------------------------------------------------------------------------------- /config/logicboxes.php: -------------------------------------------------------------------------------- 1 | env('LOGICBOXES_ENV', 'test'), 4 | 'auth-userid' => env('LOGICBOXES_AUTHID'), 5 | 'api-key' => env('LOGICBOXES_APIKEY') 6 | ]; 7 | -------------------------------------------------------------------------------- /phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | PHP Code Sniffer for Package 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | warning 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | warning 44 | 45 | 46 | warning 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Please review this TODO comment: %s 65 | warning 66 | 67 | 68 | Please review this FIXME comment: %s 69 | warning 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 104 | 105 | 106 | 107 | 108 | warning 109 | 110 | 111 | 112 | 115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | tests 15 | 16 | 17 | 18 | 19 | src/ 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Api/Base.php: -------------------------------------------------------------------------------- 1 | $this->url(), 16 | 'query' => [ 17 | 'auth-userid' => config('logicboxes.auth-userid'), 18 | 'api-key' => config('logicboxes.api-key'), 19 | ], 20 | ]); 21 | } 22 | 23 | public function mode() 24 | { 25 | return config('logicboxes.mode'); 26 | } 27 | 28 | public function url() 29 | { 30 | if ($this->mode() === 'test') { 31 | return 'https://test.httpapi.com/api/'; 32 | } 33 | 34 | return 'https://httpapi.com/api/'; 35 | } 36 | 37 | protected function request($url, $query = [], $method = 'GET', $string = false, $isArray = false) 38 | { 39 | try { 40 | if (! $string) { 41 | $response = $this->client()->request($method, $url, [ 42 | 'query' => array_merge($this->client()->getConfig('query'), $query), 43 | ]); 44 | } else { 45 | $query = \GuzzleHttp\Psr7\build_query($query, PHP_QUERY_RFC1738); 46 | foreach ($this->client()->getConfig('query') as $k => $v) { 47 | $query .= "&{$k}={$v}"; 48 | } 49 | $base = (string) $this->client()->getConfig()['base_uri']; 50 | $fullUrl = $base.$url.'?'.$query; 51 | $client = new Client(); 52 | 53 | $response = $method === 'GET' ? $client->get($fullUrl) : $client->post($fullUrl); 54 | } 55 | 56 | return [ 57 | 'status' => true, 58 | 'response' => json_decode((string) $response->getBody(), $isArray), 59 | 'message' => 'success', 60 | ]; 61 | } catch (ServerException $e) { 62 | $re = '/"message":"(.*?)[\",(]/'; 63 | preg_match_all($re, $e->getMessage(), $matches, PREG_SET_ORDER, 0); 64 | $match = $matches[0][1]; 65 | if (strstr($matches[0][1], '\u003d')) { 66 | $match = str_replace('\u003d', '', strstr($matches[0][1], '\u003d')); 67 | } 68 | 69 | return [ 70 | 'status' => false, 71 | 'response' => null, 72 | 'message' => $match, 73 | ]; 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/Api/Contact.php: -------------------------------------------------------------------------------- 1 | request('contacts/add.json', $query, 'POST'); 15 | } 16 | 17 | /** 18 | * @param $contactId 19 | * @return array 20 | */ 21 | public function getDetail($contactId) 22 | { 23 | return $this->request('contacts/details.json', ['contact-id' => $contactId], 'GET'); 24 | } 25 | 26 | /** 27 | * @param $customerId 28 | * @param array $type 29 | * @return array 30 | */ 31 | public function getContactWithCustomerId($customerId, $type = ['Contact']) 32 | { 33 | return $this->request('contacts/default.json', [ 34 | 'customer-id' => $customerId, 35 | 'type' => $type 36 | ], 'POST', true); 37 | } 38 | 39 | /** 40 | * @param $query 41 | * @return array 42 | */ 43 | public function modify($query) 44 | { 45 | return $this->request('contacts/modify.json', $query, 'POST'); 46 | } 47 | 48 | /** 49 | * @param $customerId 50 | * @param array $type 51 | * @return array 52 | */ 53 | public function getDefaultDetails($customerId, $type = ['Contact']) 54 | { 55 | return $this->request('contacts/default.json', [ 56 | 'customer-id' => $customerId, 57 | 'type' => $type 58 | ], 'POST', true); 59 | } 60 | 61 | /** 62 | * @param $query 63 | * @return array 64 | */ 65 | public function setDefaultContact($query) 66 | { 67 | return $this->request('contacts/modDefault.json', $query, 'POST', true); 68 | } 69 | 70 | /** 71 | * @param $contactId 72 | * @return array 73 | */ 74 | public function delete($contactId) 75 | { 76 | $query = [ 77 | 'contact-id' => $contactId 78 | ]; 79 | 80 | return $this->request('contacts/modDefault.json', $query, 'POST'); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/Api/Customer.php: -------------------------------------------------------------------------------- 1 | request('customers/signup.json', $customerData, 'POST', false); 15 | } 16 | 17 | /** 18 | * Update customer details. 19 | * 20 | * @param $customerId 21 | * @param array $customerData 22 | * 23 | * @return array 24 | */ 25 | public function update($customerId, array $customerData) 26 | { 27 | if (filter_var($customerId, FILTER_VALIDATE_EMAIL)) { 28 | return [ 29 | 'status' => false, 30 | 'message' => 'You must provide customer id not an email.', 31 | 'response' => null 32 | ]; 33 | } 34 | 35 | $customerData['customer-id'] = $customerId; 36 | 37 | return $this->request('customers/modify.json', $customerData, 'POST', false); 38 | } 39 | 40 | /** 41 | * Get customer by email or customer id 42 | * 43 | * @param $customer 44 | * 45 | * @return array 46 | */ 47 | public function get($customer) 48 | { 49 | if (filter_var($customer, FILTER_VALIDATE_EMAIL)) { 50 | return $this->request('customers/details.json', [ 51 | 'username' => $customer 52 | ]); 53 | } 54 | 55 | return $this->request('customers/details-by-id.json', [ 56 | 'customer-id' => (int) $customer 57 | ]); 58 | } 59 | 60 | /** 61 | * Change customers password 62 | * 63 | * @param $customer 64 | * @param $password 65 | * 66 | * @throws \Exception 67 | * @return array 68 | */ 69 | public function password($customer, $password) 70 | { 71 | if (filter_var($customer, FILTER_VALIDATE_EMAIL)) { 72 | $customer = $this->customerId($customer); 73 | } 74 | 75 | return $this->request('customers/change-password.json', [ 76 | 'customer-id' => $customer, 77 | 'new-passwd' => $password 78 | ]); 79 | } 80 | 81 | /** 82 | * Deletes a customer. 83 | * 84 | * @param $customer 85 | * 86 | * @throws \Exception 87 | * @return array 88 | */ 89 | public function delete($customer) 90 | { 91 | if (filter_var($customer, FILTER_VALIDATE_EMAIL)) { 92 | $customer = $this->customerId($customer); 93 | } 94 | 95 | return $this->request('customers/delete.json', [ 96 | 'customer-id' => $customer 97 | ]); 98 | } 99 | public function moveProduct($domain, $customerId, $newCustomerId, $contact = false) 100 | { 101 | $query = [ 102 | 'domain-name' => $domain, 103 | 'existing-customer-id' => $customerId, 104 | 'new-customer-id' => $newCustomerId 105 | ]; 106 | if ($contact) { 107 | $query['default-contact'] = $contact; 108 | } 109 | return $this->request('products/move.json', $query, 'POST'); 110 | } 111 | /** 112 | * Get customers id 113 | * 114 | * @param $customer 115 | * 116 | * @throws \Exception 117 | * @return bool 118 | */ 119 | private function customerId($customer) 120 | { 121 | $response = $this->get($customer); 122 | 123 | if ($response['status'] == true) { 124 | return $response['response']->customerid; 125 | } 126 | 127 | throw new \Exception('Customer id cannot found'); 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /src/Api/Dns.php: -------------------------------------------------------------------------------- 1 | domain = $arguments[0]; 17 | } 18 | } 19 | 20 | /** 21 | * Get domain details. 22 | * 23 | * @return array 24 | */ 25 | public function nameservers() 26 | { 27 | return $this->domain('NsDetails'); 28 | } 29 | 30 | /** 31 | * Get domain details. 32 | * 33 | * @return array 34 | */ 35 | public function details() 36 | { 37 | return $this->domain('All'); 38 | } 39 | 40 | /** 41 | * Get domain status. 42 | * 43 | * @return array 44 | */ 45 | public function status() 46 | { 47 | return $this->domain('DomainStatus'); 48 | } 49 | 50 | /** 51 | * Get order details. 52 | * 53 | * @return array 54 | */ 55 | public function order() 56 | { 57 | return $this->domain('OrderDetails'); 58 | } 59 | 60 | /** 61 | * Get dnssec information. 62 | * 63 | * @return array 64 | */ 65 | public function dnssec() 66 | { 67 | return $this->domain('DNSSECDetails'); 68 | } 69 | 70 | /** 71 | * Get contact details object. 72 | * 73 | * @return Contact 74 | */ 75 | public function contact() 76 | { 77 | return new Contact($this->domain); 78 | } 79 | 80 | /** 81 | * @alias nameservers 82 | * 83 | * @return array 84 | */ 85 | public function ns() 86 | { 87 | return $this->nameservers(); 88 | } 89 | 90 | /** 91 | * Check for given domain name. Tlds must be without dot. 92 | * 93 | * @param array $tlds 94 | * @param bool $suggest 95 | * @param mixed $stausIndex 96 | * 97 | * @return array 98 | */ 99 | public function check($tlds = ['com'], $suggest = false, $stausIndex = 0) 100 | { 101 | $query = [ 102 | 'domain-name' => $this->domain, 103 | 'suggest-alternative' => json_encode($suggest), 104 | 'tlds' => $tlds, 105 | ]; 106 | 107 | $result = $this->request('domains/available.json', $query, 'GET', true); 108 | 109 | try { 110 | $status = $result['response']->{$this->domain.'.'.$tlds[$stausIndex]}->status; 111 | } catch (\Exception $e) { 112 | $status = 'unknown'; 113 | } 114 | 115 | $result['domain-status'] = $status; 116 | 117 | return $result; 118 | } 119 | 120 | /** 121 | * Get only orderId. 122 | * 123 | * @return array 124 | */ 125 | public function orderId() 126 | { 127 | return $this->request('domains/orderid.json', [ 128 | 'domain-name' => $this->domain, 129 | ], 'GET'); 130 | } 131 | 132 | /** 133 | * @return array 134 | */ 135 | public function enableTheftProtection() 136 | { 137 | return $this->requestWithOrderId('domains/enable-theft-protection.json', [], 'POST'); 138 | } 139 | 140 | /** 141 | * @return array 142 | */ 143 | public function disableTheftProtection() 144 | { 145 | return $this->requestWithOrderId('domains/disable-theft-protection.json', [], 'POST'); 146 | } 147 | 148 | /** 149 | * @param array $ns 150 | * 151 | * @return array 152 | */ 153 | public function modifyNameServers(array $ns) 154 | { 155 | $query = [ 156 | 'ns' => $ns, 157 | ]; 158 | 159 | return $this->requestWithOrderId('domains/modify-ns.json', $query, 'POST', true); 160 | } 161 | 162 | /** 163 | * @return array 164 | */ 165 | public function delete() 166 | { 167 | return $this->requestWithOrderId('domains/delete.json', [], 'POST'); 168 | } 169 | 170 | /** 171 | * @return array 172 | */ 173 | public function cancelTransfer() 174 | { 175 | return $this->requestWithOrderId('domains/cancel-transfer.json', [], 'POST'); 176 | } 177 | 178 | /** 179 | * @param $query 180 | * 181 | * @return array 182 | */ 183 | public function register($query) 184 | { 185 | $query['domain-name'] = $this->domain; 186 | 187 | return $this->request('domains/register.json', $query, 'POST', true); 188 | } 189 | 190 | /** 191 | * @param $query 192 | * 193 | * @return array 194 | */ 195 | public function transfer($query) 196 | { 197 | $query['domain-name'] = $this->domain; 198 | 199 | return $this->request('domains/transfer.json', $query, 'POST', true); 200 | } 201 | 202 | /** 203 | * @param $authCode 204 | * 205 | * @return array 206 | */ 207 | public function authCode($authCode) 208 | { 209 | $query = $this->prepareAuthCode($authCode); 210 | if (! $authCode === $query['auth-code']) { 211 | return $query; 212 | } 213 | 214 | return $this->request('domains/transfer/submit-auth-code.json', $query, 'POST'); 215 | } 216 | 217 | /** 218 | * @param $authCode 219 | * 220 | * @return array 221 | */ 222 | public function modifyAuthCode($authCode) 223 | { 224 | $query = $this->prepareAuthCode($authCode); 225 | if (! $authCode === $query['auth-code']) { 226 | return $query; 227 | } 228 | 229 | return $this->request('domains/modify-auth-code.json', $query, 'POST'); 230 | } 231 | 232 | /** 233 | * @return array 234 | */ 235 | public function validateTransferRequest() 236 | { 237 | $query = [ 238 | 'domain-name' => $this->domain, 239 | ]; 240 | 241 | return $this->request('domains/validate-transfer.json', $query, 'GET'); 242 | } 243 | 244 | /** 245 | * @param $years 246 | * @param $date 247 | * @param $invoiceOption 248 | * @param bool $purchasePrivacy 249 | * 250 | * @return array 251 | */ 252 | public function renew($years, $date, $invoiceOption, $purchasePrivacy = false) 253 | { 254 | $query = [ 255 | 'years' => $years, 256 | 'exp-date' => $date, 257 | 'invoice-option' => $invoiceOption, 258 | 'purchase-privacy' => $purchasePrivacy, 259 | ]; 260 | 261 | return $this->requestWithOrderId('domains/renew.json', $query, 'POST'); 262 | } 263 | 264 | /** 265 | * @param $customerId 266 | * 267 | * @return array 268 | */ 269 | public function customerDefaultNameServers($customerId) 270 | { 271 | $query = [ 272 | 'customer-id' => $customerId, 273 | ]; 274 | 275 | return $this->request('domains/customer-default-ns.json', $query, 'GET'); 276 | } 277 | 278 | /** 279 | * @return array 280 | */ 281 | public function isDomainPremium() 282 | { 283 | $query = [ 284 | 'domain-name' => $this->domain, 285 | ]; 286 | 287 | return $this->request('domains/premium-check.json', $query, 'GET'); 288 | } 289 | 290 | /** 291 | * @param $cns 292 | * @param $ip 293 | * 294 | * @return array 295 | */ 296 | public function addChildNs($cns, $ip) 297 | { 298 | $query = [ 299 | 'cns' => $cns, 300 | 'ip' => $ip, 301 | ]; 302 | 303 | return $this->requestWithOrderId('domains/add-cns.json', $query, 'POST', true); 304 | } 305 | 306 | public function requestWithOrderId($url, $query, $method, $string = false) 307 | { 308 | $resp = $this->orderId(); 309 | if (! $resp['status']) { 310 | return $resp; 311 | } 312 | $orderId = $resp['response']; 313 | $query['order-id'] = $orderId; 314 | 315 | return $this->request($url, $query, $method, $string); 316 | } 317 | 318 | public function modifyChildNsHostName($oldCns, $newCns) 319 | { 320 | $query = [ 321 | 'old-cns' => $oldCns, 322 | 'new-cns' => $newCns, 323 | ]; 324 | 325 | return $this->requestWithOrderId('domains/modify-cns-name.json', $query, 'POST'); 326 | } 327 | 328 | /** 329 | * @return array 330 | */ 331 | public function getListLockApplied() 332 | { 333 | return $this->requestWithOrderId('domains/locks.json', [], 'GET'); 334 | } 335 | 336 | /** 337 | * @param mixed $reason 338 | * 339 | * @return array 340 | */ 341 | public function suspend($reason) 342 | { 343 | $query = [ 344 | 'reason' => $reason, 345 | ]; 346 | 347 | return $this->requestWithOrderId('orders/suspend.json', $query, 'POST'); 348 | } 349 | 350 | /** 351 | * @return array 352 | */ 353 | public function unSuspend() 354 | { 355 | return $this->requestWithOrderId('orders/unsuspend.json', [], 'POST'); 356 | } 357 | 358 | public function suggestName($keyword, $tldOnly = false, $exactMatch = false) 359 | { 360 | $query = [ 361 | 'keyword' => $keyword, 362 | 'exact-match' => $exactMatch, 363 | ]; 364 | 365 | if ($tldOnly) { 366 | $query['tld-only'] = $tldOnly; 367 | } 368 | 369 | return $this->request('domains/v5/suggest-names.json', $query, 'GET'); 370 | } 371 | 372 | public function isPremium() 373 | { 374 | $query = [ 375 | 'domain-name' => $this->domain, 376 | ]; 377 | 378 | return $this->request('domains/premium-check.json', $query, 'GET'); 379 | } 380 | 381 | /** 382 | * @param $query 383 | * 384 | * @return array 385 | */ 386 | public function modifyContact($query) 387 | { 388 | return $this->requestWithOrderId('domains/modify-contact.json', $query, 'POST'); 389 | } 390 | 391 | private function domain($option) 392 | { 393 | return $this->request($this->url, [ 394 | 'domain-name' => $this->domain, 395 | 'options' => $option, 396 | ]); 397 | } 398 | 399 | /** 400 | * @param $authCode 401 | * 402 | * @return array 403 | */ 404 | private function prepareAuthCode($authCode) 405 | { 406 | $resp = $this->orderId(); 407 | if (! $resp['status']) { 408 | return $resp; 409 | } 410 | 411 | $orderId = $resp['response']; 412 | 413 | return [ 414 | 'order-id' => $orderId, 415 | 'auth-code' => $authCode, 416 | ]; 417 | } 418 | } 419 | -------------------------------------------------------------------------------- /src/Api/Requests/Contact.php: -------------------------------------------------------------------------------- 1 | domain = $domain; 14 | } 15 | 16 | /** 17 | * @param $name 18 | * @param $arguments 19 | * 20 | * @throws \Exception 21 | * @return array 22 | */ 23 | public function __call($name, $arguments) 24 | { 25 | $actions = [ 26 | 'ids' => 'ContactIds', 27 | 'tech' => 'TechContactDetails', 28 | 'admin' => 'AdminContactDetails', 29 | 'billing' => 'BillingContactDetails', 30 | 'registrant' => 'RegistrantContactDetails', 31 | ]; 32 | 33 | if (array_key_exists($name, $actions)) { 34 | return $this->detail($actions[$name]); 35 | } 36 | 37 | throw new \Exception('Given method does not exists in contact details'); 38 | } 39 | private function detail($name) 40 | { 41 | return $this->request('domains/details-by-name.json', [ 42 | 'domain-name' => $this->domain, 43 | 'options' => $name 44 | ]); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Api/Reseller.php: -------------------------------------------------------------------------------- 1 | request('resellers/details.json', ['reseller-id' => $id], 'GET', false); 10 | } 11 | 12 | public function loginToken($id, $ip) 13 | { 14 | return $this->request('resellers/generate-login-token.json', [ 15 | 'reseller-id' => $id, 16 | 'ip' => $ip, 17 | ], 'GET', false); 18 | } 19 | 20 | public function addFunds($id, $amount, $description, $transactionType = 'receipt', $transactionKey = false, $updateTotal = true) 21 | { 22 | return $this->request('billing/add-reseller-fund.json', [ 23 | 'reseller-id' => $id, 24 | 'amount' => $amount, 25 | 'description' => $description, 26 | 'transaction-type' => $transactionType, 27 | 'transaction-key' => $transactionKey ?? md5(uniqid($id.time(), true)), 28 | 'update-total-receipt' => $updateTotal, 29 | ], 'POST', false); 30 | } 31 | 32 | public function getBalance($id) 33 | { 34 | return $this->request('billing/reseller-balance.json', [ 35 | 'reseller-id' => $id, 36 | ], 'GET', false); 37 | } 38 | 39 | public function getPricing($id) 40 | { 41 | return $this->request('products/reseller-price.json', [ 42 | 'reseller-id' => $id, 43 | ], 'GET', false, true); 44 | } 45 | 46 | public function getCustomerPricing($id) 47 | { 48 | return $this->request('products/customer-price.json', [], 'GET', false, true); 49 | } 50 | 51 | public function getCostPricing($id) 52 | { 53 | return $this->request('products/reseller-cost-price.json', [], 'GET', false, true); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/Facades/Logicboxes.php: -------------------------------------------------------------------------------- 1 | registerServices(); 23 | } 24 | 25 | /** 26 | * Get the services provided by the provider. 27 | * 28 | * @return array 29 | */ 30 | public function provides() 31 | { 32 | return ['logicboxes']; 33 | } 34 | 35 | public function boot() 36 | { 37 | $this->handleConfiguration(); 38 | } 39 | 40 | public function handleConfiguration() 41 | { 42 | $configPath = __DIR__.'/../config/logicboxes.php'; 43 | 44 | $this->publishes([$configPath => config_path('logicboxes.php')], 'Logicboxes'); 45 | // Merge config files... 46 | $this->mergeConfigFrom($configPath, 'logicboxes'); 47 | } 48 | /** 49 | * Register the package services. 50 | * 51 | * @return void 52 | */ 53 | protected function registerServices() 54 | { 55 | $this->app->singleton('logicboxes', function ($app) { 56 | return new Logicboxes(); 57 | }); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /tests/BaseTrait.php: -------------------------------------------------------------------------------- 1 | $this->faker->email, 10 | 'passwd' => 'Qs3jiA5fd8mq4', 11 | 'name' => $this->faker->name, 12 | 'company' => $this->faker->company, 13 | 'address-line-1' => $this->faker->streetAddress, 14 | 'city' => $this->faker->city, 15 | 'state' => $this->faker->state, 16 | 'country' => $this->faker->countryCode, 17 | 'zipcode' => $this->faker->postcode, 18 | 'phone-cc' => 90, 19 | 'phone' => 5555555555, 20 | 'lang-pref' => 'en' 21 | ]; 22 | } 23 | public function createCustomer($attributes = []) 24 | { 25 | $details = array_merge([ 26 | 'username' => $this->faker->email, 27 | 'passwd' => 'Qs3jiA5fd8mq4', 28 | 'name' => $this->faker->name, 29 | 'company' => $this->faker->company, 30 | 'address-line-1' => $this->faker->streetAddress, 31 | 'city' => $this->faker->city, 32 | 'state' => $this->faker->state, 33 | 'country' => $this->faker->countryCode, 34 | 'zipcode' => $this->faker->postcode, 35 | 'phone-cc' => 90, 36 | 'phone' => 5555555555, 37 | 'lang-pref' => 'en' 38 | ], $attributes); 39 | 40 | $customer = logicboxes()->customer()->create($details); 41 | 42 | $details['customer-id'] = $customer['response']; 43 | 44 | return $details; 45 | } 46 | 47 | public function createContact($attributes = []) 48 | { 49 | $details = array_merge([ 50 | 'name' => $this->faker->name, 51 | 'company' => $this->faker->company, 52 | 'email' => $this->faker->email, 53 | 'address-line-1' => $this->faker->streetAddress, 54 | 'city' => $this->faker->city, 55 | 'country' => 'TR', 56 | 'zipcode' => '20070', 57 | 'phone-cc' => '90', 58 | 'phone' => '5555555555', 59 | 'type' => 'Contact' 60 | ], $attributes); 61 | 62 | $customer = logicboxes()->contact()->add($details); 63 | $details['contact-id'] = $customer['response']; 64 | 65 | return $details; 66 | } 67 | 68 | public function prepareDomainData($customerId, $contactId) 69 | { 70 | $details = [ 71 | 'years' => 1, 72 | 'ns' => ['dns3.parkpage.foundationapi.com', 'dns4.parkpage.foundationapi.com'], 73 | 'customer-id' => $customerId, 74 | 'reg-contact-id' => $contactId, 75 | 'admin-contact-id' => $contactId, 76 | 'tech-contact-id' => $contactId, 77 | 'billing-contact-id' => $contactId, 78 | 'invoice-option' => 'NoInvoice', 79 | 'purchase-privacy' => true, 80 | 'protect-privacy' => true, 81 | ]; 82 | 83 | return $details; 84 | } 85 | 86 | public function domain() 87 | { 88 | return $this->faker->domainName; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /tests/CustomerTest.php: -------------------------------------------------------------------------------- 1 | faker = Factory::create(); 21 | } 22 | 23 | /** @test */ 24 | public function logicboxes_create_customer() 25 | { 26 | $response = logicboxes()->customer()->create($this->customerDetails()); 27 | $this->assertTrue($response['status']); 28 | $this->assertEquals($response['message'], 'success'); 29 | } 30 | 31 | /** @test */ 32 | public function logicboxes_get_customer_details_by_username_and_customerid() 33 | { 34 | $customer = $this->createCustomer(); 35 | 36 | $response = logicboxes()->customer()->get($customer['username']); 37 | 38 | $this->assertTrue($response['status']); 39 | $this->assertEquals($response['response']->useremail, $customer['username']); 40 | 41 | $response = logicboxes()->customer()->get($customer['customer-id']); 42 | $this->assertTrue($response['status']); 43 | $this->assertEquals($response['response']->useremail, $customer['username']); 44 | } 45 | 46 | /** @test */ 47 | public function logicboxes_package_can_change_customers_password() 48 | { 49 | $customer = $this->createCustomer(); 50 | $response = logicboxes()->customer()->password($customer['username'], 'myNew8Char13'); 51 | $this->assertTrue($response['status']); 52 | $this->assertTrue($response['response']); 53 | } 54 | 55 | /** @test */ 56 | public function logicboxes_package_can_delete_a_customer() 57 | { 58 | $customer = $this->createCustomer(); 59 | $response = logicboxes()->customer()->delete($customer['customer-id']); 60 | $this->assertTrue($response['status']); 61 | $this->assertTrue($response['response']); 62 | } 63 | 64 | /** @test */ 65 | public function logicboxes_change_customer() 66 | { 67 | $customer = $this->createCustomer(); 68 | $contact = $this->createContact(['customer-id' => $customer['customer-id']]); 69 | $customer = $customer['customer-id']; 70 | $contact = $contact['contact-id']; 71 | 72 | $domain = strtolower(str_random(8)); 73 | logicboxes()->domain("{$domain}.com") 74 | ->register($this->prepareDomainData($customer, $contact)); 75 | // create 2. Customer 76 | $customer2 = $this->createCustomer(); 77 | $customer2Id = $customer2['customer-id']; 78 | 79 | $response = logicboxes()->customer()->moveProduct("{$domain}.com", $customer, $customer2Id, $contact); 80 | 81 | $this->assertTrue($response['status']); 82 | $this->assertEquals($response['message'], 'success'); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /tests/DomainTest.php: -------------------------------------------------------------------------------- 1 | faker = Factory::create(); 24 | } 25 | 26 | /** @test */ 27 | public function package_should_domain_register() 28 | { 29 | $customer = $this->createCustomer(); 30 | $contact = $this->createContact(['customer-id' => $customer['customer-id']]); 31 | 32 | $domain = str_random(8); 33 | $response = logicboxes()->domain("{$domain}.com") 34 | ->register($this->prepareDomainData($customer['customer-id'], $contact['contact-id'])); 35 | $this->assertTrue($response['status']); 36 | $this->assertEquals($response['message'], 'success'); 37 | } 38 | 39 | /** @test */ 40 | public function package_should_customer_get_default_ns() 41 | { 42 | $this->createDomain(); 43 | $response = logicboxes()->domain($this->domain) 44 | ->customerDefaultNameServers($this->customer); 45 | $this->assertTrue($response['status']); 46 | $this->assertEquals($response['message'], 'success'); 47 | } 48 | 49 | /** @test */ 50 | public function package_should_get_order_id() 51 | { 52 | $this->createDomain(); 53 | $response = logicboxes()->domain($this->domain) 54 | ->orderId(); 55 | $this->assertTrue($response['status']); 56 | $this->assertEquals($response['message'], 'success'); 57 | } 58 | 59 | /** @test */ 60 | public function package_should_enable_theft_protection() 61 | { 62 | $this->createDomain(); 63 | $response = logicboxes()->domain($this->domain) 64 | ->enableTheftProtection(); 65 | $this->assertTrue($response['status']); 66 | $this->assertEquals($response['message'], 'success'); 67 | } 68 | 69 | /** @test */ 70 | public function package_should_disable_theft_protection() 71 | { 72 | $this->createDomain(); 73 | $response = logicboxes()->domain($this->domain) 74 | ->disableTheftProtection(); 75 | $this->assertTrue($response['status']); 76 | $this->assertEquals($response['message'], 'success'); 77 | } 78 | 79 | /** @test */ 80 | public function package_should_modify_name_servers() 81 | { 82 | $this->createDomain(); 83 | $response = logicboxes()->domain($this->domain) 84 | ->modifyNameServers(['ns1.ni.net.tr', 'ns2.ni.net.tr']); 85 | $this->assertTrue($response['status']); 86 | $this->assertEquals($response['message'], 'success'); 87 | } 88 | 89 | /** @test */ 90 | public function package_should_cancel_the_domain_transfer() 91 | { 92 | $this->createDomain(); 93 | $response = logicboxes()->domain($this->domain) 94 | ->cancelTransfer(); 95 | $this->assertFalse($response['status']); 96 | $this->assertEquals($response['message'], 'Invalid action status/action type for this operation'); 97 | } 98 | 99 | /** @test */ 100 | public function package_should_validate_transfer_request() 101 | { 102 | $this->createDomain(); 103 | $response = logicboxes()->domain($this->domain) 104 | ->validateTransferRequest(); 105 | $this->assertTrue($response['status']); 106 | $this->assertEquals($response['message'], 'success'); 107 | } 108 | 109 | /** @test */ 110 | public function package_should_delete_domain() 111 | { 112 | $this->createDomain(); 113 | $response = logicboxes()->domain($this->domain) 114 | ->delete(); 115 | $this->assertTrue($response['status']); 116 | $this->assertEquals($response['message'], 'success'); 117 | } 118 | 119 | /** @test */ 120 | public function package_should_validate_is_domain_premium() 121 | { 122 | $response = logicboxes()->domain("gotham.town") 123 | ->isDomainPremium(); 124 | $this->assertTrue($response['status']); 125 | $this->assertEquals($response['message'], 'success'); 126 | } 127 | 128 | /** @test */ 129 | public function package_should_add_child_ns_hostname() 130 | { 131 | $this->createDomain(); 132 | $response = logicboxes()->domain($this->domain) 133 | ->addChildNs("ns1.{$this->domain}", ['0.0.0.0', '0.0.0.1']); 134 | 135 | $this->assertTrue($response['status']); 136 | $this->assertEquals($response['message'], 'success'); 137 | } 138 | 139 | // /** @test */ 140 | // public function package_should_modify_child_ns() 141 | // { 142 | // $this->createDomain(); 143 | // logicboxes()->domain($this->domain) 144 | // ->addChildNs("ns1.{$this->domain}", ['0.0.0.0', '0.0.0.1']); 145 | // 146 | // $response = logicboxes()->domain($this->domain) 147 | // ->modifyChildNs("ns1.{$this->domain}", "ns2.{$this->domain}"); 148 | // dd($response); 149 | // $this->assertTrue($response['status']); 150 | // $this->assertEquals($response['message'], 'success'); 151 | // } 152 | 153 | /** @test */ 154 | public function package_should_get_the_list_lock_applied() 155 | { 156 | $this->createDomain(); 157 | $response = logicboxes()->domain($this->domain) 158 | ->getListLockApplied(); 159 | 160 | $this->assertTrue($response['status']); 161 | $this->assertEquals($response['message'], 'success'); 162 | } 163 | 164 | /** @test */ 165 | public function package_should_suspend_domain_order() 166 | { 167 | $this->createDomain(); 168 | $response = logicboxes()->domain($this->domain)->suspend('reason'); 169 | $this->assertTrue($response['status']); 170 | $this->assertEquals($response['message'], 'success'); 171 | } 172 | 173 | /** @test */ 174 | public function package_should_unsuspend_domain_order() 175 | { 176 | $this->createDomain(); 177 | logicboxes()->domain($this->domain)->suspend('reason'); 178 | 179 | $response = logicboxes()->domain($this->domain)->unSuspend(); 180 | $this->assertTrue($response['status']); 181 | $this->assertEquals($response['message'], 'success'); 182 | } 183 | 184 | /** @test */ 185 | public function package_should_get_suggest_name() 186 | { 187 | $response = logicboxes()->domain()->suggestName($this->faker->firstNameMale); 188 | $this->assertTrue($response['status']); 189 | $this->assertEquals($response['message'], 'success'); 190 | } 191 | 192 | /** @test */ 193 | public function package_should_modify_domain_contacts() 194 | { 195 | $customer = $this->createCustomer(); 196 | $contact = $this->createContact(['customer-id' => $customer['customer-id']]); 197 | $domain = str_random(8); 198 | logicboxes()->domain("{$domain}.com") 199 | ->register($this->prepareDomainData($customer['customer-id'], $contact['contact-id'])); 200 | 201 | $contact2 = $this->createContact(['customer-id' => $customer['customer-id']]); 202 | $response = logicboxes()->domain("{$domain}.com")->modifyContact([ 203 | 'reg-contact-id' => $contact2['contact-id'], 204 | 'admin-contact-id' => $contact2['contact-id'], 205 | 'tech-contact-id' => $contact2['contact-id'], 206 | 'billing-contact-id' => $contact2['contact-id'] 207 | ]); 208 | $this->assertTrue($response['status']); 209 | $this->assertEquals($response['message'], 'success'); 210 | } 211 | 212 | private function createDomain() 213 | { 214 | $this->customer = $this->createCustomer(); 215 | $this->contact = $this->createContact(['customer-id' => $this->customer['customer-id']]); 216 | $this->customer = $this->customer['customer-id']; 217 | $this->contact = $this->contact['contact-id']; 218 | 219 | $domain = str_random(8); 220 | logicboxes()->domain("{$domain}.com") 221 | ->register($this->prepareDomainData($this->customer, $this->contact)); 222 | $this->domain = "{$domain}.com"; 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | Logicboxes::class, 22 | ]; 23 | } 24 | protected function getEnvironmentSetUp($app) 25 | { 26 | $config = parse_ini_file("config.ini"); 27 | $app['config']->set('logicboxes.api-key', $config['key']); 28 | $app['config']->set('logicboxes.auth-userid', $config['userId']); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/config.ini.example: -------------------------------------------------------------------------------- 1 | key="your-api-key" 2 | userId="your-user-id" --------------------------------------------------------------------------------