examples/AdWords/LaravelSampleApp/app/Http/Controllers/AdWordsApiController.php
public function downloadReportAction(
        Request $request,
        FetchAuthTokenInterface $oAuth2Credential,
        AdWordsServices $adWordsServices,
        AdWordsSessionBuilder $adWordsSessionBuilder
    ) {
        if ($request->method() === 'POST') {
            $clientCustomerId = $request->input('clientCustomerId');
            $reportType = $request->input('reportType');
            $reportRange = $request->input('reportRange');
            $entriesPerPage = $request->input('entriesPerPage');

            $selectedFields = array_values(
                $request->except(
                    [
                        '_token',
                        'clientCustomerId',
                        'reportType',
                        'entriesPerPage',
                        'reportRange'
                    ]
                )
            );
            $selectedFields = array_merge(
                self::$REPORT_TYPE_TO_DEFAULT_SELECTED_FIELDS[$reportType],
                $selectedFields
            );

            $request->session()->put('clientCustomerId', $clientCustomerId);
            $request->session()->put('reportType', $reportType);
            $request->session()->put('reportRange', $reportRange);
            $request->session()->put('selectedFields', $selectedFields);
            $request->session()->put('entriesPerPage', $entriesPerPage);

            // Construct an API session configured from a properties file and
            // the OAuth2 credentials above.
            $session =
                $adWordsSessionBuilder->fromFile(config('app.adsapi_php_path'))
                    ->withOAuth2Credential($oAuth2Credential)
                    ->withClientCustomerId($clientCustomerId)
                    ->build();

            // There is no paging mechanism for reporting, so we fetch all
            // results at once.
            $collection = self::downloadReport(
                $reportType,
                $reportRange,
                new ReportDownloader($session),
                $selectedFields
            );
            $request->session()->put('collection', $collection);
        } else {
            $selectedFields = $request->session()->get('selectedFields');
            $entriesPerPage = $request->session()->get('entriesPerPage');
            $collection = $request->session()->get('collection');
        }

        $pageNo = $request->input('page') ?: 1;

        // Create a length aware paginator to supply report results for the
        // view, based on the specified number of entries per page.
        $reportResults = new LengthAwarePaginator(
            $collection->forPage($pageNo, $entriesPerPage),
            $collection->count(),
            $entriesPerPage,
            $pageNo,
            ['path' => url('download-report')]
        );

        return view(
            'report-results',
            compact('reportResults', 'selectedFields')
        );
    }
public function downloadReportAction(
        Request $request,
        FetchAuthTokenInterface $oAuth2Credential,
        AdWordsServices $adWordsServices,
        AdWordsSessionBuilder $adWordsSessionBuilder
    ) {
        if ($request->method() === 'POST') {
            $clientCustomerId = $request->input('clientCustomerId');
            $reportType = $request->input('reportType');
            $reportRange = $request->input('reportRange');
            $entriesPerPage = $request->input('entriesPerPage');

            $selectedFields = array_values(
                $request->except(
                    [
                        '_token',
                        'clientCustomerId',
                        'reportType',
                        'entriesPerPage',
                        'reportRange'
                    ]
                )
            );
            $selectedFields = array_merge(
                self::$REPORT_TYPE_TO_DEFAULT_SELECTED_FIELDS[$reportType],
                $selectedFields
            );

            $request->session()->put('clientCustomerId', $clientCustomerId);
            $request->session()->put('reportType', $reportType);
            $request->session()->put('reportRange', $reportRange);
            $request->session()->put('selectedFields', $selectedFields);
            $request->session()->put('entriesPerPage', $entriesPerPage);

            // Construct an API session configured from a properties file and
            // the OAuth2 credentials above.
            $session =
                $adWordsSessionBuilder->fromFile(config('app.adsapi_php_path'))
                    ->withOAuth2Credential($oAuth2Credential)
                    ->withClientCustomerId($clientCustomerId)
                    ->build();

            // There is no paging mechanism for reporting, so we fetch all
            // results at once.
            $collection = self::downloadReport(
                $reportType,
                $reportRange,
                new ReportDownloader($session),
                $selectedFields
            );
            $request->session()->put('collection', $collection);
        } else {
            $selectedFields = $request->session()->get('selectedFields');
            $entriesPerPage = $request->session()->get('entriesPerPage');
            $collection = $request->session()->get('collection');
        }

        $pageNo = $request->input('page') ?: 1;

        // Create a length aware paginator to supply report results for the
        // view, based on the specified number of entries per page.
        $reportResults = new LengthAwarePaginator(
            $collection->forPage($pageNo, $entriesPerPage),
            $collection->count(),
            $entriesPerPage,
            $pageNo,
            ['path' => url('download-report')]
        );

        return view(
            'report-results',
            compact('reportResults', 'selectedFields')
        );
    }
