コード例 #1
0
        /// <summary>
        /// Additional media types per payload kind for the WCF DS client on pre-v3 payloads.
        /// Anything that normally accepts application/atom+xml should also accept application/xml, and vice versa.
        /// </summary>
        private void AddV2ClientMediaTypes()
        {
            MediaTypeWithFormat appAtomXmlMediaType = new MediaTypeWithFormat {
                Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType
            };
            MediaTypeWithFormat appXmlMediaType = new MediaTypeWithFormat {
                Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType
            };

            IList <MediaTypeWithFormat> feedMediaTypes = this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Feed];

            feedMediaTypes.Add(new MediaTypeWithFormat {
                Format = ODataFormat.Atom, MediaType = new MediaType(MimeConstants.MimeApplicationType, MimeConstants.MimeXmlSubType, new KeyValuePair <string, string>(MimeConstants.MimeTypeParameterName, MimeConstants.MimeTypeParameterValueFeed))
            });
            feedMediaTypes.Add(appXmlMediaType);

            IList <MediaTypeWithFormat> entryMediaTypes = this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Entry];

            entryMediaTypes.Add(new MediaTypeWithFormat {
                Format = ODataFormat.Atom, MediaType = new MediaType(MimeConstants.MimeApplicationType, MimeConstants.MimeXmlSubType, new KeyValuePair <string, string>(MimeConstants.MimeTypeParameterName, MimeConstants.MimeTypeParameterValueEntry))
            });
            entryMediaTypes.Add(appXmlMediaType);

            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Property].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.EntityReferenceLink].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.EntityReferenceLinks].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Collection].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.ServiceDocument].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.MetadataDocument].Add(appAtomXmlMediaType);
            this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Error].Add(appAtomXmlMediaType);
        }
コード例 #2
0
 /// <summary>
 /// Adds the given media type/format for all the payload kinds which support JSON.
 /// </summary>
 /// <param name="mediaTypeWithFormat">The media type/format pair to add.</param>
 private void AddForJsonPayloadKinds(MediaTypeWithFormat mediaTypeWithFormat)
 {
     foreach (ODataPayloadKind kind in JsonPayloadKinds)
     {
         this.mediaTypesForPayloadKind[(int)kind].Add(mediaTypeWithFormat);
     }
 }
コード例 #3
0
 /// <summary>
 /// Inserts the given media type/format for all the payload kinds which support JSON before the first media type with the given format.
 /// </summary>
 /// <param name="mediaTypeWithFormat">The media type/format pair to add.</param>
 /// <param name="beforeFormat">The format of the media type before which <paramref name="mediaTypeWithFormat"/> should be inserted.</param>
 private void InsertForJsonPayloadKinds(MediaTypeWithFormat mediaTypeWithFormat, ODataFormat beforeFormat)
 {
     foreach (ODataPayloadKind kind in JsonPayloadKinds)
     {
         AddMediaTypeEntryOrdered(this.mediaTypesForPayloadKind[(int)kind], mediaTypeWithFormat, beforeFormat);
     }
 }
コード例 #4
0
        /// <summary>
        /// Configure the media type tables so that Json Light is the first JSON format in the table.
        /// </summary>
        /// <remarks>
        /// This is only used in V3 and beyond.
        /// </remarks>
        private void AddJsonLightMediaTypes()
        {
            var optionalParameters = new[]
            {
                new
                {
                    ParameterName = MimeConstants.MimeODataParameterName,
                    Values        = new[] { MimeConstants.MimeODataParameterValueMinimalMetadata, MimeConstants.MimeODataParameterValueFullMetadata, MimeConstants.MimeODataParameterValueNoMetadata }
                },
                new
                {
                    ParameterName = MimeConstants.MimeStreamingParameterName,
                    Values        = new[] { MimeConstants.MimeStreamingParameterValueTrue, MimeConstants.MimeStreamingParameterValueFalse }
                },
            };

            // initial seed for the list will be extended in breadth-first passes over the optional parameters
            var mediaTypesToAdd = new LinkedList <MediaType>();

            mediaTypesToAdd.AddFirst(ApplicationJsonMediaType);

            foreach (var optionalParameter in optionalParameters)
            {
                // go through each one so far and extend it
                for (LinkedListNode <MediaType> currentNode = mediaTypesToAdd.First; currentNode != null; currentNode = currentNode.Next)
                {
                    MediaType typeToExtend = currentNode.Value;
                    foreach (string valueToAdd in optionalParameter.Values)
                    {
                        var extendedParameters = new List <KeyValuePair <string, string> >(typeToExtend.Parameters ?? Enumerable.Empty <KeyValuePair <string, string> >())
                        {
                            new KeyValuePair <string, string>(optionalParameter.ParameterName, valueToAdd)
                        };

                        var extendedMediaType = new MediaType(typeToExtend.TypeName, typeToExtend.SubTypeName, extendedParameters);

                        // always match more specific things first
                        mediaTypesToAdd.AddBefore(currentNode, extendedMediaType);
                    }
                }
            }

            foreach (MediaType mediaType in mediaTypesToAdd)
            {
                var mediaTypeWithFormat = new MediaTypeWithFormat {
                    Format = ODataFormat.Json, MediaType = mediaType
                };
                if (mediaType == ApplicationJsonMediaType)
                {
                    this.AddForJsonPayloadKinds(mediaTypeWithFormat);
                }
                else
                {
                    this.InsertForJsonPayloadKinds(mediaTypeWithFormat, ODataFormat.VerboseJson);
                }
            }
        }
