public static void IsMeta_Value(UriSegment elementAt)
            {
                var segment = elementAt.As <UriSegment.Meta>();

                segment.Should().NotBeNull();
                segment.item.IsValue.Should().BeTrue();
            }
            public static void IsEntityType(UriSegment seg, string Key, string Name, ResourceType resource)
            {
                var segment = seg.As <UriSegment.EntityType>();

                segment.Should().NotBeNull();
                segment.item.Key.Should().Be(Key);
                segment.item.Name.Should().Be(Name);
                segment.item.ResourceType.Should().Be(resource);
            }
        private static IEnumerable<Link> GetLinks(Order order, string baseAddress)
        {
            var baseUri = new UriSegment(baseAddress);
              var linker = new ResourceLinker(baseAddress);

              var get = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                               OrderResourceHandler.SlashOrderId,
                                               new {orderId = order.Id}),
                         baseUri + "docs/order-get.htm",
                         MediaTypes.Default);

              var update = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                  OrderResourceHandler.SlashOrderId,
                                                  new {orderId = order.Id}),
                            baseUri + "docs/order-update.htm",
                            MediaTypes.Default);

              var cancel = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                  OrderResourceHandler.SlashOrderId,
                                                  new {orderId = order.Id}),
                            baseUri + "docs/order-cancel.htm",
                            MediaTypes.Default);

              var pay = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                               OrderResourceHandler.PaymentPath,
                                               new {orderId = order.Id}),
                         baseUri + "docs/order-pay.htm",
                         MediaTypes.Default);

              var receipt = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                   OrderResourceHandler.ReceiptPath,
                                                   new {orderId = order.Id}),
                             baseUri + "docs/receipt-coffee.htm",
                             MediaTypes.Default);

              switch (order.Status)
              {
            case OrderStatus.Unpaid:
              yield return get;
              yield return update;
              yield return cancel;
              yield return pay;
              break;
            case OrderStatus.Paid:
            case OrderStatus.Delivered:
              yield return get;
              break;
            case OrderStatus.Ready:
              yield return receipt;
              break;
            case OrderStatus.Canceled:
              yield break;
            default:
              yield break;
              }
        }
            public static void IsPropertyCollection(UriSegment elementAt, string Name, ResourceType resource)
            {
                var segment = elementAt.As <UriSegment.PropertyAccessCollection>();

                segment.Should().NotBeNull();
                segment.item.Property.Name.Should().Be(Name);
                segment.item.ResourceType.Should().NotBeNull();
                segment.item.ResourceType.Should().Be(resource);
                segment.item.Key.Should().BeNull();
            }
            public static void IsPropertySingle(UriSegment elementAt, string name, string key = null)
            {
                var segment = elementAt.As <UriSegment.PropertyAccessSingle>();

                segment.Should().NotBeNull();
                segment.item.Property.Name.Should().Be(name);
                segment.item.ResourceType.Should().NotBeNull();
                if (key == null)
                {
                    segment.item.Key.Should().BeNull();
                }
                else
                {
                    segment.item.Key.Should().NotBeNull();
                    segment.item.Key.Should().Be(key);
                }
            }
示例#6
0
        private void ResolveUriSegments()
        {
            bool isFirstQuery = true;

            for (int i = 0; i < _segments.Count; i++)
            {
                UriSegment uriSegment = _segments[i];

                switch (uriSegment.Type)
                {
                case UriSegmentType.UriSegment:
                    _result.Append(uriSegment.SegmentValue);
                    break;

                case UriSegmentType.Replacement:
                    if (_uriPathParameters.TryGetValue(uriSegment.SegmentValue, out object replacement))
                    {
                        _result.Append(Encode(replacement.ToString()));
                    }

                    break;

                case UriSegmentType.PathSegment:
                    if (_uriPathParameters.TryGetValue(uriSegment.SegmentValue, out object segment))
                    {
                        _result.Append($"/{Encode(segment.ToString())}");
                    }

                    break;

                case UriSegmentType.Query:
                    if (_uriPathParameters.TryGetValue(uriSegment.SegmentValue, out object query))
                    {
                        _result.Append(isFirstQuery ? '?' : '&');
                        isFirstQuery = false;
                        _result.Append($"{uriSegment.SegmentValue}={ResolveValue(query)}");
                    }

                    break;

                default:
                    throw new InvalidOperationException("invalid uri segment type");
                }
            }
        }
