Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/sharing-ng] Support for new ocis spaces/sharing capabilities #135

Open
wants to merge 13 commits into
base: feature/graphapi-update
Choose a base branch
from

Conversation

felix-schwarz
Copy link
Collaborator

@felix-schwarz felix-schwarz commented Dec 10, 2024

Description

SDK support for new spaces and sharing APIs.

Temporarily targeting #133 until that is reviewed and merged.

Related Issue

owncloud/ios-app#1421
owncloud/ios-app#1422

owncloud/ocis#10832

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

@felix-schwarz felix-schwarz changed the base branch from feature/graphapi-update to master December 20, 2024 08:36
@felix-schwarz felix-schwarz changed the base branch from master to feature/graphapi-update December 20, 2024 08:36
@felix-schwarz felix-schwarz force-pushed the feature/graphapi-update branch from 529b4c4 to 6adbbb4 Compare December 20, 2024 08:44
@felix-schwarz felix-schwarz self-assigned this Dec 20, 2024
@felix-schwarz felix-schwarz changed the base branch from feature/graphapi-update to master December 20, 2024 08:46
@felix-schwarz felix-schwarz changed the base branch from master to feature/graphapi-update December 20, 2024 08:46
- OCConnection+RecipientsLegacy: factored out/moved OC10 recipients search code previously in OCConnection+Recipients
- OCConnection+Recipients: implement GraphAPI user/group search and retrieval by ID, fall back to OCConnection+RecipientsLegacy for OC10 servers
- OCConnection+Avatars: return an error for OCUsers without userName (needed to retrieve an avatar, not available on ocis as per mbarz)
- OCConnection+Spaces: first implementations of space creation/management methods
- OCConnection: add new APIs for user/group lookup, space management
- OCConnection+OData: add new methods for
	- generic OData response decoding
	- creating new OData objects and parsing the response
	- adding URL parameters to OData requests
- GAGraphData+Decoder: support for decoding wider array of possible data
- OCGroup:
	- rename type OCUserGroupID to OCGroupID
	- add new initializer for creating an instance from a GAGroup
- OCUser:
	- rename OCUserIdentifier to OCUniqueUserIdentifier and refactor existing code around it
	- add new type OCUserID to hold ocis-style UUID user IDs
	- add new type OCUserType to hold ocis-style user types
	- add new initializer for creating an instance from a GAUser
- OCIdentity:
	- adapt to OCUser/OCGroup changes
	- rename OCRecipientType -> OCIdentityType and OCRecipientMatchType -> OCIdentityMatchType for consistency
- OCFeatureAvailability: add new flag OC_LEGACY_SUPPORT to ease future removal/identification/conditional compilation of OC10 code
- various smaller refactorings and improvements
…ness of error reporting during encoding

- GAGraphStruct+Encoder: adopt GAGraphContext changes
- OCConnection+OData: add generic API for performing OData update requests
- OCConnection+Spaces:add new, extensible API to update drive properties
- OCDrive: add new type OCDriveProperty and values for name, description and quota total
…ndpoint

- OCConnection+GraphAPI: add methods for retrieving permissions and constructing permission endpoint URLs
- OCConnection+Recipients:
	- new method for requesting details for OCIdentity
	- new method for requesting details for a collection of OCUser/OCGroup/OCIdentity objects
- OCConnection+Sharing:
	- retrieveSharesWithScope: use ocis sharing-ng for retrieving shares/permissions for an item
	- deleteShare:resultTarget: use ocis sharing-ng to delete shares/permissions
- OCODataTypes: add new types for OData decoding options and libre-graph objects
- OCODataDecoder: new class allowing more flexible OData response decoding
- OCODataResponse: new class grouping errors, results and additional libreGraphObjects
- OCConnection+OData: add support for OData decoding options, including returning the full OCODataResponse object that can hold additional data
- OCCore+Sharing:
	- matchingShareRoleForShare: add support for returning embedded roles from OCShare (retrieved from ocis)
- OCShareQuery: add support for also tracking allowedPermissionActions (OCShareActionID) and allowedRoles (OCShareRole)
- OCDrive: add accessor for root permissions (=> identities with access to the drive)
- GAPermission+SharePermission: add accessor to convert a GAPermission into an array of OCSharePermission objects
- GAUnifiedRoleDefinition+ShareRole: add accessor to convert a GAUnifiedRoleDefinition into an OCShareRole (and cache it)
- GeneratedTypes/GA[Permission|Root|UnifiedRoleDefinition|GAUnifiedRolePermission].[m|h]: finetune types and/or prepare additional integration with existing classes
- OCHTTPStatus: add status 100 code
- OCGroup: add initializer taking a GAIdentity instance and an accessor returning a GAIdentity instance
- OCUser: add initializer taking a GAIdentity instance and an accessor returning a GAIdentity instance
- OCIdentity+GraphAPI: add initializers accepting GAIdentitySet and GASharePointIdentitySet and likewise accessors returning them
- OCShareTypes.h: new header file to group existing and new types into a single file, making it easier to avoid impossible/hard to resolve include-loops
- OCShareAction: OCShareActionID type to encapsulate ocis share permission actions in a type and make them available as a typed enum
- OCShare+GraphAPI: add initializer creating an OCShare instance from a GAPermission, GAUnifiedRoleDefinition and more
- OCShare: start migration from using a OCSharePermissionsMask bit mask to an array of OCSharePermissions - with compatibility accessors for now.
- OCSharePermission: new class to act as a container for the different permission formats (roles, actions, bitmask) and - where necessary - integrate simplification and conversion services
- OCShareRole: add OCShareRoleID identifier property to store ocis role IDs
…ust "native"/fallback names for a OCSharePermissionDriveRole