コード例 #5
0
 private void AddCustomMediaTypes(Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes)
 {
     foreach (KeyValuePair <ODataPayloadKind, MediaTypeWithFormat[]> pair in customMediaTypes)
     {
         MediaTypeWithFormat[] formatArray  = pair.Value;
         MediaTypeWithFormat[] formatArray2 = this.mediaTypesForPayloadKind[(int)pair.Key];
         MediaTypeWithFormat[] array        = new MediaTypeWithFormat[formatArray2.Length + formatArray.Length];
         formatArray2.CopyTo(array, 0);
         formatArray.CopyTo(array, formatArray2.Length);
         this.mediaTypesForPayloadKind[(int)pair.Key] = array;
     }
 }
コード例 #6
0
 private static MediaType GetDefaultMediaType(MediaTypeWithFormat[] supportedMediaTypes, ODataFormat specifiedFormat, out ODataFormat actualFormat)
 {
     for (int i = 0; i < supportedMediaTypes.Length; i++)
     {
         MediaTypeWithFormat format = supportedMediaTypes[i];
         if ((specifiedFormat == null) || (format.Format == specifiedFormat))
         {
             actualFormat = format.Format;
             return(format.MediaType);
         }
     }
     throw new ODataException(Microsoft.Data.OData.Strings.ODataUtils_DidNotFindDefaultMediaType(specifiedFormat));
 }
コード例 #7
0
        /// <summary>
        /// Modifies the MediaTypeResolver to include additional media types.
        /// </summary>
        /// <param name="customMediaTypes">The payload kind mappings to add.</param>
        private void AddCustomMediaTypes(Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes)
        {
            foreach (KeyValuePair <ODataPayloadKind, MediaTypeWithFormat[]> payloadKindMediaTypePair in customMediaTypes)
            {
                MediaTypeWithFormat[] newMappings      = payloadKindMediaTypePair.Value;
                MediaTypeWithFormat[] existingMappings = this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key];
                MediaTypeWithFormat[] combinedMappings = new MediaTypeWithFormat[existingMappings.Length + newMappings.Length];

                // Copy the existing and new mappings into the combinedMappings array.
                existingMappings.CopyTo(combinedMappings, 0);
                newMappings.CopyTo(combinedMappings, existingMappings.Length);

                this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key] = combinedMappings;
            }
        }
コード例 #8
0
        /// <summary>
        /// Gets the default media type for a given payload kind in a given format.
        /// </summary>
        /// <param name="supportedMediaTypes">An array of supported media types and formats.</param>
        /// <param name="specifiedFormat">The user-specified format in which to write the payload (can be null).</param>
        /// <param name="actualFormat">The default format for the specified payload kind</param>
        /// <returns>The default media type for the given payload kind and format.</returns>
        private static MediaType GetDefaultMediaType(
            MediaTypeWithFormat[] supportedMediaTypes,
            ODataFormat specifiedFormat,
            out ODataFormat actualFormat)
        {
            for (int i = 0; i < supportedMediaTypes.Length; ++i)
            {
                // NOTE: the supportedMediaTypes are sorted (desc) by format and media type; so the
                //       default format and media type is the first entry in the array
                MediaTypeWithFormat supportedMediaType = supportedMediaTypes[i];
                if (specifiedFormat == null || supportedMediaType.Format == specifiedFormat)
                {
                    actualFormat = supportedMediaType.Format;
                    return(supportedMediaType.MediaType);
                }
            }

            throw new ODataException(Strings.ODataUtils_DidNotFindDefaultMediaType(specifiedFormat));
        }
