Skip to content

Commit

Permalink
Merge branch 'main' into AddSpecSummary
Browse files Browse the repository at this point in the history
  • Loading branch information
sarangan12 authored Oct 18, 2024
2 parents 8f6a936 + 04952e4 commit b6cdd3a
Show file tree
Hide file tree
Showing 70 changed files with 1,424 additions and 546 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// Licensed under the MIT License.

using System;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.Text.Json;
using System.Xml;
Expand Down Expand Up @@ -32,8 +31,8 @@ public static ParameterProvider ClientOptions(CSharpType clientOptionsType)
=> new("options", $"The options for configuring the client.", clientOptionsType.WithNullable(true), initializationValue: New.Instance(clientOptionsType.WithNullable(true)));
public static readonly ParameterProvider KeyAuth = new("keyCredential", $"The token credential to copy", ClientModelPlugin.Instance.TypeFactory.KeyCredentialType);
public static readonly ParameterProvider MatchConditionsParameter = new("matchConditions", $"The content to send as the request conditions of the request.", ClientModelPlugin.Instance.TypeFactory.MatchConditionsType, DefaultOf(ClientModelPlugin.Instance.TypeFactory.MatchConditionsType));
public static readonly ParameterProvider RequestOptions = new("options", $"The request options, which can override default behaviors of the client pipeline on a per-call basis.", typeof(RequestOptions));
public static readonly ParameterProvider BinaryContent = new("content", $"The content to send as the body of the request.", typeof(BinaryContent), location: ParameterLocation.Body) { Validation = ParameterValidationType.AssertNotNull };
public static readonly ParameterProvider RequestOptions = new(ClientModelPlugin.Instance.TypeFactory.HttpRequestOptionsApi.ParameterName, $"The request options, which can override default behaviors of the client pipeline on a per-call basis.", ClientModelPlugin.Instance.TypeFactory.HttpRequestOptionsApi.HttpRequestOptionsType);
public static readonly ParameterProvider RequestContent = new("content", $"The content to send as the body of the request.", ClientModelPlugin.Instance.TypeFactory.RequestContentApi.RequestContentType, location: ParameterLocation.Body) { Validation = ParameterValidationType.AssertNotNull };