- OCShareRole, GAUnifiedRoleDefinition+ShareRole: add support for ocis role weights
…s for spaces capabilities

- OCODataDecoder + OCConnection+OData: add OCODataOptionKeyValueKey for finetuning decoding responses with optional values
- OCConnection+GraphAPI: fix crash if server returns an empty list of permissions
- GADriveItemInvite, GAUnifiedRoleDefinition: switch properties to "native" types established in the meantime
- OCIdentity+GraphAPI: add gaDriveRecipient accessor to return a GADriveRecipient instance
- OCShareTypes: add missing copyright notice
- Localizable.xcstrings: clarify role strings are not "stale"
… to OCLocation

- OCConnection+RecipientsLegacy: add OC_LEGACY_SUPPORT #ifs
- OCConnection+SharingLegacy: start factoring out OC10-specific code for creating and parsing shares
- OCConnection+Sharing:
	- add GraphAPI support to -retrieveSharesWithScope
	- add GraphAPI support to -createShare
	- add GraphAPI support to -deleteShare
- OCConnection+OData: set proper content type for body (nice side effect: the body is also shown in the debug output now)
- OCODataDecoder: fix OCODataOptionKeyValueKey support
- OCCore:
	- make -availableShareRolesForType async
	- expand -matchingShareRoleForShare with a parameter to provide roles and add capabilities to match share role IDs
- OCLocation: allow storing an optional fileID
- OCItem: add fileID to OCLocation returned by .location
- OCShare+GraphAPI: add support for OCLocation.fileID and link share roles
- OCShare: add convenience accessors for first role and roleID stored in OCSharePermissions
- OCShareRole+GraphAPI: provide OCShareRoles for ocis built-in link share roles
- OCShareRole: expand initializer with optional identifier
	- move legacy updateShare implementation to OCConnection+SharingLegacy
	- implement ocis/GraphAPI share and password update code using OData objects/APIs
- OCODataDecoder: fix error decoding
- GAODataErrorMain: use message as error description
- GAGraphObject: add GANull as JSON null value placeholder
- OCShare+OCDataItem: use new convenience accessor
- OCShare:
	- add new roleIDs convenience accessor
	- also copy values of itemFileID and originPAPermission on -copy
	- also compare role IDs when comparing OCShare instances for equality
	- retrieveLoggedInGraphUserWithCompletionHandler: new method to retrieve the logged in user from a Graph endpoint, including additional information like group memberships, user ID and more
	- globalShareRoles: new property for roles retrieved while connecting
	- shareActionsForDrive: new method to compute the allowed share actions for the logged in user for a drive
	- retrieveRoleDefinitionsWithCompletionHandler: new method to retrieve a list of all role definitions from the server and update .globalShareRoles with the result
	- add two new endpoints
- OCConnection+Users: use retrieveLoggedInGraphUserWithCompletionHandler to retrieve the logged in user on ocis systems
- OCConnection: add new endpoints for assignments-list and permissions-list endpoints
- OCConnection+OData: add support for OData JSON responses that are an array at the root level
- OCCore+DataSources: include driveRoles into the default ordering for OCShares, so that Managers are listed at the top
- OCCore+Sharing: use connection.globalShareRoles as roles if none are provided to -matchingForShare:fromShareRoles:
- GAUnifiedRoleDefinition+ShareRole: translate .rolePermissions.condition into OCShareRole.locations and .rolePermissions.allowedResourceActions into OCShareRole.allowedActions
- GAGroup: use OCGroupID for .identifier
- GAUser: use OCUserID for .identifier
- OCHTTPResponse: add new method -bodyConvertedFromJSONWithError: that converts the JSON body into an array or dictionary (depending on content ;))
- OCUser:
	- add .groupMemberships property for carrying the ocis OCGroupIDs of groups the user belongs to
	-  extend initializers to include more details from the source objects
- OCItem: add additional permission flags for Deniable, TrashbinPurgable and SecureViewable
- OCItem+OCXMLObjectCreation: add parser support for the additional permission flags
- OCShareAction: fix typos
- OCShareTypes: make OCShareActionID a typed enum
- OCSharePermission: change ordering of OCSharePermissionDriveRole to allow usage for ordering by importance
- OCShareRole: add new method to compare OCShareRoleIDs for equality, with special handling for OCShareRoleIDManagerV1, OCShareRoleIDEditorV1 and OCShareRoleIDViewerV1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant