googleapis / google-api-php-client

A PHP client library for accessing Google APIs
Apache License 2.0
9.22k stars 3.52k forks source link

BUG in path inside file vendor/google/apiclient-services/src/ChromePolicy.php #2497

Closed sacalito closed 9 months ago

sacalito commented 10 months ago

in file vendor/google/apiclient-services/src/ChromePolicy.php

missing in path the /customers/

corrected file

<?php
/*
 * Copyright 2014 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

namespace Google\Service;

use Google\Client;

/**
 * Service definition for ChromePolicy (v1).
 *
 * <p>
 * The Chrome Policy API is a suite of services that allows Chrome
 * administrators to control the policies applied to their managed Chrome OS
 * devices and Chrome browsers.</p>
 *
 * <p>
 * For more information about this service, see the API
 * <a href="http://developers.google.com/chrome/policy" target="_blank">Documentation</a>
 * </p>
 *
 * @author Google, Inc.
 */
class ChromePolicy extends \Google\Service
{
  /** See, edit, create or delete policies applied to Chrome OS and Chrome Browsers managed within your organization. */
  const CHROME_MANAGEMENT_POLICY =
      "https://www.googleapis.com/auth/chrome.management.policy";
  /** See policies applied to Chrome OS and Chrome Browsers managed within your organization. */
  const CHROME_MANAGEMENT_POLICY_READONLY =
      "https://www.googleapis.com/auth/chrome.management.policy.readonly";

  public $customers_policies;
  public $customers_policies_groups;
  public $customers_policies_networks;
  public $customers_policies_orgunits;
  public $customers_policySchemas;
  public $media;

