Example #1
0
            /// <summary>
            /// Find out whether it is an action or WebInvoke request.
            /// </summary>
            /// <param name="uriString">The request uri string</param>
            /// <returns>Whether it is an action or WebInvoke request</returns>
            internal bool IsInvokeOperationRequest(string uriString)
            {
                int operationNameStartIndex = uriString.LastIndexOf('/');

                if (operationNameStartIndex > 0)
                {
                    string functionName          = uriString.Substring(operationNameStartIndex + 1);
                    int    queryOptionStartIndex = functionName.IndexOf('?');
                    if (queryOptionStartIndex > 0)
                    {
                        functionName = functionName.Substring(0, queryOptionStartIndex);
                    }

                    // find out if the function is an action or WebInvoke
                    Function function = this.model.Functions.Where(f => f.Name == functionName).SingleOrDefault();
                    if (function != null)
                    {
                        ServiceOperationAnnotation serviceOperationAnnotation = function.Annotations.OfType <ServiceOperationAnnotation>().SingleOrDefault();
                        if (serviceOperationAnnotation != null)
                        {
                            return(serviceOperationAnnotation.IsAction);
                        }

                        LegacyServiceOperationAnnotation legacyServiceOperationAnnotation = function.Annotations.OfType <LegacyServiceOperationAnnotation>().SingleOrDefault();
                        if (legacyServiceOperationAnnotation != null)
                        {
                            return(legacyServiceOperationAnnotation.Method == HttpVerb.Post);
                        }
                    }
                }

                return(false);
            }
Example #2
0
            internal static bool IsSingleResultQueryableOrEnumerable(LegacyServiceOperationAnnotation svcOpAnnotation)
            {
                if (svcOpAnnotation == null)
                {
                    return(false);
                }

                if (!svcOpAnnotation.SingleResult)
                {
                    return(false);
                }

                return(svcOpAnnotation.ReturnTypeQualifier == ServiceOperationReturnTypeQualifier.IEnumerable ||
                       svcOpAnnotation.ReturnTypeQualifier == ServiceOperationReturnTypeQualifier.IQueryable);
            }