コード例 #9
0
        /// <summary>
        /// Creates a new media type resolver for writers with the mappings for the specified version.
        /// </summary>
        /// <param name="version">The version used to write the payload.</param>
        private MediaTypeResolver(ODataVersion version)
        {
            this.version = version;
            this.mediaTypesForPayloadKind = CloneDefaultMediaTypes();

            if (this.version < ODataVersion.V3)
            {
                // Treat "application/json" the same as "application/json;odata=verbose" in < V3.
                MediaTypeWithFormat jsonMediaTypeWithFormat =
                    new MediaTypeWithFormat {
                    Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType
                };
                this.AddForJsonPayloadKinds(jsonMediaTypeWithFormat);
            }
            else
            {
                // Add JSON-light media types into the media type table
                this.AddJsonLightMediaTypes();
            }
        }
コード例 #10
0
        /// <summary>
        /// Modifies the MediaTypeResolver to include additional media types.
        /// </summary>
        /// <param name="customMediaTypes">The payload kind mappings to add.</param>
        private void AddCustomMediaTypes(Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes)
        {
            foreach (KeyValuePair<ODataPayloadKind, MediaTypeWithFormat[]> payloadKindMediaTypePair in customMediaTypes)
            {
                MediaTypeWithFormat[] newMappings = payloadKindMediaTypePair.Value;
                MediaTypeWithFormat[] existingMappings = this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key];
                MediaTypeWithFormat[] combinedMappings = new MediaTypeWithFormat[existingMappings.Length + newMappings.Length];

                // Copy the existing and new mappings into the combinedMappings array.
                existingMappings.CopyTo(combinedMappings, 0);
                newMappings.CopyTo(combinedMappings, existingMappings.Length);

                this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key] = combinedMappings;
            }
        }
コード例 #11
0
ファイル: MediaTypeResolver.cs プロジェクト: nickchal/pash
 private void AddCustomMediaTypes(Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes)
 {
     foreach (KeyValuePair<ODataPayloadKind, MediaTypeWithFormat[]> pair in customMediaTypes)
     {
         MediaTypeWithFormat[] formatArray = pair.Value;
         MediaTypeWithFormat[] formatArray2 = this.mediaTypesForPayloadKind[(int)pair.Key];
         MediaTypeWithFormat[] array = new MediaTypeWithFormat[formatArray2.Length + formatArray.Length];
         formatArray2.CopyTo(array, 0);
         formatArray.CopyTo(array, formatArray2.Length);
         this.mediaTypesForPayloadKind[(int)pair.Key] = array;
     }
 }