示例#7
0
        private static IEnumerable <Link> GetLinks(Order order, string baseAddress)
        {
            var baseUri = new UriSegment(baseAddress);
            var linker  = new ResourceLinker(baseAddress);

            var get = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                     OrderResourceHandler.SlashOrderId,
                                                     new { orderId = order.Id }),
                               baseUri + "docs/order-get.htm",
                               MediaTypes.Default);

            var update = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                        OrderResourceHandler.SlashOrderId,
                                                        new { orderId = order.Id }),
                                  baseUri + "docs/order-update.htm",
                                  MediaTypes.Default);

            var cancel = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                        OrderResourceHandler.SlashOrderId,
                                                        new { orderId = order.Id }),
                                  baseUri + "docs/order-cancel.htm",
                                  MediaTypes.Default);

            var pay = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                     OrderResourceHandler.PaymentPath,
                                                     new { orderId = order.Id }),
                               baseUri + "docs/order-pay.htm",
                               MediaTypes.Default);

            var receipt = new Link(linker.BuildUriString(OrderResourceHandler.Path,
                                                         OrderResourceHandler.ReceiptPath,
                                                         new { orderId = order.Id }),
                                   baseUri + "docs/receipt-coffee.htm",
                                   MediaTypes.Default);

            switch (order.Status)
            {
            case OrderStatus.Unpaid:
                yield return(get);

                yield return(update);

                yield return(cancel);

                yield return(pay);

                break;

            case OrderStatus.Paid:
            case OrderStatus.Delivered:
                yield return(get);

                break;

            case OrderStatus.Ready:
                yield return(receipt);

                break;

            case OrderStatus.Canceled:
                yield break;

            default:
                yield break;
            }
        }
 public static void IsPropertySingle(UriSegment elementAt, string name, string key = null)
 {
     var segment = elementAt.As<UriSegment.PropertyAccessSingle>();
     segment.Should().NotBeNull();
     segment.item.Property.Name.Should().Be(name);
     segment.item.ResourceType.Should().NotBeNull();
     if (key == null )
         segment.item.Key.Should().BeNull();
     else
     {
         segment.item.Key.Should().NotBeNull();
         segment.item.Key.Should().Be(key);
     }
 }
 public static void IsPropertyCollection(UriSegment elementAt, string Name, ResourceType resource)
 {
     var segment = elementAt.As<UriSegment.PropertyAccessCollection>();
     segment.Should().NotBeNull();
     segment.item.Property.Name.Should().Be(Name);
     segment.item.ResourceType.Should().NotBeNull();
     segment.item.ResourceType.Should().Be(resource);
     segment.item.Key.Should().BeNull();
 }
 public static void IsMeta_Value(UriSegment elementAt)
 {
     var segment = elementAt.As<UriSegment.Meta>();
     segment.Should().NotBeNull();
     segment.item.IsValue.Should().BeTrue();
 }
 public static void IsEntityType(UriSegment seg, string Key, string Name, ResourceType resource)
 {
     var segment = seg.As<UriSegment.EntityType>();
     segment.Should().NotBeNull();
     segment.item.Key.Should().Be(Key);
     segment.item.Name.Should().Be(Name);
     segment.item.ResourceType.Should().Be(resource);
 }
 public static void FirstSegmentIsServiceDirectory(UriSegment[] segments)
 {
     ExpectingSegmentsCount(segments, 1);
     segments.ElementAt(0).IsServiceDirectory.Should().BeTrue();
 }
 public static void FirstSegmentIsMetadata(UriSegment[] segments)
 {
     ExpectingSegmentsCount(segments, 1);
     segments.ElementAt(0).IsMeta.Should().BeTrue();
     segments.ElementAt(0).As<UriSegment.Meta>().item.IsMetadata.Should().BeTrue();
 }
 public static void ExpectingSegmentsCount(UriSegment[] segments, int count)
 {
     segments.Should().NotBeNull();
     segments.Should().HaveCount(count);
 }