public function downloadReportAction ( Request $ request , FetchAuthTokenInterface $ oAuth2Credential , AdWordsServices $ adWordsServices , AdWordsSessionBuilder $ adWordsSessionBuilder ) { if ( $ request -> method ( ) === 'POST' ) { $ clientCustomerId = $ request -> input ( 'clientCustomerId' ) ; $ reportType = $ request -> input ( 'reportType' ) ; $ reportRange = $ request -> input ( 'reportRange' ) ; $ entriesPerPage = $ request -> input ( 'entriesPerPage' ) ; $ selectedFields = array_values ( $ request -> except ( [ '_token' , 'clientCustomerId' , 'reportType' , 'entriesPerPage' , 'reportRange' ] ) ) ; $ selectedFields = array_merge ( self :: $ REPORT_TYPE_TO_DEFAULT_SELECTED_FIELDS [ $ reportType ] , $ selectedFields ) ; $ request -> session ( ) -> put ( 'clientCustomerId' , $ clientCustomerId ) ; $ request -> session ( ) -> put ( 'reportType' , $ reportType ) ; $ request -> session ( ) -> put ( 'reportRange' , $ reportRange ) ; $ request -> session ( ) -> put ( 'selectedFields' , $ selectedFields ) ; $ request -> session ( ) -> put ( 'entriesPerPage' , $ entriesPerPage ) ; // Construct an API session configured from a properties file and // the OAuth2 credentials above. $ session = $ adWordsSessionBuilder -> fromFile ( config ( 'app.adsapi_php_path' ) ) -> withOAuth2Credential ( $ oAuth2Credential ) -> withClientCustomerId ( $ clientCustomerId ) -> build ( ) ; // There is no paging mechanism for reporting, so we fetch all // results at once. $ collection = self :: downloadReport ( $ reportType , $ reportRange , new ReportDownloader ( $ session ) , $ selectedFields ) ; $ request -> session ( ) -> put ( 'collection' , $ collection ) ; } else { $ selectedFields = $ request -> session ( ) -> get ( 'selectedFields' ) ; $ entriesPerPage = $ request -> session ( ) -> get ( 'entriesPerPage' ) ; $ collection = $ request -> session ( ) -> get ( 'collection' ) ; } $ pageNo = $ request -> input ( 'page' ) ? : 1 ; // Create a length aware paginator to supply report results for the // view, based on the specified number of entries per page. $ reportResults = new LengthAwarePaginator ( $ collection -> forPage ( $ pageNo , $ entriesPerPage ) , $ collection -> count ( ) , $ entriesPerPage , $ pageNo , [ 'path' => url ( 'download-report' ) ] ) ; return view ( 'report-results' , compact ( 'reportResults' , 'selectedFields' ) ) ; }
Controls a POST and GET request that is submitted from the "Download
Report" form.

@param Request $request
@param FetchAuthTokenInterface $oAuth2Credential
@param AdWordsServices $adWordsServices
@param AdWordsSessionBuilder $adWordsSessionBuilder
@return View
Controls a POST and GET request that is submitted from the Download Report form .