コード例 #12
0
ファイル: MediaTypeResolver.cs プロジェクト: nickchal/pash
 static MediaTypeResolver()
 {
     MediaTypeWithFormat[][] formatArray = new MediaTypeWithFormat[13][];
     MediaTypeWithFormat[] formatArray2 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = new MediaType("application", "atom+xml", new KeyValuePair<string, string>("type", "feed"))
     };
     formatArray2[0] = format;
     MediaTypeWithFormat format2 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[1] = format2;
     MediaTypeWithFormat format3 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray2[2] = format3;
     formatArray[0] = formatArray2;
     MediaTypeWithFormat[] formatArray3 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format4 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = new MediaType("application", "atom+xml", new KeyValuePair<string, string>("type", "entry"))
     };
     formatArray3[0] = format4;
     MediaTypeWithFormat format5 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray3[1] = format5;
     MediaTypeWithFormat format6 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray3[2] = format6;
     formatArray[1] = formatArray3;
     MediaTypeWithFormat[] formatArray4 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format7 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray4[0] = format7;
     MediaTypeWithFormat format8 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = TextXmlMediaType
     };
     formatArray4[1] = format8;
     MediaTypeWithFormat format9 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray4[2] = format9;
     formatArray[2] = formatArray4;
     MediaTypeWithFormat[] formatArray5 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format10 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray5[0] = format10;
     MediaTypeWithFormat format11 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = TextXmlMediaType
     };
     formatArray5[1] = format11;
     MediaTypeWithFormat format12 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray5[2] = format12;
     formatArray[3] = formatArray5;
     MediaTypeWithFormat[] formatArray6 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format13 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray6[0] = format13;
     MediaTypeWithFormat format14 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = TextXmlMediaType
     };
     formatArray6[1] = format14;
     MediaTypeWithFormat format15 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray6[2] = format15;
     formatArray[4] = formatArray6;
     MediaTypeWithFormat[] formatArray7 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format16 = new MediaTypeWithFormat {
         Format = ODataFormat.RawValue,
         MediaType = new MediaType("text", "plain")
     };
     formatArray7[0] = format16;
     formatArray[5] = formatArray7;
     MediaTypeWithFormat[] formatArray8 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format17 = new MediaTypeWithFormat {
         Format = ODataFormat.RawValue,
         MediaType = new MediaType("application", "octet-stream")
     };
     formatArray8[0] = format17;
     formatArray[6] = formatArray8;
     MediaTypeWithFormat[] formatArray9 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format18 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray9[0] = format18;
     MediaTypeWithFormat format19 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = TextXmlMediaType
     };
     formatArray9[1] = format19;
     MediaTypeWithFormat format20 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray9[2] = format20;
     formatArray[7] = formatArray9;
     MediaTypeWithFormat[] formatArray10 = new MediaTypeWithFormat[3];
     MediaTypeWithFormat format21 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray10[0] = format21;
     MediaTypeWithFormat format22 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = new MediaType("application", "atomsvc+xml")
     };
     formatArray10[1] = format22;
     MediaTypeWithFormat format23 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray10[2] = format23;
     formatArray[8] = formatArray10;
     MediaTypeWithFormat[] formatArray11 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format24 = new MediaTypeWithFormat {
         Format = ODataFormat.Metadata,
         MediaType = ApplicationXmlMediaType
     };
     formatArray11[0] = format24;
     formatArray[9] = formatArray11;
     formatArray2 = new MediaTypeWithFormat[2];
     MediaTypeWithFormat format25 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray2[0] = format25;
     MediaTypeWithFormat format26 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray2[1] = format26;
     formatArray[10] = formatArray2;
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format27 = new MediaTypeWithFormat {
         Format = ODataFormat.Batch,
         MediaType = new MediaType("multipart", "mixed")
     };
     formatArray2[0] = format27;
     formatArray[11] = formatArray2;
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format28 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonVerboseMediaType
     };
     formatArray2[0] = format28;
     formatArray[12] = formatArray2;
     defaultMediaTypes = formatArray;
     Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> dictionary = new Dictionary<ODataPayloadKind, MediaTypeWithFormat[]>();
     formatArray2 = new MediaTypeWithFormat[2];
     MediaTypeWithFormat format29 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = new MediaType("application", "xml", new KeyValuePair<string, string>("type", "feed"))
     };
     formatArray2[0] = format29;
     MediaTypeWithFormat format30 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray2[1] = format30;
     dictionary.Add(ODataPayloadKind.Feed, formatArray2);
     formatArray2 = new MediaTypeWithFormat[2];
     MediaTypeWithFormat format31 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = new MediaType("application", "xml", new KeyValuePair<string, string>("type", "entry"))
     };
     formatArray2[0] = format31;
     MediaTypeWithFormat format32 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationXmlMediaType
     };
     formatArray2[1] = format32;
     dictionary.Add(ODataPayloadKind.Entry, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format33 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format33;
     dictionary.Add(ODataPayloadKind.Property, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format34 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format34;
     dictionary.Add(ODataPayloadKind.EntityReferenceLink, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format35 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format35;
     dictionary.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format36 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format36;
     dictionary.Add(ODataPayloadKind.Collection, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format37 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format37;
     dictionary.Add(ODataPayloadKind.ServiceDocument, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format38 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format38;
     dictionary.Add(ODataPayloadKind.MetadataDocument, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format39 = new MediaTypeWithFormat {
         Format = ODataFormat.Atom,
         MediaType = ApplicationAtomXmlMediaType
     };
     formatArray2[0] = format39;
     dictionary.Add(ODataPayloadKind.Error, formatArray2);
     additionalClientV2MediaTypes = dictionary;
     Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> dictionary2 = new Dictionary<ODataPayloadKind, MediaTypeWithFormat[]>();
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format40 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format40;
     dictionary2.Add(ODataPayloadKind.Feed, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format41 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format41;
     dictionary2.Add(ODataPayloadKind.Entry, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format42 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format42;
     dictionary2.Add(ODataPayloadKind.Property, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format43 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format43;
     dictionary2.Add(ODataPayloadKind.EntityReferenceLink, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format44 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format44;
     dictionary2.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format45 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format45;
     dictionary2.Add(ODataPayloadKind.Collection, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format46 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format46;
     dictionary2.Add(ODataPayloadKind.ServiceDocument, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format47 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format47;
     dictionary2.Add(ODataPayloadKind.Error, formatArray2);
     formatArray2 = new MediaTypeWithFormat[1];
     MediaTypeWithFormat format48 = new MediaTypeWithFormat {
         Format = ODataFormat.VerboseJson,
         MediaType = ApplicationJsonMediaType
     };
     formatArray2[0] = format48;
     dictionary2.Add(ODataPayloadKind.Parameter, formatArray2);
     plainAppJsonMeansVerbose = dictionary2;
 }
コード例 #13
0
        /// <summary>
        /// Inserts the specified media type before the first occurrence of <paramref name="beforeFormat"/>.
        /// </summary>
        /// <param name="mediaTypeList">The media type list to insert into.</param>
        /// <param name="mediaTypeToInsert">The media type to insert.</param>
        /// <param name="beforeFormat">The format of the media type before which <paramref name="mediaTypeToInsert"/> should be inserted.</param>
        private static void AddMediaTypeEntryOrdered(IList <MediaTypeWithFormat> mediaTypeList, MediaTypeWithFormat mediaTypeToInsert, ODataFormat beforeFormat)
        {
            Debug.Assert(mediaTypeList != null, "mediaTypeList != null");
            Debug.Assert(mediaTypeToInsert != null, "mediaTypeToInsert != null");
            Debug.Assert(beforeFormat != null, "beforeFormat != null");

            // Go through the list and find the first entry that has the specified format to insert before.
            for (int i = 0; i < mediaTypeList.Count; ++i)
            {
                if (mediaTypeList[i].Format == beforeFormat)
                {
                    mediaTypeList.Insert(i, mediaTypeToInsert);
                    return;
                }
            }

            mediaTypeList.Add(mediaTypeToInsert);
        }
コード例 #14
0
        static MediaTypeResolver()
        {
            MediaTypeWithFormat[][] formatArray  = new MediaTypeWithFormat[13][];
            MediaTypeWithFormat[]   formatArray2 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat     format       = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = new MediaType("application", "atom+xml", new KeyValuePair <string, string>("type", "feed"))
            };

            formatArray2[0] = format;
            MediaTypeWithFormat format2 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[1] = format2;
            MediaTypeWithFormat format3 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray2[2] = format3;
            formatArray[0]  = formatArray2;
            MediaTypeWithFormat[] formatArray3 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format4      = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = new MediaType("application", "atom+xml", new KeyValuePair <string, string>("type", "entry"))
            };

            formatArray3[0] = format4;
            MediaTypeWithFormat format5 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray3[1] = format5;
            MediaTypeWithFormat format6 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray3[2] = format6;
            formatArray[1]  = formatArray3;
            MediaTypeWithFormat[] formatArray4 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format7      = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray4[0] = format7;
            MediaTypeWithFormat format8 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = TextXmlMediaType
            };

            formatArray4[1] = format8;
            MediaTypeWithFormat format9 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray4[2] = format9;
            formatArray[2]  = formatArray4;
            MediaTypeWithFormat[] formatArray5 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format10     = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray5[0] = format10;
            MediaTypeWithFormat format11 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = TextXmlMediaType
            };

            formatArray5[1] = format11;
            MediaTypeWithFormat format12 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray5[2] = format12;
            formatArray[3]  = formatArray5;
            MediaTypeWithFormat[] formatArray6 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format13     = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray6[0] = format13;
            MediaTypeWithFormat format14 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = TextXmlMediaType
            };

            formatArray6[1] = format14;
            MediaTypeWithFormat format15 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray6[2] = format15;
            formatArray[4]  = formatArray6;
            MediaTypeWithFormat[] formatArray7 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat   format16     = new MediaTypeWithFormat {
                Format    = ODataFormat.RawValue,
                MediaType = new MediaType("text", "plain")
            };

            formatArray7[0] = format16;
            formatArray[5]  = formatArray7;
            MediaTypeWithFormat[] formatArray8 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat   format17     = new MediaTypeWithFormat {
                Format    = ODataFormat.RawValue,
                MediaType = new MediaType("application", "octet-stream")
            };

            formatArray8[0] = format17;
            formatArray[6]  = formatArray8;
            MediaTypeWithFormat[] formatArray9 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format18     = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray9[0] = format18;
            MediaTypeWithFormat format19 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = TextXmlMediaType
            };

            formatArray9[1] = format19;
            MediaTypeWithFormat format20 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray9[2] = format20;
            formatArray[7]  = formatArray9;
            MediaTypeWithFormat[] formatArray10 = new MediaTypeWithFormat[3];
            MediaTypeWithFormat   format21      = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray10[0] = format21;
            MediaTypeWithFormat format22 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = new MediaType("application", "atomsvc+xml")
            };

            formatArray10[1] = format22;
            MediaTypeWithFormat format23 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray10[2] = format23;
            formatArray[8]   = formatArray10;
            MediaTypeWithFormat[] formatArray11 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat   format24      = new MediaTypeWithFormat {
                Format    = ODataFormat.Metadata,
                MediaType = ApplicationXmlMediaType
            };

            formatArray11[0] = format24;
            formatArray[9]   = formatArray11;
            formatArray2     = new MediaTypeWithFormat[2];
            MediaTypeWithFormat format25 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray2[0] = format25;
            MediaTypeWithFormat format26 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray2[1] = format26;
            formatArray[10] = formatArray2;
            formatArray2    = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format27 = new MediaTypeWithFormat {
                Format    = ODataFormat.Batch,
                MediaType = new MediaType("multipart", "mixed")
            };

            formatArray2[0] = format27;
            formatArray[11] = formatArray2;
            formatArray2    = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format28 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonVerboseMediaType
            };

            formatArray2[0]   = format28;
            formatArray[12]   = formatArray2;
            defaultMediaTypes = formatArray;
            Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> dictionary = new Dictionary <ODataPayloadKind, MediaTypeWithFormat[]>();

            formatArray2 = new MediaTypeWithFormat[2];
            MediaTypeWithFormat format29 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = new MediaType("application", "xml", new KeyValuePair <string, string>("type", "feed"))
            };

            formatArray2[0] = format29;
            MediaTypeWithFormat format30 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray2[1] = format30;
            dictionary.Add(ODataPayloadKind.Feed, formatArray2);
            formatArray2 = new MediaTypeWithFormat[2];
            MediaTypeWithFormat format31 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = new MediaType("application", "xml", new KeyValuePair <string, string>("type", "entry"))
            };

            formatArray2[0] = format31;
            MediaTypeWithFormat format32 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationXmlMediaType
            };

            formatArray2[1] = format32;
            dictionary.Add(ODataPayloadKind.Entry, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format33 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format33;
            dictionary.Add(ODataPayloadKind.Property, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format34 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format34;
            dictionary.Add(ODataPayloadKind.EntityReferenceLink, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format35 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format35;
            dictionary.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format36 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format36;
            dictionary.Add(ODataPayloadKind.Collection, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format37 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format37;
            dictionary.Add(ODataPayloadKind.ServiceDocument, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format38 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format38;
            dictionary.Add(ODataPayloadKind.MetadataDocument, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format39 = new MediaTypeWithFormat {
                Format    = ODataFormat.Atom,
                MediaType = ApplicationAtomXmlMediaType
            };

            formatArray2[0] = format39;
            dictionary.Add(ODataPayloadKind.Error, formatArray2);
            additionalClientV2MediaTypes = dictionary;
            Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> dictionary2 = new Dictionary <ODataPayloadKind, MediaTypeWithFormat[]>();

            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format40 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format40;
            dictionary2.Add(ODataPayloadKind.Feed, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format41 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format41;
            dictionary2.Add(ODataPayloadKind.Entry, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format42 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format42;
            dictionary2.Add(ODataPayloadKind.Property, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format43 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format43;
            dictionary2.Add(ODataPayloadKind.EntityReferenceLink, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format44 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format44;
            dictionary2.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format45 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format45;
            dictionary2.Add(ODataPayloadKind.Collection, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format46 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format46;
            dictionary2.Add(ODataPayloadKind.ServiceDocument, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format47 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format47;
            dictionary2.Add(ODataPayloadKind.Error, formatArray2);
            formatArray2 = new MediaTypeWithFormat[1];
            MediaTypeWithFormat format48 = new MediaTypeWithFormat {
                Format    = ODataFormat.VerboseJson,
                MediaType = ApplicationJsonMediaType
            };

            formatArray2[0] = format48;
            dictionary2.Add(ODataPayloadKind.Parameter, formatArray2);
            plainAppJsonMeansVerbose = dictionary2;
        }