// Known header parameters
public static readonly ParameterProvider RepeatabilityRequestId = new("repeatabilityRequestId", FormattableStringHelpers.Empty, typeof(Guid))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record ClientPipelineApi : ScopedApi, IClientPipelineApi
{
public abstract CSharpType ClientPipelineType { get; }
public abstract CSharpType ClientPipelineOptionsType { get; }
public abstract CSharpType PipelinePolicyType { get; }

protected ClientPipelineApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract HttpMessageApi CreateMessage();

public abstract ValueExpression CreateMessage(HttpRequestOptionsApi requestOptions, ValueExpression responseClassifier);

public abstract InvokeMethodExpression Send(HttpMessageApi message);

public abstract InvokeMethodExpression SendAsync(HttpMessageApi message);

public abstract ValueExpression Create(ValueExpression options, ValueExpression perRetryPolicies);

public abstract ValueExpression PerRetryPolicy(params ValueExpression[] arguments);
public abstract ClientPipelineApi FromExpression(ValueExpression expression);
public abstract ClientPipelineApi ToExpression();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record ClientResponseApi : ScopedApi, IClientResponseApi
{
protected ClientResponseApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract HttpResponseApi GetRawResponse();

public abstract ValueExpression FromValue(ValueExpression valueExpression, HttpResponseApi response);

public abstract ValueExpression FromValue<ValueType>(ValueExpression valueExpression, HttpResponseApi response);

public abstract ValueExpression FromResponse(ValueExpression valueExpression);

public abstract ValueExpression CreateAsync(HttpResponseApi response);

public abstract ClientResponseApi FromExpression(ValueExpression original);

public abstract ClientResponseApi ToExpression();

public abstract CSharpType ClientResponseType { get; }

public abstract CSharpType ClientResponseOfTType { get; }

public abstract CSharpType ClientResponseExceptionType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;
using Microsoft.Generator.CSharp.Statements;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record HttpMessageApi : ScopedApi, IHttpMessageApi
{
protected HttpMessageApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract HttpRequestApi Request();

public abstract HttpResponseApi Response();

public abstract ValueExpression BufferResponse();

public abstract ValueExpression ResponseClassifier();

public abstract MethodBodyStatement Apply(ValueExpression options);

public abstract MethodBodyStatement[] ExtractResponse();

public abstract HttpMessageApi FromExpression(ValueExpression original);

public abstract HttpMessageApi ToExpression();

public abstract CSharpType HttpMessageType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Collections.Generic;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record HttpRequestApi : ScopedApi, IExpressionApi<HttpRequestApi>
{
protected HttpRequestApi(CSharpType type, ValueExpression original) : base(type, original)
{
}

public abstract AssignmentExpression SetMethod(string httpMethod);

public abstract AssignmentExpression SetUri(ValueExpression uri);

public abstract InvokeMethodExpression SetHeaders(IReadOnlyList<ValueExpression> arguments);

public abstract ValueExpression Content();
public abstract HttpRequestApi FromExpression(ValueExpression original);
public abstract HttpRequestApi ToExpression();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record HttpRequestOptionsApi : ScopedApi, IHttpRequestOptionsApi
{
public HttpRequestOptionsApi(CSharpType type, ValueExpression original) : base(type, original)
{
}

public abstract ValueExpression ErrorOptions();

public abstract HttpRequestOptionsApi FromExpression(ValueExpression original);

public abstract ValueExpression NoThrow();

public abstract HttpRequestOptionsApi ToExpression();

public abstract CSharpType HttpRequestOptionsType { get; }
public abstract string ParameterName { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.IO;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record HttpResponseApi : ScopedApi, IHttpResponseApi
{
protected HttpResponseApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract ScopedApi<Stream> ContentStream();

public abstract ScopedApi<BinaryData> Content();

public abstract ScopedApi<bool> IsError();

public abstract CSharpType HttpResponseType { get; }

public abstract HttpResponseApi FromExpression(ValueExpression original);

public abstract HttpResponseApi ToExpression();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IClientPipelineApi : IExpressionApi<ClientPipelineApi>
{
CSharpType ClientPipelineType { get; }
CSharpType ClientPipelineOptionsType { get; }
CSharpType PipelinePolicyType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IClientResponseApi : IExpressionApi<ClientResponseApi>
{
CSharpType ClientResponseExceptionType { get; }

CSharpType ClientResponseType { get; }

CSharpType ClientResponseOfTType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IExpressionApi<T> where T : ScopedApi
{
T FromExpression(ValueExpression original);

T ToExpression();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IHttpMessageApi : IExpressionApi<HttpMessageApi>
{
CSharpType HttpMessageType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IHttpRequestOptionsApi : IExpressionApi<HttpRequestOptionsApi>
{
CSharpType HttpRequestOptionsType { get; }

string ParameterName { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IHttpResponseApi : IExpressionApi<HttpResponseApi>
{
CSharpType HttpResponseType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IRequestContentApi : IExpressionApi<RequestContentApi>
{
CSharpType RequestContentType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using Microsoft.Generator.CSharp.Primitives;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public interface IStatusCodeClassifierApi : IExpressionApi<StatusCodeClassifierApi>
{
CSharpType ResponseClassifierType { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;
using Microsoft.Generator.CSharp.Statements;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record RequestContentApi : ScopedApi, IRequestContentApi
{
protected RequestContentApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract CSharpType RequestContentType { get; }

public abstract RequestContentApi FromExpression(ValueExpression original);
public abstract RequestContentApi ToExpression();
public abstract MethodBodyStatement[] Create(ValueExpression argument);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
{
public abstract record StatusCodeClassifierApi : ScopedApi, IStatusCodeClassifierApi
{
public StatusCodeClassifierApi(Type type, ValueExpression original) : base(type, original)
{
}

public abstract CSharpType ResponseClassifierType { get; }

public abstract ValueExpression Create(int code);
public abstract StatusCodeClassifierApi FromExpression(ValueExpression original);
public abstract StatusCodeClassifierApi ToExpression();
}
}
Loading

0 comments on commit b6cdd3a

Please sign in to comment.