Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
57.69% covered (warning)
57.69%
15 / 26
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
AppServiceProvider
57.69% covered (warning)
57.69%
15 / 26
0.00% covered (danger)
0.00%
0 / 2
12.85
0.00% covered (danger)
0.00%
0 / 1
 register
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 boot
54.55% covered (warning)
54.55%
12 / 22
0.00% covered (danger)
0.00%
0 / 1
9.38
1<?php
2
3namespace App\Providers;
4
5use Stripe\Stripe;
6use SimpleXMLElement;
7use Laravel\Cashier\Cashier;
8use Illuminate\Http\Response;
9use App\Http\Models\Auth\User;
10use App\Http\Models\Subscription;
11use App\Http\Models\Passport\Token;
12use Illuminate\Support\Facades\URL;
13use App\Http\Models\Passport\Client;
14use App\Http\Models\SubscriptionItem;
15use App\Http\Models\Passport\AuthCode;
16use Illuminate\Foundation\AliasLoader;
17use Illuminate\Support\ServiceProvider;
18use App\Http\Models\Passport\RefreshToken;
19use App\Http\Resolvers\SocialUserResolver;
20use App\Http\Models\Passport\PersonalAccessClient;
21use App\Http\Repositories\interfaces\ISavedPromptRepository;
22use App\Http\Repositories\SavedPromptsRepository;
23use Coderello\SocialGrant\Resolvers\SocialUserResolverInterface;
24
25class AppServiceProvider extends ServiceProvider
26{
27    public $bindings = [
28        SocialUserResolverInterface::class => SocialUserResolver::class,
29    ];
30
31    /**
32     * Register any application services.
33     */
34    public function register(): void
35    {
36        if ($this->app->isLocal()) {
37            $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
38        }
39
40        Stripe::setApiKey(config('services.stripe.secret'));
41
42        $this->app->bind(ISavedPromptRepository::class, SavedPromptsRepository::class);
43    }
44
45    /**
46     * Bootstrap any application services.
47     */
48    public function boot(): void
49    {
50        if (config('app.env') === 'production') {
51            URL::forceScheme('https');
52        }
53        $loader = AliasLoader::getInstance();
54
55        // Passport client extends Eloquent model by default, so we alias them.
56        $loader->alias('Laravel\Passport\AuthCode', AuthCode::class);
57        $loader->alias('Laravel\Passport\Client', Client::class);
58        $loader->alias('Laravel\Passport\PersonalAccessClient', PersonalAccessClient::class);
59        $loader->alias('Laravel\Passport\RefreshToken', RefreshToken::class);
60        $loader->alias('Laravel\Passport\Token', Token::class);
61
62        $loader->alias('Laravel\Cashier\Subscription', Subscription::class);
63        $loader->alias('Laravel\Cashier\SubscriptionItem', SubscriptionItem::class);
64
65        Cashier::useCustomerModel(User::class);
66        Response::macro('xml', function (array $vars, $status = 200, array $header = [], $xml = null) {
67            if (is_null($xml)) {
68                $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><response/>');
69            }
70            foreach ($vars as $key => $value) {
71                if (is_array($value)) {
72                    Response::xml($value, $status, $header, $xml->addChild($key));
73                } else {
74                    $xml->addChild($key, $value);
75                }
76            }
77            if (empty($header)) {
78                $header['Content-Type'] = 'application/xml';
79            }
80            return Response::make($xml->asXML(), $status, $header);
81        });
82    }
83}