src/DotNetWorker.Grpc/Http/GrpcHttpCookies.cs (43 lines of code) (raw):
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using Google.Protobuf.Collections;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Azure.Functions.Worker.Grpc.Messages;
namespace Microsoft.Azure.Functions.Worker
{
internal class GrpcHttpCookies : HttpCookies
{
private RepeatedField<RpcHttpCookie> _cookies;
public GrpcHttpCookies(RepeatedField<RpcHttpCookie> cookies)
{
_cookies = cookies;
}
public override void Append(string name, string value)
{
if (name is null)
{
throw new ArgumentNullException(nameof(name));
}
if (value is null)
{
throw new ArgumentNullException(nameof(value));
}
Append(new HttpCookie(name, value));
}
public override void Append(IHttpCookie cookie)
{
if (cookie is null)
{
throw new ArgumentNullException(nameof(cookie));
}
if (cookie is not RpcHttpCookie rpcCookie)
{
rpcCookie = new RpcHttpCookie(cookie);
}
_cookies.Add(rpcCookie);
}
public override IHttpCookie CreateNew() => new RpcHttpCookie();
internal RepeatedField<RpcHttpCookie> GetCookies() => _cookies;
}
}