Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

No commit message

  • Loading branch information...
commit a2bb4599bb478e31a5211a8862d29b0a4fd8044b 1 parent c5eca99
digitallyborn authored
Showing with 36,922 additions and 667 deletions.
  1. +7 −0 Release/Json.NET.license.txt
  2. BIN  Release/Newtonsoft.Json.dll
  3. BIN  Release/Twitterizer.Data.dll
  4. BIN  Release/Twitterizer.Data.pdb
  5. +4,897 −0 Release/Twitterizer2.XML
  6. BIN  Release/Twitterizer2.dll
  7. +19 −0 Release/Twitterizer2.license.txt
  8. BIN  Release/Twitterizer2.pdb
  9. +53 −0 TestResult.xml
  10. +32 −0 Twitterizer2.TestCases/Configuration.cs
  11. +36 −0 Twitterizer2.TestCases/Properties/AssemblyInfo.cs
  12. +769 −0 Twitterizer2.TestCases/Settings.StyleCop
  13. +69 −0 Twitterizer2.TestCases/StyleCop.Cache
  14. +9 −0 Twitterizer2.TestCases/TestSettings.config
  15. +25 −0 Twitterizer2.TestCases/TwitterGeoTests.cs
  16. +26 −0 Twitterizer2.TestCases/TwitterStatusTests.cs
  17. +80 −0 Twitterizer2.TestCases/TwitterTimelineTests.cs
  18. +16 −0 Twitterizer2.TestCases/TwitterTrendTests.cs
  19. +32 −0 Twitterizer2.TestCases/TwitterUserTests.cs
  20. +78 −0 Twitterizer2.TestCases/Twitterizer2.TestCases.csproj
  21. +10 −0 Twitterizer2.TestCases/Twitterizer2.TestCases.csproj.user
  22. BIN  Twitterizer2.TestCases/bin/Debug/Newtonsoft.Json.dll
  23. +9 −0 Twitterizer2.TestCases/bin/Debug/TestSettings.config
  24. BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.TestCases.dll
  25. BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.TestCases.pdb
  26. BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.dll
  27. BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.pdb
  28. +4,893 −0 Twitterizer2.TestCases/bin/Debug/Twitterizer2.xml
  29. BIN  Twitterizer2.TestCases/bin/Debug/nunit.framework.dll
  30. +10,088 −0 Twitterizer2.TestCases/bin/Debug/nunit.framework.xml
  31. BIN  Twitterizer2.TestCases/bin/Release/Newtonsoft.Json.dll
  32. BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.TestCases.dll
  33. BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.TestCases.pdb
  34. BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.dll
  35. BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.pdb
  36. +4,767 −0 Twitterizer2.TestCases/bin/Release/Twitterizer2.xml
  37. BIN  Twitterizer2.TestCases/bin/Release/nunit.framework.dll
  38. +10,088 −0 Twitterizer2.TestCases/bin/Release/nunit.framework.xml
  39. BIN  Twitterizer2.TestCases/obj/Debug/ResolveAssemblyReference.cache
  40. +12 −0 Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.csproj.FileListAbsolute.txt
  41. BIN  Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.dll
  42. BIN  Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.pdb
  43. BIN  Twitterizer2.TestCases/obj/Release/ResolveAssemblyReference.cache
  44. +11 −0 Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.csproj.FileListAbsolute.txt
  45. BIN  Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.dll
  46. BIN  Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.pdb
  47. +17 −0 Twitterizer2.VisualState.xml
  48. +7 −0 Twitterizer2.nunit
  49. +14 −0 Twitterizer2.sln
  50. +1 −104 Twitterizer2/Core/OptionalProperties.xml
  51. +102 −0 Twitterizer2/Methods/Geo/Coordinate.cs
  52. +19 −39 Twitterizer2/Methods/Geo/ReverseGeocodeCommand.cs
  53. +4 −1 Twitterizer2/Methods/Geo/TwitterBoundingBox.cs
  54. +36 −47 Twitterizer2/Methods/{Trends/TwitterTrendTimeframe.cs → Geo/TwitterGeo.cs}
  55. +13 −1 Twitterizer2/Methods/Geo/TwitterPlace.cs
  56. +44 −0 Twitterizer2/Methods/Geo/TwitterPlaceCollection.cs
  57. +28 −0 Twitterizer2/Methods/Geo/TwitterPlaceLookupOptions.cs
  58. +0 −1  Twitterizer2/Methods/List/GetListSubscriptionsCommand.cs
  59. +1 −2  Twitterizer2/Methods/Trends/CurrentTrendsCommand.cs
  60. +5 −5 Twitterizer2/Methods/Trends/TwitterTrend.cs
  61. +120 −0 Twitterizer2/Methods/Trends/TwitterTrendCollection.cs
  62. +7 −0 Twitterizer2/Methods/Tweets/TwitterStatus.cs
  63. +1 −302 Twitterizer2/Methods/User/TwitterUser.xml
  64. +15 −0 Twitterizer2/Settings.StyleCop
  65. +4 −1 Twitterizer2/Twitterizer2.csproj
  66. +458 −164 twitterizer.FxCop
