-
Couldn't load subscription status.
- Fork 316
Open
Description
The GET request of the Group Setting API returns XML, but the google-api-php-client-services expects JSON. It returns an empty Google\Service\Groupssettings class.
Environment details
- PHP version: 8.3.6
Composer packages:
- google/apiclient v2.18.3
- google/apiclient-services v0.397.0
Steps to reproduce
- Use the GET function of \Google\Service\Groupssettings
- The result will be an empty \Google\Service\Groupssettings class
Workaround
The PATCH request will return a JSON response and that works without a problem. It is possible to alter 1 deprecated setting via the PATCH request and all the current settings will be returned.
JSON decode in the REST class
The REST class is decoding the response and expects JSON:
/**
* Decode an HTTP Response.
* @static
*
* @template T
* @param RequestInterface $response The http response to be decoded.
* @param ResponseInterface $response
* @param class-string<T>|false|null $expectedClass
* @return mixed|T|null
* @throws \Google\Service\Exception
*/
public static function decodeHttpResponse(
ResponseInterface $response,
?RequestInterface $request = null,
$expectedClass = null
) {
$code = $response->getStatusCode();
// retry strategy
if (intVal($code) >= 400) {
// if we errored out, it should be safe to grab the response body
$body = (string)$response->getBody();
// Check if we received errors, and add those to the Exception for convenience
throw new GoogleServiceException($body, $code, null, self::getResponseErrors($body));
}
// Ensure we only pull the entire body into memory if the request is not
// of media type
$body = self::decodeBody($response, $request);
if ($expectedClass = self::determineExpectedClass($expectedClass, $request)) {
$json = json_decode($body, true);
return new $expectedClass($json);
}
return $response;
}XML return of the GET request
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:apps="http://schemas.google.com/apps/2006">
<id>tag:googleapis.com,2010:apps:groupssettings:GROUP:[email protected]</id>
<title>Groups Resource Entry</title>
<content type="text">Example</content>
<author>
<name>Google</name>
</author>
<apps:email>[email protected]</apps:email>
<apps:name>Example</apps:name>
<apps:description>Example</apps:description>
<apps:whoCanJoin>CAN_REQUEST_TO_JOIN</apps:whoCanJoin>
<apps:whoCanViewMembership>ALL_IN_DOMAIN_CAN_VIEW</apps:whoCanViewMembership>
<apps:whoCanViewGroup>ALL_MEMBERS_CAN_VIEW</apps:whoCanViewGroup>
<apps:whoCanInvite>ALL_MANAGERS_CAN_INVITE</apps:whoCanInvite>
<apps:whoCanAdd>ALL_MANAGERS_CAN_ADD</apps:whoCanAdd>
<apps:allowExternalMembers>true</apps:allowExternalMembers>
<apps:whoCanPostMessage>ALL_IN_DOMAIN_CAN_POST</apps:whoCanPostMessage>
<apps:allowWebPosting>true</apps:allowWebPosting>
<apps:primaryLanguage>en</apps:primaryLanguage>
<apps:maxMessageBytes>26214400</apps:maxMessageBytes>
<apps:isArchived>true</apps:isArchived>
<apps:archiveOnly>false</apps:archiveOnly>
<apps:messageModerationLevel>MODERATE_NON_MEMBERS</apps:messageModerationLevel>
<apps:spamModerationLevel>MODERATE</apps:spamModerationLevel>
<apps:replyTo>REPLY_TO_SENDER</apps:replyTo>
<apps:includeCustomFooter>false</apps:includeCustomFooter>
<apps:customFooterText></apps:customFooterText>
<apps:sendMessageDenyNotification>true</apps:sendMessageDenyNotification>
<apps:defaultMessageDenyNotificationText></apps:defaultMessageDenyNotificationText>
<apps:showInGroupDirectory>false</apps:showInGroupDirectory>
<apps:allowGoogleCommunication>false</apps:allowGoogleCommunication>
<apps:membersCanPostAsTheGroup>false</apps:membersCanPostAsTheGroup>
<apps:defaultSender>DEFAULT_SELF</apps:defaultSender>
<apps:messageDisplayFont>DEFAULT_FONT</apps:messageDisplayFont>
<apps:includeInGlobalAddressList>true</apps:includeInGlobalAddressList>
<apps:whoCanLeaveGroup>ALL_MEMBERS_CAN_LEAVE</apps:whoCanLeaveGroup>
<apps:whoCanContactOwner>ALL_IN_DOMAIN_CAN_CONTACT</apps:whoCanContactOwner>
<apps:whoCanAddReferences>NONE</apps:whoCanAddReferences>
<apps:whoCanAssignTopics>OWNERS_AND_MANAGERS</apps:whoCanAssignTopics>
<apps:whoCanUnassignTopic>OWNERS_AND_MANAGERS</apps:whoCanUnassignTopic>
<apps:whoCanTakeTopics>OWNERS_AND_MANAGERS</apps:whoCanTakeTopics>
<apps:whoCanMarkDuplicate>OWNERS_AND_MANAGERS</apps:whoCanMarkDuplicate>
<apps:whoCanMarkNoResponseNeeded>OWNERS_AND_MANAGERS</apps:whoCanMarkNoResponseNeeded>
<apps:whoCanMarkFavoriteReplyOnAnyTopic>OWNERS_AND_MANAGERS</apps:whoCanMarkFavoriteReplyOnAnyTopic>
<apps:whoCanMarkFavoriteReplyOnOwnTopic>OWNERS_AND_MANAGERS</apps:whoCanMarkFavoriteReplyOnOwnTopic>
<apps:whoCanUnmarkFavoriteReplyOnAnyTopic>OWNERS_AND_MANAGERS</apps:whoCanUnmarkFavoriteReplyOnAnyTopic>
<apps:whoCanEnterFreeFormTags>OWNERS_AND_MANAGERS</apps:whoCanEnterFreeFormTags>
<apps:whoCanModifyTagsAndCategories>OWNERS_AND_MANAGERS</apps:whoCanModifyTagsAndCategories>
<apps:favoriteRepliesOnTop>true</apps:favoriteRepliesOnTop>
<apps:whoCanApproveMembers>ALL_MANAGERS_CAN_APPROVE</apps:whoCanApproveMembers>
<apps:whoCanBanUsers>OWNERS_AND_MANAGERS</apps:whoCanBanUsers>
<apps:whoCanModifyMembers>OWNERS_AND_MANAGERS</apps:whoCanModifyMembers>
<apps:whoCanApproveMessages>OWNERS_AND_MANAGERS</apps:whoCanApproveMessages>
<apps:whoCanDeleteAnyPost>OWNERS_AND_MANAGERS</apps:whoCanDeleteAnyPost>
<apps:whoCanDeleteTopics>OWNERS_AND_MANAGERS</apps:whoCanDeleteTopics>
<apps:whoCanLockTopics>OWNERS_AND_MANAGERS</apps:whoCanLockTopics>
<apps:whoCanMoveTopicsIn>OWNERS_AND_MANAGERS</apps:whoCanMoveTopicsIn>
<apps:whoCanMoveTopicsOut>OWNERS_AND_MANAGERS</apps:whoCanMoveTopicsOut>
<apps:whoCanPostAnnouncements>OWNERS_AND_MANAGERS</apps:whoCanPostAnnouncements>
<apps:whoCanHideAbuse>OWNERS_AND_MANAGERS</apps:whoCanHideAbuse>
<apps:whoCanMakeTopicsSticky>OWNERS_AND_MANAGERS</apps:whoCanMakeTopicsSticky>
<apps:whoCanModerateMembers>OWNERS_AND_MANAGERS</apps:whoCanModerateMembers>
<apps:whoCanModerateContent>OWNERS_AND_MANAGERS</apps:whoCanModerateContent>
<apps:whoCanAssistContent>OWNERS_AND_MANAGERS</apps:whoCanAssistContent>
<apps:customRolesEnabledForSettingsToBeMerged>false</apps:customRolesEnabledForSettingsToBeMerged>
<apps:enableCollaborativeInbox>false</apps:enableCollaborativeInbox>
<apps:whoCanDiscoverGroup>ALL_IN_DOMAIN_CAN_DISCOVER</apps:whoCanDiscoverGroup>
</entry>Metadata
Metadata
Assignees
Labels
No labels