'); * ``` * * @since 2.3.0 * * @api */ class Onedrive { /** * Creates a Client instance and its dependencies. * * @param string $clientId * The client ID. * @param mixed[string] $options * The options to use while creating this object. Supported options: * - `'state'` *(object)*: the OneDrive client state, as returned * by {@see Client::getState() getState()}. Default: `[]`. * * @return \Krizalys\Onedrive\Client * The client created. * * @api */ public static function client($clientId, array $options = []) { $graph = new Graph(); $httpClient = new GuzzleHttpClient(); $serviceDefinition = self::buildServiceDefinition(); return new Client( $clientId, $graph, $httpClient, $serviceDefinition, $options ); } /** * Builds a service definition. * * @return \Krizalys\Onedrive\Definition\ServiceDefinitionInterface * The service definition. * * @since 2.5.0 */ public static function buildServiceDefinition() { $orderBySerializer = new OrderBySerializer(); $scalarSerializer = new ScalarSerializer(); $parameterBuilder = new ParameterBuilder(); return new ServiceDefinition([ 'driveItem' => new ResourceDefinition([], [ 'children' => new ResourceDefinition([ 'get' => new OperationDefinition( new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, [ 'top' => new QueryStringParameterDefinition( new FlatInjector('$top'), $scalarSerializer ), 'orderBy' => new QueryStringParameterDefinition( new FlatInjector('$orderby'), $orderBySerializer ), ]) ), 'post' => new OperationDefinition( new ParameterDefinitionCollection($parameterBuilder, [ 'conflictBehavior' => new BodyParameterDefinition( new HierarchicalInjector(['@microsoft.graph.conflictBehavior']), $scalarSerializer ), 'description' => new BodyParameterDefinition( new HierarchicalInjector(['description']), $scalarSerializer ), ]), new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, []) ), ], []), 'content' => new ResourceDefinition([ 'put' => new OperationDefinition( new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, [ 'conflictBehavior' => new QueryStringParameterDefinition( new FlatInjector('@microsoft.graph.conflictBehavior'), $scalarSerializer ), ]) ), ], []), 'createUploadSession' => new ResourceDefinition([ 'post' => new OperationDefinition( new ParameterDefinitionCollection($parameterBuilder, [ 'conflictBehavior' => new BodyParameterDefinition( new HierarchicalInjector(['item', '@microsoft.graph.conflictBehavior']), $scalarSerializer ), 'description' => new BodyParameterDefinition( new HierarchicalInjector(['item', 'description']), $scalarSerializer ), ]), new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, []) ), ], []), 'invite' => new ResourceDefinition([ 'post' => new OperationDefinition( new ParameterDefinitionCollection($parameterBuilder, [ 'message' => new BodyParameterDefinition( new HierarchicalInjector(['message']), $scalarSerializer ), 'requireSignIn' => new BodyParameterDefinition( new HierarchicalInjector(['requireSignIn']), $scalarSerializer ), 'sendInvitation' => new BodyParameterDefinition( new HierarchicalInjector(['sendInvitation']), $scalarSerializer ), ]), new ParameterDefinitionCollection($parameterBuilder, []), new ParameterDefinitionCollection($parameterBuilder, []) ), ], []), ]), ]); } }