  /**
   * Constructs the internal representation of the ChromePolicy service.
   *
   * @param Client|array $clientOrConfig The client used to deliver requests, or a
   *                                     config array to pass to a new Client instance.
   * @param string $rootUrl The root URL used for requests to the service.
   */
  public function __construct($clientOrConfig = [], $rootUrl = null)
  {
    parent::__construct($clientOrConfig);
    $this->rootUrl = $rootUrl ?: 'https://chromepolicy.googleapis.com/';
    $this->servicePath = '';
    $this->batchPath = 'batch';
    $this->version = 'v1';
    $this->serviceName = 'chromepolicy';

    $this->customers_policies = new ChromePolicy\Resource\CustomersPolicies(
        $this,
        $this->serviceName,
        'policies',
        [
          'methods' => [
            'resolve' => [
              'path' => 'v1/customers/{+customer}/policies:resolve',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],
          ]
        ]
    );
    $this->customers_policies_groups = new ChromePolicy\Resource\CustomersPoliciesGroups(
        $this,
        $this->serviceName,
        'groups',
        [
          'methods' => [
            'batchDelete' => [
              'path' => 'v1/customers/{+customer}/policies/groups:batchDelete',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'batchModify' => [
              'path' => 'v1/customers/{+customer}/policies/groups:batchModify',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'listGroupPriorityOrdering' => [
              'path' => 'v1/customers/{+customer}/policies/groups:listGroupPriorityOrdering',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'updateGroupPriorityOrdering' => [
              'path' => 'v1/customers/{+customer}/policies/groups:updateGroupPriorityOrdering',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],
          ]
        ]
    );
    $this->customers_policies_networks = new ChromePolicy\Resource\CustomersPoliciesNetworks(
        $this,
        $this->serviceName,
        'networks',
        [
          'methods' => [
            'defineCertificate' => [
              'path' => 'v1/customers/{+customer}/policies/networks:defineCertificate',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'defineNetwork' => [
              'path' => 'v1/customers/{+customer}/policies/networks:defineNetwork',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'removeCertificate' => [
              'path' => 'v1/customers/{+customer}/policies/networks:removeCertificate',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'removeNetwork' => [
              'path' => 'v1/customers/{+customer}/policies/networks:removeNetwork',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],
          ]
        ]
    );
    $this->customers_policies_orgunits = new ChromePolicy\Resource\CustomersPoliciesOrgunits(
        $this,
        $this->serviceName,
        'orgunits',
        [
          'methods' => [
            'batchInherit' => [
              'path' => 'v1/customers/{+customer}/policies/orgunits:batchInherit',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'batchModify' => [
              'path' => 'v1/customers/{+customer}/policies/orgunits:batchModify',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],
          ]
        ]
    );
    $this->customers_policySchemas = new ChromePolicy\Resource\CustomersPolicySchemas(
        $this,
        $this->serviceName,
        'policySchemas',
        [
          'methods' => [
            'get' => [
              'path' => 'v1/{+name}',
              'httpMethod' => 'GET',
              'parameters' => [
                'name' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],'list' => [
              'path' => 'v1/{+parent}/policySchemas',
              'httpMethod' => 'GET',
              'parameters' => [
                'parent' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
                'filter' => [
                  'location' => 'query',
                  'type' => 'string',
                ],
                'pageSize' => [
                  'location' => 'query',
                  'type' => 'integer',
                ],
                'pageToken' => [
                  'location' => 'query',
                  'type' => 'string',
                ],
              ],
            ],
          ]
        ]
    );
    $this->media = new ChromePolicy\Resource\Media(
        $this,
        $this->serviceName,
        'media',
        [
          'methods' => [
            'upload' => [
              'path' => 'v1/customers/{+customer}/policies/files:uploadPolicyFile',
              'httpMethod' => 'POST',
              'parameters' => [
                'customer' => [
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                ],
              ],
            ],
          ]
        ]
    );
  }
}

// Adding a class alias for backwards compatibility with the previous class name.
class_alias(ChromePolicy::class, 'Google_Service_ChromePolicy');
vishwarajanand commented 10 months ago

Hi @sacalito , thanks for reporting this issue. Actually as per the doc, it seems the URLs should be: /v1/{customer=customers/*}/policies and ChromePolicy seems to be using v1/{+customer}/policies which seems correct to me.

Are you using any script which is producing errors?

sacalito commented 10 months ago

yes try your file and then try my file, you will see the url is missing also /v1/{customer=customers/*}/policies

is specific you need to put customers/"customerid"

vishwarajanand commented 10 months ago

Seems you're correct, I had to test the API to see your point /v1/my_customer/policies:resolve.

My only problem with your suggested change is that this code is usually autogenerated, see it was edited by a bot, so I will check whether this is a larger problem with our code generation tooling.

BTW you can still pass "customers/my_customer" in the customer string field for relevant methods. Also, CustomersPolicySchemas might need a change as well.

sacalito commented 9 months ago

yes i know i can do "customers/my_customer", but i would like to have all the customers the same for all files,

yes i also edited the other file, if its generated automatically i dont know then

On Sun, Oct 1, 2023 at 11:26 PM Vishwaraj Anand @.***> wrote:

Seems you're correct, I had to test the API to see your point /v1/my_customer/policies:resolve.

My only problem with your suggested change is that this code is usually autogenerated, see it was edited by a bot https://github.com/googleapis/google-api-php-client-services/pull/1564/files#diff-4e92d6493ee3926cfa1990d4f51dae9e95a6c23081a5f97237993acf68efe8f4, so I will check whether this is a larger problem with our code generation tooling.

BTW you can still pass "customers/my_customer" in the customer string field for relevant methods. Also, CustomersPolicySchemas might need a change as well.

— Reply to this email directly, view it on GitHub https://github.com/googleapis/google-api-php-client/issues/2497#issuecomment-1742457307, or unsubscribe https://github.com/notifications/unsubscribe-auth/AO3JLWBJMYB6AVEVL47DELTX5JNCPANCNFSM6AAAAAA4JR54E4 . You are receiving this because you were mentioned.Message ID: @.***>

vishwarajanand commented 9 months ago

I cross checked with the Chrome Policy discovery doc which is the source of the API implementation in this library. It appears that the service does expect the users to pass customers/customer_id rather than pass customer_id and add customers/ to it. So it appears the service & library are behaving correct.

I am thinking to close this issue, but in case you want to add more inputs, pls feel free to.