View
7 Release/Json.NET.license.txt
@@ -0,0 +1,7 @@
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
View
BIN  Release/Newtonsoft.Json.dll
Binary file not shown
View
BIN  Release/Twitterizer.Data.dll
Binary file not shown
View
BIN  Release/Twitterizer.Data.pdb
Binary file not shown
View
4,897 Release/Twitterizer2.XML
4,897 additions, 0 deletions not shown
View
BIN  Release/Twitterizer2.dll
Binary file not shown
View
19 Release/Twitterizer2.license.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2010, Patrick "Ricky" Smith
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the distribution.
+
+ - Neither the name Twitterizer nor the names of its contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
View
BIN  Release/Twitterizer2.pdb
Binary file not shown
View
53 TestResult.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!--This file represents the results of running a test suite-->
+<test-results name="C:\Projects\twitterizer\Twitterizer2.nunit" total="11" errors="0" failures="0" not-run="0" inconclusive="0" ignored="0" skipped="0" invalid="0" date="2010-05-26" time="17:47:15">
+ <environment nunit-version="2.5.2.9222" clr-version="2.0.50727.4927" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" cwd="C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug" machine-name="SMITHRICKY" user="patricks" user-domain="INFINITY" />
+ <culture-info current-culture="en-US" current-uiculture="en-US" />
+ <test-suite name="C:\Projects\twitterizer\Twitterizer2.nunit" executed="True" success="True" time="5.464" asserts="0">
+ <results>
+ <test-suite name="C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.TestCases.dll" executed="True" success="True" time="5.460" asserts="0">
+ <results>
+ <test-suite name="Twitterizer2" executed="True" success="True" time="5.458" asserts="0">
+ <results>
+ <test-suite name="TestCases" executed="True" success="True" time="5.456" asserts="0">
+ <results>
+ <test-suite name="TwitterGeoTests" executed="True" success="True" time="1.171" asserts="0">
+ <results>
+ <test-case name="Twitterizer2.TestCases.TwitterGeoTests.LookupPlaces" executed="True" success="True" time="1.166" asserts="3" />
+ </results>
+ </test-suite>
+ <test-suite name="TwitterStatusTests" executed="True" success="True" time="0.743" asserts="0">
+ <results>
+ <test-case name="Twitterizer2.TestCases.TwitterStatusTests.Show" executed="True" success="True" time="0.743" asserts="3" />
+ </results>
+ </test-suite>
+ <test-suite name="TwitterTimelineTests" executed="True" success="True" time="2.644" asserts="0">
+ <results>
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.FriendTimeline" executed="True" success="True" time="0.364" asserts="3" />
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.Mentions" executed="True" success="True" time="0.289" asserts="3" />
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.PublicTimeline" executed="True" success="True" time="0.217" asserts="3" />
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.RetweetedByMe" executed="True" success="True" time="0.709" asserts="3" />
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.RetweetedToMe" executed="True" success="True" time="0.782" asserts="3" />
+ <test-case name="Twitterizer2.TestCases.TwitterTimelineTests.RetweetsOfMe" executed="True" success="True" time="0.270" asserts="3" />
+ </results>
+ </test-suite>
+ <test-suite name="TwitterTrendTests" executed="True" success="True" time="0.236" asserts="0">
+ <results>
+ <test-case name="Twitterizer2.TestCases.TwitterTrendTests.CurrentTrends" executed="True" success="True" time="0.236" asserts="1" />
+ </results>
+ </test-suite>
+ <test-suite name="TwitterUserTests" executed="True" success="True" time="0.638" asserts="0">
+ <results>
+ <test-case name="Twitterizer2.TestCases.TwitterUserTests.Search" executed="True" success="True" time="0.294" asserts="2" />
+ <test-case name="Twitterizer2.TestCases.TwitterUserTests.Show" executed="True" success="True" time="0.341" asserts="4" />
+ </results>
+ </test-suite>
+ </results>
+ </test-suite>
+ </results>
+ </test-suite>
+ </results>
+ </test-suite>
+ </results>
+ </test-suite>
+</test-results>
View
32 Twitterizer2.TestCases/Configuration.cs
@@ -0,0 +1,32 @@
+namespace Twitterizer2.TestCases
+{
+ using Twitterizer;
+ using System.Configuration;
+using System;
+using System.IO;
+
+ public static class Configuration
+ {
+ /// <summary>
+ /// Gets the tokens.
+ /// </summary>
+ /// <returns></returns>
+ public static OAuthTokens GetTokens()
+ {
+ ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
+ {
+ ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, "TestSettings.config")
+ };
+
+ System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
+
+ OAuthTokens tokens = new OAuthTokens();
+ tokens.AccessToken = config.AppSettings.Settings["AccessToken"].Value;
+ tokens.AccessTokenSecret = config.AppSettings.Settings["AccessTokenSecret"].Value;
+ tokens.ConsumerKey = config.AppSettings.Settings["ConsumerKey"].Value;
+ tokens.ConsumerSecret = config.AppSettings.Settings["ConsumerSecret"].Value;
+
+ return tokens;
+ }
+ }
+}
View
36 Twitterizer2.TestCases/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Twitterizer2.TestCases")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Twitterizer2.TestCases")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("64d6e67a-a411-4dce-8163-55abba41bb42")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
769 Twitterizer2.TestCases/Settings.StyleCop
@@ -0,0 +1,769 @@
+<StyleCopSettings Version="4.3">
+ <GlobalSettings>
+ <StringProperty Name="MergeSettingsFiles">NoMerge</StringProperty>
+ </GlobalSettings>
+ <Parsers>
+ <Parser ParserId="Microsoft.StyleCop.CSharp.CsParser">
+ <ParserSettings>
+ <BooleanProperty Name="AnalyzeDesignerFiles">False</BooleanProperty>
+ </ParserSettings>
+ </Parser>
+ </Parsers>
+ <Analyzers>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.DocumentationRules">
+ <Rules>
+ <Rule Name="ElementsMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PartialElementsMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="EnumerationItemsMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationMustContainValidXml">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationMustHaveSummary">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PartialElementDocumentationMustHaveSummary">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationMustHaveSummaryText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PartialElementDocumentationMustHaveSummaryText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationMustNotHaveDefaultSummary">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementParametersMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementParameterDocumentationMustMatchElementParameters">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementParameterDocumentationMustDeclareParameterName">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementParameterDocumentationMustHaveText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementReturnValueMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementReturnValueDocumentationMustHaveText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="VoidReturnValueMustNotBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="GenericTypeParametersMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="GenericTypeParametersMustBeDocumentedPartialClass">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="GenericTypeParameterDocumentationMustMatchTypeParameters">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="GenericTypeParameterDocumentationMustDeclareParameterName">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="GenericTypeParameterDocumentationMustHaveText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PropertySummaryDocumentationMustMatchAccessors">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationMustNotBeCopiedAndPasted">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SingleLineCommentsMustNotUseDocumentationStyleSlashes">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationTextMustNotBeEmpty">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationTextMustContainWhitespace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationMustMeetCharacterPercentage">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationTextMustMeetMinimumCharacterLength">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ConstructorSummaryDocumentationMustBeginWithStandardText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DestructorSummaryDocumentationMustBeginWithStandardText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationHeadersMustNotContainBlankLines">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="IncludedDocumentationXPathDoesNotExist">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="IncludeNodeDoesNotContainValidFileAndPath">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileMustHaveHeader">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileHeaderMustShowCopyright">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileHeaderMustHaveCopyrightText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileHeaderMustContainFileName">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileHeaderFileNameDocumentationMustMatchFileName">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileHeaderMustHaveValidCompanyText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.LayoutRules">
+ <Rules>
+ <Rule Name="CurlyBracketsForMultiLineStatementsMustNotShareLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="StatementMustNotBeOnSingleLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementMustNotBeOnSingleLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CurlyBracketsMustNotBeOmitted">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="AllAccessorsMustBeMultiLineOrSingleLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningCurlyBracketsMustNotBeFollowedByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationHeadersMustNotBeFollowedByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeMustNotContainMultipleBlankLinesInARow">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingCurlyBracketsMustNotBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningCurlyBracketsMustNotBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ChainedStatementBlocksMustNotBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="WhileDoFooterMustNotBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SingleLineCommentsMustNotBeFollowedByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingCurlyBracketMustBeFollowedByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementDocumentationHeaderMustBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SingleLineCommentMustBePrecededByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementsMustBeSeparatedByBlankLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.MaintainabilityRules">
+ <Rules>
+ <Rule Name="AccessModifierMustBeDeclared">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FieldsMustBePrivate">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeAnalysisSuppressionMustHaveJustification">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DebugAssertMustProvideMessageText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DebugFailMustProvideMessageText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileMayOnlyContainASingleClass">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FileMayOnlyContainASingleNamespace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="StatementMustNotUseUnnecessaryParenthesis">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ArithmeticExpressionsMustDeclarePrecedence">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ConditionalExpressionsMustDeclarePrecedence">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="RemoveDelegateParenthesisWhenPossible">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="RemoveUnnecessaryCode">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.NamingRules">
+ <Rules>
+ <Rule Name="ElementMustBeginWithUpperCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementMustBeginWithLowerCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="InterfaceNamesMustBeginWithI">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ConstFieldNamesMustBeginWithUpperCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FieldNamesMustNotUseHungarianNotation">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FieldNamesMustBeginWithLowerCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="AccessibleFieldsMustBeginWithUpperCaseLetter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="VariableNamesMustNotBePrefixed">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FieldNamesMustNotBeginWithUnderscore">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="FieldNamesMustNotContainUnderscore">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.OrderingRules">
+ <Rules>
+ <Rule Name="UsingDirectivesMustBePlacedWithinNamespace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementsMustAppearInTheCorrectOrder">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ElementsMustBeOrderedByAccess">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ConstantsMustAppearBeforeFields">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="StaticElementsMustAppearBeforeInstanceElements">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DeclarationKeywordsMustFollowOrder">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ProtectedMustComeBeforeInternal">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PropertyAccessorsMustFollowOrder">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="EventAccessorsMustFollowOrder">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="UsingAliasDirectivesMustBePlacedAfterOtherUsingDirectives">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="UsingDirectivesMustBeOrderedAlphabeticallyByNamespace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="UsingAliasDirectivesMustBeOrderedAlphabeticallyByAliasName">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.ReadabilityRules">
+ <Rules>
+ <Rule Name="CommentsMustContainText">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DoNotPrefixCallsWithBaseUnlessLocalImplementationExists">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PrefixLocalCallsWithThis">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningParenthesisMustBeOnDeclarationLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingParenthesisMustBeOnLineOfLastParameter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingParenthesisMustBeOnLineOfOpeningParenthesis">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CommaMustBeOnSameLineAsPreviousParameter">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ParameterListMustFollowDeclaration">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ParameterMustFollowComma">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SplitParametersMustStartOnLineAfterDeclaration">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ParametersMustBeOnSameLineOrSeparateLines">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ParameterMustNotSpanMultipleLines">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="QueryClauseMustFollowPreviousClause">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="QueryClausesMustBeOnSeparateLinesOrAllOnOneLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="QueryClauseMustBeginOnNewLineWhenPreviousClauseSpansMultipleLines">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="QueryClausesSpanningMultipleLinesMustBeginOnOwnLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DoNotPlaceRegionsWithinElements">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeMustNotContainEmptyStatements">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeMustNotContainMultipleStatementsOnOneLine">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="BlockStatementsMustNotContainEmbeddedComments">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="BlockStatementsMustNotContainEmbeddedRegions">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="UseStringEmptyForEmptyStrings">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="UseBuiltInTypeAlias">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.SpacingRules">
+ <Rules>
+ <Rule Name="KeywordsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CommasMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SemicolonsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SymbolsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DocumentationLinesMustBeginWithSingleSpace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="SingleLineCommentsMustBeginWithSingleSpace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PreprocessorKeywordsMustNotBePrecededBySpace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OperatorKeywordMustBeFollowedBySpace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningParenthesisMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingParenthesisMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningSquareBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingSquareBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningCurlyBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingCurlyBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningGenericBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingGenericBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="OpeningAttributeBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ClosingAttributeBracketsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="NullableTypeSymbolsMustNotBePrecededBySpace">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="MemberAccessSymbolsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="IncrementDecrementSymbolsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="NegativeSignsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="PositiveSignsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="DereferenceAndAccessOfSymbolsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="ColonsMustBeSpacedCorrectly">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeMustNotContainMultipleWhitespaceInARow">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="CodeMustNotContainSpaceAfterNewKeywordInImplicitlyTypedArrayAllocation">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ <Rule Name="TabsMustNotBeUsed">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">False</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ </Analyzers>
+</StyleCopSettings>
View
69 Twitterizer2.TestCases/StyleCop.Cache
@@ -0,0 +1,69 @@
+<stylecopresultscache>
+ <version>10</version>
+ <project key="-134457980">
+ <configuration>DEBUG;TRACE</configuration>
+ </project>
+ <sourcecode name="Configuration.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 11:02:37</timestamp>
+ <milliseconds>286</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="TwitterStatusTests.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 14:35:45</timestamp>
+ <milliseconds>806</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="AssemblyInfo.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 10:19:35</timestamp>
+ <milliseconds>686</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="TwitterGeoTests.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 17:41:52</timestamp>
+ <milliseconds>664</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="TwitterTimelineTests.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 12:57:40</timestamp>
+ <milliseconds>544</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="TwitterUserTests.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 11:17:19</timestamp>
+ <milliseconds>988</milliseconds>
+ <violations />
+ </sourcecode>
+ <sourcecode name="TwitterTrendTests.cs" parser="Microsoft.StyleCop.CSharp.CsParser">
+ <settings>
+ <timestamp>05/26/2010 17:42:19</timestamp>
+ <milliseconds>782</milliseconds>
+ </settings>
+ <timestamp>05/26/2010 16:14:40</timestamp>
+ <milliseconds>527</milliseconds>
+ <violations />
+ </sourcecode>
+</stylecopresultscache>
View
9 Twitterizer2.TestCases/TestSettings.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <appSettings>
+ <add key="AccessToken" value="14725805-ZzrL493j3zQqqHbhUHbGL69doznRdP1uS6Pr1oHOQ"/>
+ <add key="AccessTokenSecret" value="6ykvXwX7U8bpzHqwoIaPnRBlNxPNg7vVslLpTQbReZ0"/>
+ <add key="ConsumerKey" value="CAHbFRcmBGzifN2M9gusrw"/>
+ <add key="ConsumerSecret" value="Zplfb3NmVpDdsXY0GS6btzmWymV3ZmkmoHuk5nYhUN8"/>
+ </appSettings>
+</configuration>
View
25 Twitterizer2.TestCases/TwitterGeoTests.cs
@@ -0,0 +1,25 @@
+namespace Twitterizer2.TestCases
+{
+ using NUnit.Framework;
+ using Twitterizer;
+
+ [TestFixture]
+ public class TwitterGeoTests
+ {
+ [Test]
+ public static void LookupPlaces()
+ {
+ TwitterPlaceLookupOptions options = new TwitterPlaceLookupOptions()
+ {
+ Granularity = "city",
+ MaxResults = 2
+ };
+
+ TwitterPlaceCollection places = TwitterPlace.Lookup(30.475012, -84.35509, options);
+
+ Assert.IsNotNull(places);
+ Assert.IsNotEmpty(places);
+ Assert.That(places.Count == 2);
+ }
+ }
+}
View
26 Twitterizer2.TestCases/TwitterStatusTests.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Twitterizer;
+
+namespace Twitterizer2.TestCases
+{
+ [TestFixture]
+ public static class TwitterStatusTests
+ {
+ [Test]
+ public static void Show()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatus missingStatus = TwitterStatus.Show(tokens, 1);
+ Assert.IsNull(missingStatus);
+
+ TwitterStatus status = TwitterStatus.Show(tokens, 14772516348);
+ Assert.IsNotNull(status);
+ Assert.IsNotNullOrEmpty(status.Text);
+ }
+ }
+}
View
80 Twitterizer2.TestCases/TwitterTimelineTests.cs
@@ -0,0 +1,80 @@
+namespace Twitterizer2.TestCases
+{
+ using Twitterizer;
+ using NUnit.Framework;
+ using System.Globalization;
+
+ [TestFixture]
+ public static class TwitterTimelineTests
+ {
+ [Test]
+ public static void PublicTimeline()
+ {
+ TwitterStatusCollection timeline = TwitterTimeline.PublicTimeline();
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+
+ [Test]
+ public static void FriendTimeline()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatusCollection timeline = TwitterTimeline.FriendTimeline(tokens);
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+
+ [Test]
+ public static void RetweetsOfMe()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatusCollection timeline = TwitterTimeline.RetweetsOfMe(tokens);
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+
+ [Test]
+ public static void RetweetedByMe()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatusCollection timeline = TwitterTimeline.RetweetedByMe(tokens);
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+
+ [Test]
+ public static void RetweetedToMe()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatusCollection timeline = TwitterTimeline.RetweetedToMe(tokens);
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+
+ [Test]
+ public static void Mentions()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterStatusCollection timeline = TwitterTimeline.Mentions(tokens);
+ Assert.IsNotNull(timeline);
+ Assert.IsNotEmpty(timeline);
+
+ Assert.That(timeline.Count > 0 && timeline.Count <= 20, "Timeline should contain between 0 and 20 items.");
+ }
+ }
+}
View
16 Twitterizer2.TestCases/TwitterTrendTests.cs
@@ -0,0 +1,16 @@
+namespace Twitterizer2.TestCases
+{
+ using Twitterizer;
+ using NUnit.Framework;
+
+ [TestFixture]
+ public static class TwitterTrendTests
+ {
+ [Test]
+ public static void CurrentTrends()
+ {
+ TwitterTrendCollection trends = TwitterTrend.Current();
+ Assert.IsNotNull(trends);
+ }
+ }
+}
View
32 Twitterizer2.TestCases/TwitterUserTests.cs
@@ -0,0 +1,32 @@
+namespace Twitterizer2.TestCases
+{
+ using NUnit.Framework;
+ using Twitterizer;
+
+ [TestFixture]
+ public class TwitterUserTests
+ {
+ [Test]
+ public static void Show()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterUser user = TwitterUser.Show(tokens, "twit_er_izer");
+ Assert.IsNotNull(user);
+ Assert.That(!string.IsNullOrEmpty(user.ScreenName));
+
+ Assert.IsNotNull(user.Status);
+ Assert.That(!string.IsNullOrEmpty(user.Status.Text));
+ }
+
+ [Test]
+ public static void Search()
+ {
+ OAuthTokens tokens = Configuration.GetTokens();
+
+ TwitterUserCollection results = TwitterUser.Search(tokens, "twit_er_izer");
+ Assert.IsNotNull(results);
+ Assert.IsNotEmpty(results);
+ }
+ }
+}
View
78 Twitterizer2.TestCases/Twitterizer2.TestCases.csproj
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{488BB0D8-2A49-4074-BE6F-1100AF6E5D62}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Twitterizer2.TestCases</RootNamespace>
+ <AssemblyName>Twitterizer2.TestCases</AssemblyName>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkSubset>Full</TargetFrameworkSubset>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="nunit.framework, Version=2.5.2.9222, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL" />
+ <Reference Include="System" />
+ <Reference Include="System.configuration" />
+ <Reference Include="System.Core">
+ <RequiredTargetFramework>3.5</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="System.Xml.Linq">
+ <RequiredTargetFramework>3.5</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="System.Data.DataSetExtensions">
+ <RequiredTargetFramework>3.5</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Configuration.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TwitterGeoTests.cs" />
+ <Compile Include="TwitterStatusTests.cs" />
+ <Compile Include="TwitterTimelineTests.cs" />
+ <Compile Include="TwitterTrendTests.cs" />
+ <Compile Include="TwitterUserTests.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Twitterizer2\Twitterizer2.csproj">
+ <Project>{2FDC3492-6B9E-4771-9755-7892C9CB1E96}</Project>
+ <Name>Twitterizer2</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="TestSettings.config">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
View
10 Twitterizer2.TestCases/Twitterizer2.TestCases.csproj.user
@@ -0,0 +1,10 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <StartAction>Program</StartAction>
+ <StartProgram>C:\Program Files (x86)\NUnit 2.5.2\bin\net-2.0\nunit-x86.exe</StartProgram>
+ <StartArguments>C:\Projects\twitterizer\Twitterizer2.nunit</StartArguments>
+ </PropertyGroup>
+ <PropertyGroup>
+ <ProjectView>ProjectFiles</ProjectView>
+ </PropertyGroup>
+</Project>
View
BIN  Twitterizer2.TestCases/bin/Debug/Newtonsoft.Json.dll
Binary file not shown
View
9 Twitterizer2.TestCases/bin/Debug/TestSettings.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <appSettings>
+ <add key="AccessToken" value="14725805-ZzrL493j3zQqqHbhUHbGL69doznRdP1uS6Pr1oHOQ"/>
+ <add key="AccessTokenSecret" value="6ykvXwX7U8bpzHqwoIaPnRBlNxPNg7vVslLpTQbReZ0"/>
+ <add key="ConsumerKey" value="CAHbFRcmBGzifN2M9gusrw"/>
+ <add key="ConsumerSecret" value="Zplfb3NmVpDdsXY0GS6btzmWymV3ZmkmoHuk5nYhUN8"/>
+ </appSettings>
+</configuration>
View
BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.TestCases.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.TestCases.pdb
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Debug/Twitterizer2.pdb
Binary file not shown
View
4,893 Twitterizer2.TestCases/bin/Debug/Twitterizer2.xml
4,893 additions, 0 deletions not shown
View
BIN  Twitterizer2.TestCases/bin/Debug/nunit.framework.dll
Binary file not shown
View
10,088 Twitterizer2.TestCases/bin/Debug/nunit.framework.xml
10,088 additions, 0 deletions not shown
View
BIN  Twitterizer2.TestCases/bin/Release/Newtonsoft.Json.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.TestCases.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.TestCases.pdb
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/bin/Release/Twitterizer2.pdb
Binary file not shown
View
4,767 Twitterizer2.TestCases/bin/Release/Twitterizer2.xml
4,767 additions, 0 deletions not shown
View
BIN  Twitterizer2.TestCases/bin/Release/nunit.framework.dll
Binary file not shown
View
10,088 Twitterizer2.TestCases/bin/Release/nunit.framework.xml
10,088 additions, 0 deletions not shown
View
BIN  Twitterizer2.TestCases/obj/Debug/ResolveAssemblyReference.cache
Binary file not shown
View
12 Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.csproj.FileListAbsolute.txt
@@ -0,0 +1,12 @@
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.TestCases.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.TestCases.pdb
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\nunit.framework.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Newtonsoft.Json.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.pdb
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.xml
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\nunit.framework.xml
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Debug\ResolveAssemblyReference.cache
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Debug\Twitterizer2.TestCases.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Debug\Twitterizer2.TestCases.pdb
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\TestSettings.config
View
BIN  Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/obj/Debug/Twitterizer2.TestCases.pdb
Binary file not shown
View
BIN  Twitterizer2.TestCases/obj/Release/ResolveAssemblyReference.cache
Binary file not shown
View
11 Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.csproj.FileListAbsolute.txt
@@ -0,0 +1,11 @@
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Twitterizer2.TestCases.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Twitterizer2.TestCases.pdb
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\nunit.framework.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Twitterizer2.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Newtonsoft.Json.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Twitterizer2.pdb
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\Twitterizer2.xml
+C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Release\nunit.framework.xml
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Release\ResolveAssemblyReference.cache
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Release\Twitterizer2.TestCases.dll
+C:\Projects\twitterizer\Twitterizer2.TestCases\obj\Release\Twitterizer2.TestCases.pdb
View
BIN  Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.dll
Binary file not shown
View
BIN  Twitterizer2.TestCases/obj/Release/Twitterizer2.TestCases.pdb
Binary file not shown
View
17 Twitterizer2.VisualState.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VisualState xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ShowCheckBoxes="false">
+ <TopNode>[0-1000]C:\Projects\twitterizer\Twitterizer2.nunit</TopNode>
+ <SelectedNode>[0-1019]Twitterizer2.TestCases</SelectedNode>
+ <ExcludeCategories>false</ExcludeCategories>
+ <Nodes>
+ <Node UniqueName="[0-1000]C:\Projects\twitterizer\Twitterizer2.nunit" Expanded="true" />
+ <Node UniqueName="[0-1017]C:\Projects\twitterizer\Twitterizer2.TestCases\bin\Debug\Twitterizer2.TestCases.dll" Expanded="true" />
+ <Node UniqueName="[0-1018]Twitterizer2" Expanded="true" />
+ <Node UniqueName="[0-1019]Twitterizer2.TestCases" Expanded="true" />
+ <Node UniqueName="[0-1015]Twitterizer2.TestCases.TwitterGeoTests" Expanded="true" />
+ <Node UniqueName="[0-1004]Twitterizer2.TestCases.TwitterStatusTests" Expanded="true" />
+ <Node UniqueName="[0-1006]Twitterizer2.TestCases.TwitterTimelineTests" Expanded="true" />
+ <Node UniqueName="[0-1013]Twitterizer2.TestCases.TwitterTrendTests" Expanded="true" />
+ <Node UniqueName="[0-1001]Twitterizer2.TestCases.TwitterUserTests" Expanded="true" />
+ </Nodes>
+</VisualState>
View
7 Twitterizer2.nunit
@@ -0,0 +1,7 @@
+<NUnitProject>
+ <Settings activeconfig="Debug" />
+ <Config name="Debug" binpathtype="Auto">
+ <assembly path="Twitterizer2.TestCases\bin\Debug\Twitterizer2.TestCases.dll" />
+ </Config>
+ <Config name="Release" binpathtype="Auto" />
+</NUnitProject>
View
14 Twitterizer2.sln
@@ -19,6 +19,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentat
XML Documentation\WelcomeTopic.aml = XML Documentation\WelcomeTopic.aml
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Twitterizer2.TestCases", "Twitterizer2.TestCases\Twitterizer2.TestCases.csproj", "{488BB0D8-2A49-4074-BE6F-1100AF6E5D62}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -56,6 +58,18 @@ Global
{4ACED651-D888-4E46-A38B-13291C00FABF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4ACED651-D888-4E46-A38B-13291C00FABF}.Release|Any CPU.Build.0 = Release|Any CPU
{4ACED651-D888-4E46-A38B-13291C00FABF}.Release|x86-Only.ActiveCfg = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Debug|x86-Only.ActiveCfg = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Debug|Any CPU.Build.0 = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Debug|x86-Only.ActiveCfg = Debug|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Release|Any CPU.ActiveCfg = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Release|Any CPU.Build.0 = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Mono-Release|x86-Only.ActiveCfg = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Release|Any CPU.Build.0 = Release|Any CPU
+ {488BB0D8-2A49-4074-BE6F-1100AF6E5D62}.Release|x86-Only.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
View
105 Twitterizer2/Core/OptionalProperties.xml
@@ -1,4 +1,3 @@
-<<<<<<< .mine
<?xml version="1.0" encoding="utf-8"?>
<OptionalProperties>
<OptionalProperties>
@@ -98,106 +97,4 @@
</value>
</Property>
-</OptionalProperties>=======
-<?xml version="1.0" encoding="utf-8"?>
-<OptionalProperties>
- <OptionalProperties>
- <summary>
- Provides a base class for method specific optional parameters, as well as properties for providing configuration settings at run time.
- </summary>
- </OptionalProperties>
-
- <Property name="UseSSL">
- <summary>
- Allows modification of the API endpoint addresses to enable SSL communication.
- </summary>
- <remarks>
- The default value can be set at an application level by adding a <c>Twitterizer2.EnableSSL</c> application setting with the value <c>true</c>.
- For example:
- <code lang="xml">
- <![CDATA[<configuration>
- <appSettings>
- <!-- Enable use of SSL to reach Twitter -->
- <add key="Twitterizer2.EnableSSL" value="true" />
- </appSettings>
-<configuration>]]>
- </code>
- </remarks>
- <value>
- The current configured value. <c>true</c> if enabled, otherwise <c>false</c>. Default: <c>false</c>
- </value>
- </Property>
-
- <Property name="APIBaseAddress">
- <summary>
- Allows configuration of the base address for API method requests for support for 3rd party 'twitter-like' APIs.
- </summary>
- <remarks>
- The default value can be set at an application level by adding a <c>Twitterizer2.APIBaseAddress</c> application setting with the base address as the value.
- For example:
- <code lang="xml">
- <![CDATA[<configuration>
- <appSettings>
- <!-- Set or change this value to interface with a non-twitter API (like Wordpress) -->
- <add key="Twitterizer2.APIBaseAddress" value="http://api.twitter.com/1/" />
- </appSettings>
-<configuration>]]>
- </code>
- </remarks>
- <value>The API end point base address. Default: "http://api.twitter.com/1/"</value>
- </Property>
-
- <Property name="CacheOutput">
- <summary>
- Allows run time enabling of API output caching.
- </summary>
- <remarks>
- The default value can be set at an application level by adding a <c>Twitterizer2.EnableCaching</c> application setting with value <c>true</c>.
- For example:
- <code lang="xml">
- <![CDATA[<configuration>
- <appSettings>
- <!-- Enable caching results -->
- <add key="Twitterizer2.EnableCaching" value="true" />
- </appSettings>
-<configuration>]]>
- </code>
- </remarks>
- <value>
- The currently configured value. <c>true</c> if enabled, otherwise <c>false</c>. Default: <c>false</c>
- </value>
- <seealso cref="Twitterizer.OptionalProperties.CacheOutput" />
- </Property>
-
- <Property name="CacheTimespan">
- <summary>
- Allows configuration of the sliding expiration timespan for output caching.
- </summary>
- <remarks>
- The default value can be set at an application level by adding a <c>Twitterizer2.CacheTimeout</c> application setting with value equal to the number of seconds of the duration.
- For example:
- <code lang="xml">
- <![CDATA[<configuration>
- <appSettings>
- <!-- Sets the number of seconds to cache results (default is 5 minutes) -->
- <add key="Twitterizer2.CacheTimeout" value="300"/>
- </appSettings>
-<configuration>]]>
- </code>
- </remarks>
- <value>
- The duration that API output should be cached, on a sliding expiration, once enabled. Default: 5 minutes
- </value>
- <seealso cref="Twitterizer.OptionalProperties.CacheOutput" />
- </Property>
-
- <Property name="Proxy">
- <summary>
- Allows overriding of the default proxy settings for API call requests.
- </summary>
- <value>
- The supplied <see cref="System.Net.WebProxy" />, or <c>null</c>.
- </value>
- </Property>
-
-</OptionalProperties>>>>>>>> .r262
+</OptionalProperties>
View
102 Twitterizer2/Methods/Geo/Coordinate.cs
@@ -0,0 +1,102 @@
+namespace Twitterizer
+{
+ using System;
+ using System.Collections.ObjectModel;
+ using System.Linq;
+ using Newtonsoft.Json;
+
+ /// <summary>
+ /// Represents a single point on planet earth.
+ /// </summary>
+ public class Coordinate
+ {
+ /// <summary>
+ /// Gets or sets the latitude.
+ /// </summary>
+ /// <value>The latitude.</value>
+ public double Latitude { get; set; }
+
+ /// <summary>
+ /// Gets or sets the longitude.
+ /// </summary>
+ /// <value>The longitude.</value>
+ public double Longitude { get; set; }
+
+ /// <summary>
+ /// Reads a json array of coordinates and converts it into a collection of coordinate objects.
+ /// </summary>
+ internal class Converter : JsonConverter
+ {
+ /// <summary>
+ /// Determines whether this instance can convert the specified object type.
+ /// </summary>
+ /// <param name="objectType">Type of the object.</param>
+ /// <returns>
+ /// <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+ /// </returns>
+ public override bool CanConvert(Type objectType)
+ {
+ return objectType == typeof(Collection<Coordinate>);
+ }
+
+ /// <summary>
+ /// Reads the json.
+ /// </summary>
+ /// <param name="reader">The reader.</param>
+ /// <param name="objectType">Type of the object.</param>
+ /// <param name="existingValue">The existing value.</param>
+ /// <param name="serializer">The serializer.</param>
+ /// <returns></returns>
+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+ {
+ Collection<Coordinate> result = existingValue as Collection<Coordinate>;
+
+ if (result == null)
+ result = new Collection<Coordinate>();
+
+ int startDepth = reader.Depth;
+
+ if (reader.TokenType != JsonToken.StartArray)
+ {
+ return null;
+ }
+
+ int depth = reader.Depth + 1;
+ double count = 1;
+
+ while (reader.Read() && reader.Depth >= startDepth)
+ {
+ if (new[] { JsonToken.StartArray, JsonToken.EndArray }.Contains(reader.TokenType))
+ continue;
+
+ int itemIndex = Convert.ToInt32(Math.Ceiling(count / 2) - 1);
+
+ if (count % 2 > 0)
+ {
+ result.Add(new Coordinate());
+ result[itemIndex].Latitude = (double)reader.Value;
+ }
+ else
+ {
+ result[itemIndex].Longitude = (double)reader.Value;
+ }
+
+ count++;
+ }
+
+ return result;
+ }
+
+ /// <summary>
+ /// Writes the json.
+ /// </summary>
+ /// <param name="writer">The writer.</param>
+ /// <param name="value">The value.</param>
+ /// <param name="serializer">The serializer.</param>
+ public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
View
58 Twitterizer2/Methods/Geo/ReverseGeocodeCommand.cs
@@ -39,6 +39,7 @@ namespace Twitterizer.Commands
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Twitterizer.Core;
+ using System.Collections.Generic;
/// <summary>
/// The reverse geocode command class. Performs a reverse geocode lookup.
@@ -51,7 +52,7 @@ internal class ReverseGeocodeCommand : TwitterCommand<TwitterPlaceCollection>
/// <param name="latitude">The latitude.</param>
/// <param name="longitude">The longitude.</param>
/// <param name="options">The options.</param>
- public ReverseGeocodeCommand(double latitude, double longitude, OptionalProperties options)
+ public ReverseGeocodeCommand(double latitude, double longitude, TwitterPlaceLookupOptions options)
: base(HTTPVerb.GET, "geo/reverse_geocode.json", null, options)
{
this.Latitude = latitude;
@@ -75,50 +76,29 @@ public ReverseGeocodeCommand(double latitude, double longitude, OptionalProperti
/// </summary>
public override void Init()
{
- this.DeserializationHandler = Deserialize;
- this.RequestParameters.Add("lat", this.Latitude.ToString(CultureInfo.InvariantCulture));
- this.RequestParameters.Add("long", this.Longitude.ToString(CultureInfo.InvariantCulture));
- }
-
- /// <summary>
- /// Deserializes the place element value.
- /// </summary>
- /// <param name="value">The value.</param>
- /// <returns>A <see cref="TwitterPlaceCollection"/> object or null.</returns>
- private static TwitterPlaceCollection Deserialize(JObject value)
- {
- TwitterPlaceCollection result = new TwitterPlaceCollection();
-
- foreach (JObject item in (JArray)value.SelectToken("result.places"))
- {
- TwitterPlace place = JsonConvert.DeserializeObject<TwitterPlace>(item.ToString());
- JToken boundingBox = item.SelectToken("bounding_box");
-
- if (boundingBox == null || boundingBox.Type == JTokenType.Null)
- continue;
+ NumberFormatInfo nfi = CultureInfo.InvariantCulture.NumberFormat;
- place.BoundingBox = new TwitterBoundingBox();
- place.BoundingBox.Type = (string)((JValue)boundingBox.SelectToken("type")).Value;
- place.BoundingBox.Coordinates = new double[0, 2];
+ this.RequestParameters.Add("lat", this.Latitude.ToString(nfi));
+ this.RequestParameters.Add("long", this.Longitude.ToString(nfi));
- foreach (JToken coordinate in (JArray)boundingBox.SelectToken("coordinates").First)
- {
- int rowNumber = place.BoundingBox.Coordinates.GetUpperBound(0) + 1;
+ TwitterPlaceLookupOptions options = this.OptionalProperties as TwitterPlaceLookupOptions;
+ if (options == null)
+ return;
- double[,] coordinateArray = new double[rowNumber + 1, 2];
-
- Array.Copy(place.BoundingBox.Coordinates, coordinateArray, place.BoundingBox.Coordinates.Length);
-
- coordinateArray[rowNumber, 0] = (double)((JValue)coordinate.First).Value;
- coordinateArray[rowNumber, 1] = (double)((JValue)coordinate.Last).Value;
-
- place.BoundingBox.Coordinates = coordinateArray;
- }
+ if (!string.IsNullOrEmpty(options.Accuracy))
+ {
+ this.RequestParameters.Add("accuracy", options.Accuracy);
+ }
- result.Add(place);
+ if (!string.IsNullOrEmpty(options.Granularity))
+ {
+ this.RequestParameters.Add("granularity", options.Granularity);
}
- return result;
+ if (options.MaxResults != null)
+ {
+ this.RequestParameters.Add("max_results", options.MaxResults.Value.ToString(nfi));
+ }
}
}
}
View
5 Twitterizer2/Methods/Geo/TwitterBoundingBox.cs
@@ -34,6 +34,7 @@
namespace Twitterizer
{
using System;
+ using System.Collections.ObjectModel;
using Newtonsoft.Json;
using Twitterizer.Core;
@@ -55,6 +56,8 @@ public class TwitterBoundingBox : TwitterObject
/// Gets or sets the coordinates.
/// </summary>
/// <value>The coordinates.</value>
- public double[,] Coordinates { get; set; }
+ [JsonProperty(PropertyName = "coordinates")]
+ [JsonConverter(typeof(Coordinate.Converter))]
+ public Collection<Coordinate> Coordinates { get; set; }
}
}
View
83 Twitterizer2/Methods/Trends/TwitterTrendTimeframe.cs → Twitterizer2/Methods/Geo/TwitterGeo.cs
@@ -1,6 +1,6 @@
//-----------------------------------------------------------------------
-// <copyright file="TwitterTrendTimeframe.cs" company="Patrick 'Ricky' Smith">
-// This file is part of the Twitterizer library (http://www.twitterizer.net/)
+// <copyright file="TwitterGeo.cs" company="Patrick 'Ricky' Smith">
+// This file is part of the Twitterizer library (http://www.twitterizer.net)
//
// Copyright (c) 2010, Patrick "Ricky" Smith (ricky@digitally-born.com)
// All rights reserved.
@@ -29,71 +29,60 @@
// POSSIBILITY OF SUCH DAMAGE.
// </copyright>
// <author>Ricky Smith</author>
-// <summary>The twitter trend timeframe class</summary>
+// <summary>The geo location class.</summary>
//-----------------------------------------------------------------------
namespace Twitterizer
{
using System;
+ using Newtonsoft.Json;
using System.Collections.ObjectModel;
- using Newtonsoft.Json.Linq;
- using Twitterizer.Core;
/// <summary>
- /// The Twitter trend timeframe class.
+ /// Lists the possible types of geographic boundaries.
/// </summary>
- public class TwitterTrendTimeframe : TwitterObject
+ public enum TwitterGeoShapeType
{
/// <summary>
- /// Gets or sets the effective date.
+ /// A single point. Expect one coordinate.
/// </summary>
- /// <value>The effective date.</value>
- public DateTime EffectiveDate { get; set; }
+ Point,
/// <summary>
- /// Gets or sets the trends.
+ /// A line, or multiple lines joined end-to-end.
/// </summary>
- /// <value>The trends.</value>
- public Collection<TwitterTrend> Trends { get; set; }
+ LineString,
/// <summary>
- /// Deserializes the json.
+ /// A polygon
/// </summary>
- /// <param name="value">The value.</param>
- /// <returns>A <see cref="TwitterTrendTimeframe"/> object.</returns>
- internal static TwitterTrendTimeframe DeserializeJson(Newtonsoft.Json.Linq.JObject value)
- {
- TwitterTrendTimeframe result = new TwitterTrendTimeframe();
- result.EffectiveDate = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds((int)value.SelectToken("as_of"));
- result.Trends = new Collection<TwitterTrend>();
+ Polygon,
- JArray trendArray = (JArray)value.SelectToken(string.Format("trends.{0:yyyy-MM-dd HH:mm:ss}", result.EffectiveDate));
-
- foreach (JObject item in trendArray)
- {
- TwitterTrend newTrend = new TwitterTrend();
-
- JToken token = null;
-
- if (item.TryGetValue("query", out token))
- {
- newTrend.SearchQuery = token.Value<string>();
- }
-
- if (item.TryGetValue("name", out token))
- {
- newTrend.Name = token.Value<string>();
- }
-
- if (item.TryGetValue("url", out token))
- {
- newTrend.Address = token.Value<string>();
- }
+ /// <summary>
+ /// A circle represented by a single point (the center) and the radius
+ /// </summary>
+ CircleByCenterPoint
+ }
- result.Trends.Add(newTrend);
- }
+ /// <summary>
+ /// Represents a geological area
+ /// </summary>
+ [Serializable]
+ public class TwitterGeo
+ {
+ /// <summary>
+ /// Gets or sets the type of the shape.
+ /// </summary>
+ /// <value>The type of the shape.</value>
+ [JsonProperty(PropertyName = "type")]
+ public TwitterGeoShapeType ShapeType { get; set; }
- return result;
- }
+ /// <summary>
+ /// Gets or sets the coordinates.
+ /// </summary>
+ /// <value>The coordinates.</value>
+ [JsonProperty(PropertyName = "coordinates")]
+ [JsonConverter(typeof(Coordinate.Converter))]
+ public Collection<Coordinate> Coordinates { get; set; }
}
}
View
14 Twitterizer2/Methods/Geo/TwitterPlace.cs
@@ -43,6 +43,7 @@ namespace Twitterizer
/// </summary>
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
[Serializable]
+ [System.Diagnostics.DebuggerDisplay("{FullName} ({Id})")]
public sealed class TwitterPlace : TwitterObject
{
/// <summary>
@@ -115,11 +116,22 @@ public sealed class TwitterPlace : TwitterObject
/// <param name="longitude">The longitude.</param>
/// <param name="options">The options.</param>
/// <returns>A <see cref="TwitterPlaceCollection"/> object or null.</returns>
- public static TwitterPlaceCollection Lookup(double latitude, double longitude, OptionalProperties options)
+ public static TwitterPlaceCollection Lookup(double latitude, double longitude, TwitterPlaceLookupOptions options)
{
Commands.ReverseGeocodeCommand command = new Twitterizer.Commands.ReverseGeocodeCommand(latitude, longitude, options);
return CommandPerformer<TwitterPlaceCollection>.PerformAction(command);
}
+
+ /// <summary>
+ /// Lookups the specified latitude.
+ /// </summary>
+ /// <param name="latitude">The latitude.</param>
+ /// <param name="longitude">The longitude.</param>
+ /// <returns></returns>
+ public static TwitterPlaceCollection Lookup(double latitude, double longitude)
+ {
+ return Lookup(latitude, longitude, null);
+ }
}
}
View
44 Twitterizer2/Methods/Geo/TwitterPlaceCollection.cs
@@ -35,13 +35,57 @@
namespace Twitterizer
{
using System;
+ using Newtonsoft.Json;
using Twitterizer.Core;
+ using Newtonsoft.Json.Linq;
/// <summary>
/// The Twitter Place Collection class. A collection of <see cref="TwitterPlace"/> objects.
/// </summary>
[Serializable]
+ [JsonConverter(typeof(TwitterPlaceCollection.Converter))]
+ [JsonObject]
public class TwitterPlaceCollection : TwitterCollection<TwitterPlace>
{
+ internal class Converter : JsonConverter
+ {
+ public override bool CanConvert(Type objectType)
+ {
+ return objectType == typeof(TwitterPlaceCollection);
+ }
+
+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+ {
+ TwitterPlaceCollection result = new TwitterPlaceCollection();
+
+ reader.Read();
+ reader.Read();
+
+ bool hasReachedTheQuery = false;
+
+ while (reader.Read())
+ {
+ if (reader.TokenType == JsonToken.PropertyName && (string)reader.Value == "query")
+ {
+ hasReachedTheQuery = true;
+ }
+
+ if (hasReachedTheQuery)
+ continue;
+
+ if (reader.TokenType == JsonToken.StartObject)
+ {
+ result.Add(serializer.Deserialize<TwitterPlace>(reader));
+ }
+ }
+
+ return result;
+ }
+
+ public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+ {
+ throw new NotImplementedException();
+ }
+ }
}
}
View
28 Twitterizer2/Methods/Geo/TwitterPlaceLookupOptions.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Twitterizer
+{
+ /// <summary>
+ /// Provides a payload for optional parameters for the <see cref="Twitterizer.TwitterPlace.Lookup(double, double, TwitterPlaceLookupOptions)"/> method.
+ /// </summary>
+ public class TwitterPlaceLookupOptions : OptionalProperties
+ {
+ /// <summary>
+ /// A hint on the "region" in which to search. If a number, then this is a radius in meters, but it can also take a string that is suffixed with ft to specify feet. If this is not passed in, then it is assumed to be 0m. If coming from a device, in practice, this value is whatever accuracy the device has measuring its location (whether it be coming from a GPS, WiFi triangulation, etc.).
+ /// </summary>
+ public string Accuracy { get; set; }
+
+ /// <summary>
+ /// The minimal granularity of data to return. If this is not passed in, then neighborhood is assumed. city can also be passed.
+ /// </summary>
+ public string Granularity { get; set; }
+
+ /// <summary>
+ /// A hint as to the number of results to return. This does not guarantee that the number of results returned will equal max_results, but instead informs how many "nearby" results to return. Ideally, only pass in the number of places you intend to display to the user here.
+ /// </summary>
+ public int? MaxResults { get; set; }
+ }
+}
View
1  Twitterizer2/Methods/List/GetListSubscriptionsCommand.cs
@@ -48,7 +48,6 @@ internal sealed class GetListSubscriptionsCommand : CursorPagedCommand<TwitterLi
/// Initializes a new instance of the <see cref="GetListSubscriptionsCommand"/> class.
/// </summary>
/// <param name="requestTokens">The request tokens.</param>
- /// <param name="username">The username.</param>
/// <param name="options">The options.</param>
public GetListSubscriptionsCommand(OAuthTokens requestTokens, OptionalProperties options)
: base(HTTPVerb.GET, "{0}/lists/subscriptions.json", requestTokens, options)
View
3  Twitterizer2/Methods/Trends/CurrentTrendsCommand.cs
@@ -41,7 +41,7 @@ namespace Twitterizer.Commands
/// <summary>
/// The create list command class
/// </summary>
- internal sealed class CurrentTrendsCommand : TwitterCommand<TwitterTrendTimeframe>
+ internal sealed class CurrentTrendsCommand : TwitterCommand<TwitterTrendCollection>
{
#region Constructors
/// <summary>
@@ -51,7 +51,6 @@ internal sealed class CurrentTrendsCommand : TwitterCommand<TwitterTrendTimefram
public CurrentTrendsCommand(CurrentTrendsOptions options)
: base(HTTPVerb.GET, "trends/current.json", null, options)
{
- this.DeserializationHandler = TwitterTrendTimeframe.DeserializeJson;
}
#endregion
View
10 Twitterizer2/Methods/Trends/TwitterTrend.cs
@@ -67,22 +67,22 @@ public class TwitterTrend : TwitterObject
/// </summary>
/// <param name="options">The options.</param>
/// <returns>
- /// A <see cref="TwitterTrendTimeframe"/> instance.
+ /// A collection of <see cref="Twitterizer.TwitterTrend"/> objects.
/// </returns>
- public static TwitterTrendTimeframe Current(CurrentTrendsOptions options)
+ public static TwitterTrendCollection Current(CurrentTrendsOptions options)
{
Commands.CurrentTrendsCommand command = new Twitterizer.Commands.CurrentTrendsCommand(options);
- return Core.CommandPerformer<TwitterTrendTimeframe>.PerformAction(command);
+ return Core.CommandPerformer<TwitterTrendCollection>.PerformAction(command);
}
/// <summary>
/// Gets the current trends.
/// </summary>
/// <returns>
- /// A <see cref="TwitterTrendTimeframe"/> instance.
+ /// A collection of <see cref="Twitterizer.TwitterTrend"/> objects.
/// </returns>
- public static TwitterTrendTimeframe Current()
+ public static TwitterTrendCollection Current()
{
return Current(null);