Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Updated project to have all libraries

Added the WatTMDB modified project for .NET 3.5 compatibility
RestSharp added as nuget package

Now the project should compile fine
  • Loading branch information...
commit ef2486904315023c9386f931d95145b71cc71e66 1 parent 580d429
@msavazzi msavazzi authored
Showing with 22,117 additions and 45 deletions.
  1. +1 −1  Addons/scraper.EmberCore.TMDB/packages.config
  2. +14 −33 Addons/scraper.EmberCore.TMDB/scraper.EmberCore.TMDB.vbproj
  3. BIN  Addons/scraper.EmberCore.TMDB/x64/SQLite.Interop.dll
  4. BIN  Addons/scraper.EmberCore.TMDB/x86/SQLite.Interop.dll
  5. +112 −11 Ember Media Manager.sln
  6. +36 −0 WatTmdb/Properties/AssemblyInfo.cs
  7. +1,210 −0 WatTmdb/Tmdb/Tmdb.Async.cs
  8. +885 −0 WatTmdb/Tmdb/Tmdb.Sync.cs
  9. +472 −0 WatTmdb/Tmdb/Tmdb.cs
  10. +94 −0 WatTmdb/Utilities/Constants.cs
  11. +113 −0 WatTmdb/Utilities/RequestBuilder.cs
  12. +508 −0 WatTmdb/Utilities/RequestGenerator.cs
  13. +25 −0 WatTmdb/Utilities/Utility.cs
  14. +45 −0 WatTmdb/Utilities/WatJsonDeserializer.cs
  15. +22 −0 WatTmdb/Utility.cs
  16. +831 −0 WatTmdb/V3/Tmdb.Sync.cs
  17. +17 −0 WatTmdb/V3/TmdbAccount.cs
  18. +22 −0 WatTmdb/V3/TmdbAccountMovies.cs
  19. +20 −0 WatTmdb/V3/TmdbAsyncResult.cs
  20. +13 −0 WatTmdb/V3/TmdbAuthSession.cs
  21. +14 −0 WatTmdb/V3/TmdbAuthToken.cs
  22. +16 −0 WatTmdb/V3/TmdbChanges.cs
  23. +51 −0 WatTmdb/V3/TmdbCollection.cs
  24. +31 −0 WatTmdb/V3/TmdbCollectionImages.cs
  25. +35 −0 WatTmdb/V3/TmdbCompany.cs
  26. +29 −0 WatTmdb/V3/TmdbCompanyMovies.cs
  27. +22 −0 WatTmdb/V3/TmdbCompanySearch.cs
  28. +23 −0 WatTmdb/V3/TmdbConfiguration.cs
  29. +13 −0 WatTmdb/V3/TmdbError.cs
  30. +12 −0 WatTmdb/V3/TmdbGenre.cs
  31. +14 −0 WatTmdb/V3/TmdbGenreMovies.cs
  32. +14 −0 WatTmdb/V3/TmdbGuestSession.cs
  33. +38 −0 WatTmdb/V3/TmdbKeywords.cs
  34. +38 −0 WatTmdb/V3/TmdbLatestMovie.cs
  35. +53 −0 WatTmdb/V3/TmdbList.cs
  36. +90 −0 WatTmdb/V3/TmdbMovie.cs
  37. +24 −0 WatTmdb/V3/TmdbMovieAlternateTitles.cs
  38. +24 −0 WatTmdb/V3/TmdbMovieBase.cs
  39. +42 −0 WatTmdb/V3/TmdbMovieCast.cs
  40. +28 −0 WatTmdb/V3/TmdbMovieChanges.cs
  41. +36 −0 WatTmdb/V3/TmdbMovieImages.cs
  42. +24 −0 WatTmdb/V3/TmdbMovieKeywords.cs
  43. +20 −0 WatTmdb/V3/TmdbMovieReleases.cs
  44. +16 −0 WatTmdb/V3/TmdbMovieSearch.cs
  45. +26 −0 WatTmdb/V3/TmdbMovieTrailers.cs
  46. +12 −0 WatTmdb/V3/TmdbNowPlaying.cs
  47. +26 −0 WatTmdb/V3/TmdbPerson.cs
  48. +26 −0 WatTmdb/V3/TmdbPersonChanges.cs
  49. +45 −0 WatTmdb/V3/TmdbPersonCredits.cs
  50. +22 −0 WatTmdb/V3/TmdbPersonImages.cs
  51. +23 −0 WatTmdb/V3/TmdbPersonSearch.cs
  52. +12 −0 WatTmdb/V3/TmdbPopular.cs
  53. +15 −0 WatTmdb/V3/TmdbSearchResultBase.cs
  54. +12 −0 WatTmdb/V3/TmdbSimilarMovies.cs
  55. +12 −0 WatTmdb/V3/TmdbTopRated.cs
  56. +20 −0 WatTmdb/V3/TmdbTranslations.cs
  57. +12 −0 WatTmdb/V3/TmdbUpcoming.cs
  58. +45 −0 WatTmdb/V3/WatJsonDeserializer.cs
  59. +111 −0 WatTmdb/WatTmdb.csproj
  60. +4 −0 WatTmdb/packages.config
  61. BIN  packages/RestSharp.104.1/RestSharp.104.1.nupkg
  62. +22 −0 packages/RestSharp.104.1/RestSharp.104.1.nuspec
  63. BIN  packages/RestSharp.104.1/lib/net35-client/RestSharp.dll
  64. +2,611 −0 packages/RestSharp.104.1/lib/net35-client/RestSharp.xml
  65. BIN  packages/RestSharp.104.1/lib/net35/RestSharp.dll
  66. +2,611 −0 packages/RestSharp.104.1/lib/net35/RestSharp.xml
  67. BIN  packages/RestSharp.104.1/lib/net4-client/RestSharp.dll
  68. +2,680 −0 packages/RestSharp.104.1/lib/net4-client/RestSharp.xml
  69. BIN  packages/RestSharp.104.1/lib/net4/RestSharp.dll
  70. +2,680 −0 packages/RestSharp.104.1/lib/net4/RestSharp.xml
  71. BIN  packages/RestSharp.104.1/lib/sl4-wp71/RestSharp.WindowsPhone.dll
  72. +3,494 −0 packages/RestSharp.104.1/lib/sl4-wp71/RestSharp.WindowsPhone.xml
  73. BIN  packages/RestSharp.104.1/lib/sl4/RestSharp.Silverlight.dll
  74. +2,429 −0 packages/RestSharp.104.1/lib/sl4/RestSharp.Silverlight.xml
  75. +19 −0 packages/RestSharp.104.1/readme.txt
  76. +1 −0  packages/repositories.config
View
2  Addons/scraper.EmberCore.TMDB/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="RestSharp" version="104.1" targetFramework="net35" />
<package id="SharpZipLib" version="0.86.0" />
- <package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net35" />
</packages>
View
47 Addons/scraper.EmberCore.TMDB/scraper.EmberCore.TMDB.vbproj
@@ -37,10 +37,14 @@
<BootstrapperEnabled>true</BootstrapperEnabled>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<RestorePackages>true</RestorePackages>
- <SccProjectName>SAK</SccProjectName>
- <SccLocalPath>SAK</SccLocalPath>
- <SccAuxPath>SAK</SccAuxPath>
- <SccProvider>SAK</SccProvider>
+ <SccProjectName>
+ </SccProjectName>
+ <SccLocalPath>
+ </SccLocalPath>
+ <SccAuxPath>
+ </SccAuxPath>
+ <SccProvider>
+ </SccProvider>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
@@ -77,19 +81,10 @@
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
- <Reference Include="RestSharp, Version=104.1.0.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>Libraries\Release\RestSharp.dll</HintPath>
+ <Reference Include="RestSharp">
+ <HintPath>..\..\packages\RestSharp.104.1\lib\net35\RestSharp.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
- <Private>True</Private>
- <HintPath>..\..\packages\System.Data.SQLite.1.0.84.0\lib\net20\System.Data.SQLite.dll</HintPath>
- </Reference>
- <Reference Include="System.Data.SQLite.Linq, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
- <Private>True</Private>
- <HintPath>..\..\packages\System.Data.SQLite.1.0.84.0\lib\net20\System.Data.SQLite.Linq.dll</HintPath>
- </Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
@@ -100,10 +95,6 @@
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
- <Reference Include="WatTmdb, Version=0.6.0.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>Libraries\Release\WatTmdb.dll</HintPath>
- </Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
@@ -245,6 +236,10 @@
<Name>EmberAPI</Name>
<Private>False</Private>
</ProjectReference>
+ <ProjectReference Include="..\..\WatTmdb\WatTmdb.csproj">
+ <Project>{EFC11645-FAB4-4C30-A498-29F5ECDF77E8}</Project>
+ <Name>WatTmdb</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Langs\scraper.EmberCore.TMDB.English_%28en_US%29-Help.xml">
@@ -253,20 +248,6 @@
<Content Include="Langs\scraper.EmberCore.TMDBEnglish_%28en_US%29.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="Libraries\Debug\RestSharp.dll" />
- <Content Include="Libraries\Debug\RestSharp.xml" />
- <Content Include="Libraries\Debug\WatTmdb.dll" />
- <Content Include="Libraries\Debug\WatTmdb.pdb" />
- <Content Include="Libraries\Release\RestSharp.dll" />
- <Content Include="Libraries\Release\RestSharp.xml" />
- <Content Include="Libraries\Release\WatTmdb.dll" />
- <Content Include="Libraries\Release\WatTmdb.pdb" />
- <Content Include="x64\SQLite.Interop.dll">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
- <Content Include="x86\SQLite.Interop.dll">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
View
BIN  Addons/scraper.EmberCore.TMDB/x64/SQLite.Interop.dll
Binary file not shown
View
BIN  Addons/scraper.EmberCore.TMDB/x86/SQLite.Interop.dll
Binary file not shown
View
123 Ember Media Manager.sln
@@ -57,87 +57,188 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{8564C9
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "scraper.EmberCore.TMDB", "Addons\scraper.EmberCore.TMDB\scraper.EmberCore.TMDB.vbproj", "{2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WatTmdb", "WatTmdb\WatTmdb.csproj", "{EFC11645-FAB4-4C30-A498-29F5ECDF77E8}"
+EndProject
Global
- GlobalSection(TeamFoundationVersionControl) = preSolution
- SccNumberOfProjects = 1
- SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
- SccTeamFoundationServer = http://xeon:8080/tfs/my%20projects
- SccProjectUniqueName0 = Addons\\scraper.EmberCore.TMDB\\scraper.EmberCore.TMDB.vbproj
- SccProjectTopLevelParentUniqueName0 = Ember\u0020Media\u0020Manager.sln
- SccProjectName0 = Addons/scraper.EmberCore.TMDB
- SccAuxPath0 = http://xeon:8080/tfs/my%20projects
- SccLocalPath0 = Addons\\scraper.EmberCore.TMDB
- SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
- EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Debug|Mixed Platforms.Build.0 = Debug|x86
{9B57D3AB-AF12-4012-B945-284C2448DC81}.Debug|x86.ActiveCfg = Debug|x86
{9B57D3AB-AF12-4012-B945-284C2448DC81}.Debug|x86.Build.0 = Debug|x86
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Release|Any CPU.ActiveCfg = Release|x86
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {9B57D3AB-AF12-4012-B945-284C2448DC81}.Release|Mixed Platforms.Build.0 = Release|x86
{9B57D3AB-AF12-4012-B945-284C2448DC81}.Release|x86.ActiveCfg = Release|x86
{9B57D3AB-AF12-4012-B945-284C2448DC81}.Release|x86.Build.0 = Release|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Debug|Mixed Platforms.Build.0 = Debug|x86
{208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Debug|x86.ActiveCfg = Debug|x86
{208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Debug|x86.Build.0 = Debug|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Release|Any CPU.ActiveCfg = Release|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Release|Mixed Platforms.Build.0 = Release|x86
{208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Release|x86.ActiveCfg = Release|x86
{208AA35E-C6AE-4D2D-A9DD-B6EFD19A4279}.Release|x86.Build.0 = Release|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Debug|Mixed Platforms.Build.0 = Debug|x86
{EAAB0601-6478-44D2-A39C-89B0850D7833}.Debug|x86.ActiveCfg = Debug|x86
{EAAB0601-6478-44D2-A39C-89B0850D7833}.Debug|x86.Build.0 = Debug|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Release|Any CPU.ActiveCfg = Release|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {EAAB0601-6478-44D2-A39C-89B0850D7833}.Release|Mixed Platforms.Build.0 = Release|x86
{EAAB0601-6478-44D2-A39C-89B0850D7833}.Release|x86.ActiveCfg = Release|x86
{EAAB0601-6478-44D2-A39C-89B0850D7833}.Release|x86.Build.0 = Release|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Debug|Mixed Platforms.Build.0 = Debug|x86
{B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Debug|x86.ActiveCfg = Debug|x86
{B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Debug|x86.Build.0 = Debug|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Release|Any CPU.ActiveCfg = Release|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Release|Mixed Platforms.Build.0 = Release|x86
{B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Release|x86.ActiveCfg = Release|x86
{B413DEAF-4FDC-416A-B3E0-968C1C8F3F83}.Release|x86.Build.0 = Release|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Debug|Mixed Platforms.Build.0 = Debug|x86
{F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Debug|x86.ActiveCfg = Debug|x86
{F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Debug|x86.Build.0 = Debug|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Release|Any CPU.ActiveCfg = Release|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Release|Mixed Platforms.Build.0 = Release|x86
{F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Release|x86.ActiveCfg = Release|x86
{F6CACA89-E8E4-45D9-B942-97FBD4ADD106}.Release|x86.Build.0 = Release|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Debug|Mixed Platforms.Build.0 = Debug|x86
{B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Debug|x86.ActiveCfg = Debug|x86
{B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Debug|x86.Build.0 = Debug|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Release|Any CPU.ActiveCfg = Release|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Release|Mixed Platforms.Build.0 = Release|x86
{B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Release|x86.ActiveCfg = Release|x86
{B0BDF9C2-EB9C-4090-B9A9-B703DF00CCEF}.Release|x86.Build.0 = Release|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Debug|Mixed Platforms.Build.0 = Debug|x86
{84B2143A-D04F-4262-923D-21AEDF86E2B7}.Debug|x86.ActiveCfg = Debug|x86
{84B2143A-D04F-4262-923D-21AEDF86E2B7}.Debug|x86.Build.0 = Debug|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Release|Any CPU.ActiveCfg = Release|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {84B2143A-D04F-4262-923D-21AEDF86E2B7}.Release|Mixed Platforms.Build.0 = Release|x86
{84B2143A-D04F-4262-923D-21AEDF86E2B7}.Release|x86.ActiveCfg = Release|x86
{84B2143A-D04F-4262-923D-21AEDF86E2B7}.Release|x86.Build.0 = Release|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Debug|Mixed Platforms.Build.0 = Debug|x86
{2A08A524-88DA-432F-92E6-8DC63C5376DA}.Debug|x86.ActiveCfg = Debug|x86
{2A08A524-88DA-432F-92E6-8DC63C5376DA}.Debug|x86.Build.0 = Debug|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Release|Any CPU.ActiveCfg = Release|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {2A08A524-88DA-432F-92E6-8DC63C5376DA}.Release|Mixed Platforms.Build.0 = Release|x86
{2A08A524-88DA-432F-92E6-8DC63C5376DA}.Release|x86.ActiveCfg = Release|x86
{2A08A524-88DA-432F-92E6-8DC63C5376DA}.Release|x86.Build.0 = Release|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Debug|Mixed Platforms.Build.0 = Debug|x86
{E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Debug|x86.ActiveCfg = Debug|x86
{E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Debug|x86.Build.0 = Debug|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Release|Any CPU.ActiveCfg = Release|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Release|Mixed Platforms.Build.0 = Release|x86
{E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Release|x86.ActiveCfg = Release|x86
{E7FDD1C9-BCF7-4624-B033-D3888E422A8B}.Release|x86.Build.0 = Release|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Debug|Mixed Platforms.Build.0 = Debug|x86
{64D6F035-F186-4193-AF35-D20126B8DA64}.Debug|x86.ActiveCfg = Debug|x86
{64D6F035-F186-4193-AF35-D20126B8DA64}.Debug|x86.Build.0 = Debug|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Release|Any CPU.ActiveCfg = Release|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {64D6F035-F186-4193-AF35-D20126B8DA64}.Release|Mixed Platforms.Build.0 = Release|x86
{64D6F035-F186-4193-AF35-D20126B8DA64}.Release|x86.ActiveCfg = Release|x86
{64D6F035-F186-4193-AF35-D20126B8DA64}.Release|x86.Build.0 = Release|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Debug|Mixed Platforms.Build.0 = Debug|x86
{6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Debug|x86.ActiveCfg = Debug|x86
{6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Debug|x86.Build.0 = Debug|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Release|Any CPU.ActiveCfg = Release|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Release|Mixed Platforms.Build.0 = Release|x86
{6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Release|x86.ActiveCfg = Release|x86
{6FE33C61-E2C2-4982-9536-63AEF0A98AAA}.Release|x86.Build.0 = Release|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Debug|Mixed Platforms.Build.0 = Debug|x86
{859C1085-518B-49D2-9C84-D91C4094097F}.Debug|x86.ActiveCfg = Debug|x86
{859C1085-518B-49D2-9C84-D91C4094097F}.Debug|x86.Build.0 = Debug|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Release|Any CPU.ActiveCfg = Release|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {859C1085-518B-49D2-9C84-D91C4094097F}.Release|Mixed Platforms.Build.0 = Release|x86
{859C1085-518B-49D2-9C84-D91C4094097F}.Release|x86.ActiveCfg = Release|x86
{859C1085-518B-49D2-9C84-D91C4094097F}.Release|x86.Build.0 = Release|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Debug|Mixed Platforms.Build.0 = Debug|x86
{62356BCF-D15A-4BF1-B980-395CEC0004A9}.Debug|x86.ActiveCfg = Debug|x86
{62356BCF-D15A-4BF1-B980-395CEC0004A9}.Debug|x86.Build.0 = Debug|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Release|Any CPU.ActiveCfg = Release|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {62356BCF-D15A-4BF1-B980-395CEC0004A9}.Release|Mixed Platforms.Build.0 = Release|x86
{62356BCF-D15A-4BF1-B980-395CEC0004A9}.Release|x86.ActiveCfg = Release|x86
{62356BCF-D15A-4BF1-B980-395CEC0004A9}.Release|x86.Build.0 = Release|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Debug|Mixed Platforms.Build.0 = Debug|x86
{EF6A550E-DD76-4F4D-8250-8598140F828B}.Debug|x86.ActiveCfg = Debug|x86
{EF6A550E-DD76-4F4D-8250-8598140F828B}.Debug|x86.Build.0 = Debug|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Release|Any CPU.ActiveCfg = Release|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {EF6A550E-DD76-4F4D-8250-8598140F828B}.Release|Mixed Platforms.Build.0 = Release|x86
{EF6A550E-DD76-4F4D-8250-8598140F828B}.Release|x86.ActiveCfg = Release|x86
{EF6A550E-DD76-4F4D-8250-8598140F828B}.Release|x86.Build.0 = Release|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Debug|Mixed Platforms.Build.0 = Debug|x86
{E567C031-1F7B-4637-9B3A-806988DE50CF}.Debug|x86.ActiveCfg = Debug|x86
{E567C031-1F7B-4637-9B3A-806988DE50CF}.Debug|x86.Build.0 = Debug|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Release|Any CPU.ActiveCfg = Release|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {E567C031-1F7B-4637-9B3A-806988DE50CF}.Release|Mixed Platforms.Build.0 = Release|x86
{E567C031-1F7B-4637-9B3A-806988DE50CF}.Release|x86.ActiveCfg = Release|x86
{E567C031-1F7B-4637-9B3A-806988DE50CF}.Release|x86.Build.0 = Release|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Debug|Mixed Platforms.Build.0 = Debug|x86
{2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Debug|x86.ActiveCfg = Debug|x86
{2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Debug|x86.Build.0 = Debug|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Release|Any CPU.ActiveCfg = Release|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Release|Mixed Platforms.Build.0 = Release|x86
{2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Release|x86.ActiveCfg = Release|x86
{2EB03DAA-1A5D-47C5-9883-56DCD0F70D23}.Release|x86.Build.0 = Release|x86
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {EFC11645-FAB4-4C30-A498-29F5ECDF77E8}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
View
36 WatTmdb/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("WatTmdb")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Watway")]
+[assembly: AssemblyProduct("WatTmdb")]
+[assembly: AssemblyCopyright("Copyright © Watway 2012")]
+[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("5b410834-16c6-4953-b6ed-f04c9e9d20a7")]
+
+// 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("0.6.0.0")]
+[assembly: AssemblyFileVersion("0.6.0.0")]
View
1,210 WatTmdb/Tmdb/Tmdb.Async.cs
@@ -0,0 +1,1210 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using RestSharp;
+using System.Net;
+
+namespace WatTmdb.V3
+{
+ public partial class Tmdb
+ {
+ #region Process Execution
+
+ private void ProcessAsyncRequest<T>(RestRequest request, Action<TmdbAsyncResult<T>> callback)
+ where T : new()
+ {
+ var client = new RestClient(BASE_URL);
+ client.AddHandler("application/json", new WatJsonDeserializer());
+ if (Timeout.HasValue)
+ client.Timeout = Timeout.Value;
+
+#if !WINDOWS_PHONE
+ if (Proxy != null)
+ client.Proxy = Proxy;
+#endif
+
+ Error = null;
+
+ //request.AddHeader("Accept", "application/json");
+ //request.AddParameter("api_key", ApiKey);
+
+ ++AsyncCount;
+ var asyncHandle = client.ExecuteAsync<T>(request, resp =>
+ {
+ --AsyncCount;
+ var result = new TmdbAsyncResult<T>
+ {
+ Data = resp.Data != null ? resp.Data : default(T),
+ UserState = request.UserState
+ };
+
+ ResponseContent = resp.Content;
+ ResponseHeaders = resp.Headers.ToDictionary(k => k.Name, v => v.Value);
+
+ if (resp.ResponseStatus != ResponseStatus.Completed)
+ {
+ if (resp.Content.Contains("status_message"))
+ result.Error = Deserializer.Deserialize<TmdbError>(resp);
+ else if (resp.ErrorException != null)
+ throw resp.ErrorException;
+ else
+ result.Error = new TmdbError { status_message = resp.Content };
+ }
+
+ Error = result.Error;
+
+ callback(result);
+ });
+ }
+
+ private void ProcessAsyncRequestETag(RestRequest request, Action<TmdbAsyncETagResult> callback)
+ {
+ var client = new RestClient(BASE_URL);
+ if (Timeout.HasValue)
+ client.Timeout = Timeout.Value;
+
+#if !WINDOWS_PHONE
+ if (Proxy != null)
+ client.Proxy = Proxy;
+#endif
+
+ Error = null;
+
+ request.Method = Method.HEAD;
+ //request.AddHeader("Accept", "application/json");
+ //request.AddParameter("api_key", ApiKey);
+
+ var asyncHandle = client.ExecuteAsync(request, resp =>
+ {
+ ResponseContent = resp.Content;
+ ResponseHeaders = resp.Headers.ToDictionary(k => k.Name, v => v.Value);
+
+ var result = new TmdbAsyncETagResult
+ {
+ ETag = ResponseETag,
+ UserState = request.UserState
+ };
+
+ if (resp.ResponseStatus != ResponseStatus.Completed && resp.ErrorException != null)
+ throw resp.ErrorException;
+
+ callback(result);
+ });
+ }
+
+ #endregion
+
+
+ private static bool CheckQuery<T>(string query, object userState, Action<TmdbAsyncResult<T>> callback)
+ where T : class
+ {
+ if (string.IsNullOrEmpty(query))
+ {
+ callback(new TmdbAsyncResult<T>
+ {
+ Data = null,
+ Error = new TmdbError { status_message = "Search cannot be empty" },
+ UserState = userState
+ });
+ return false;
+ }
+
+ return true;
+ }
+
+ #region Configuration
+ /// <summary>
+ /// Retrieve configuration data from TMDB
+ /// (http://help.themoviedb.org/kb/api/configuration)
+ /// </summary>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetConfiguration(object UserState, Action<TmdbAsyncResult<TmdbConfiguration>> callback)
+ {
+ //ProcessAsyncRequest<TmdbConfiguration>(BuildGetConfigurationRequest(UserState), callback);
+ ProcessAsyncRequest<TmdbConfiguration>(Generator.GetConfiguration(UserState), callback);
+ }
+
+ public void GetConfigurationETag(object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetConfigurationRequest(UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetConfiguration(UserState), callback);
+ }
+ #endregion
+
+
+ #region Authentication Methods
+ /// <summary>
+ /// Generate a valid request token for user based authentication.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Ftoken%2Fnew
+ /// </summary>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAuthToken(object userState, Action<TmdbAsyncResult<TmdbAuthToken>> callback)
+ {
+ ProcessAsyncRequest<TmdbAuthToken>(Generator.GetAuthToken(userState), callback);
+ }
+
+ /// <summary>
+ /// Generate a session id for user based authentication.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Fsession%2Fnew
+ /// </summary>
+ /// <param name="RequestToken"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAuthSession(string RequestToken, object userState, Action<TmdbAsyncResult<TmdbAuthSession>> callback)
+ {
+ ProcessAsyncRequest<TmdbAuthSession>(Generator.GetAuthSession(RequestToken, userState), callback);
+ }
+
+ /// <summary>
+ /// Generate a Guest Session id
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Fguest_session%2Fnew
+ /// </summary>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetGuestSession(object userState, Action<TmdbAsyncResult<TmdbGuestSession>> callback)
+ {
+ ProcessAsyncRequest<TmdbGuestSession>(Generator.GetGuestSession(userState), callback);
+ }
+ #endregion
+
+
+ #region Account Methods
+ /// <summary>
+ /// Get the basic information for an account.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount
+ /// </summary>
+ /// <param name="SessionID"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAccountInfo(string SessionID, object userState, Action<TmdbAsyncResult<TmdbAccount>> callback)
+ {
+ ProcessAsyncRequest<TmdbAccount>(Generator.GetAccountInfo(SessionID, userState), callback);
+ }
+
+ /// <summary>
+ /// Get the lists that you have created and marked as a favorite.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Flists
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAccountLists(int AccountID, string SessionID, int page, string language, object userState, Action<TmdbAsyncResult<TmdbList>> callback)
+ {
+ ProcessAsyncRequest<TmdbList>(Generator.GetAccountLists(AccountID, SessionID, page, language, userState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of favourite movies for an account
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Ffavorite_movies
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAccountFavouriteMovies(int AccountID, string SessionID, int page, string language, object userState, Action<TmdbAsyncResult<TmdbAccountMovies>> callback)
+ {
+ ProcessAsyncRequest<TmdbAccountMovies>(Generator.GetAccountFavouriteMovies(AccountID, SessionID, page, language, userState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of rated movies for an account
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Frated_movies
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAccountRatedMovies(int AccountID, string SessionID, int page, string language, object userState, Action<TmdbAsyncResult<TmdbAccountMovies>> callback)
+ {
+ ProcessAsyncRequest<TmdbAccountMovies>(Generator.GetAccountRatedMovies(AccountID, SessionID, page, language, userState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of movies on an accounts watchlist
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Fmovie_watchlist
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetAccountWatchlistMovies(int AccountID, string SessionID, int page, string language, object userState, Action<TmdbAsyncResult<TmdbAccountMovies>> callback)
+ {
+ ProcessAsyncRequest<TmdbAccountMovies>(Generator.GetAccountWatchlistMovies(AccountID, SessionID, page, language, userState), callback);
+ }
+ #endregion
+
+
+ #region Search
+ /// <summary>
+ /// Search for movies that are listed in TMDB
+ /// (http://help.themoviedb.org/kb/api/search-movies)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="includeAdult">optional - include adult items in your search, (Default=false)</param>
+ /// <param name="year">optional - to get a closer result</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void SearchMovie(string query, int page, string language, bool? includeAdult, int? year, object UserState, Action<TmdbAsyncResult<TmdbMovieSearch>> callback)
+ {
+ if (CheckQuery(query, UserState, callback) == false)
+ return;
+
+ //ProcessAsyncRequest<TmdbMovieSearch>(BuildSearchMovieRequest(query, page, language, includeAdult, year, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieSearch>(Generator.SearchMovie(query, page, language, includeAdult, year, UserState), callback);
+ }
+
+ /// <summary>
+ /// Search for movies that are listed in TMDB
+ /// (http://help.themoviedb.org/kb/api/search-movies)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void SearchMovie(string query, int page, object UserState, Action<TmdbAsyncResult<TmdbMovieSearch>> callback)
+ {
+ SearchMovie(query, page, Language, null, null, UserState, callback);
+ }
+
+ /// <summary>
+ /// Search for people that are listed in TMDB.
+ /// (http://help.themoviedb.org/kb/api/search-people)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void SearchPerson(string query, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbPersonSearch>> callback)
+ {
+ if (CheckQuery(query, UserState, callback) == false)
+ return;
+
+ //ProcessAsyncRequest<TmdbPersonSearch>(BuildSearchPersonRequest(query, page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbPersonSearch>(Generator.SearchPerson(query, page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Search for people that are listed in TMDB.
+ /// (http://help.themoviedb.org/kb/api/search-people)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void SearchPerson(string query, int page, object UserState, Action<TmdbAsyncResult<TmdbPersonSearch>> callback)
+ {
+ SearchPerson(query, page, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Search for production companies that are part of TMDB.
+ /// (http://help.themoviedb.org/kb/api/search-companies)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void SearchCompany(string query, int page, object UserState, Action<TmdbAsyncResult<TmdbCompanySearch>> callback)
+ {
+ if (CheckQuery(query, UserState, callback) == false)
+ return;
+
+ //ProcessAsyncRequest<TmdbCompanySearch>(BuildSearchCompanyRequest(query, page, UserState), callback);
+ ProcessAsyncRequest<TmdbCompanySearch>(Generator.SearchCompany(query, page, UserState), callback);
+ }
+
+ /// <summary>
+ /// Search for keywords by name.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fsearch%2Fkeyword
+ /// </summary>
+ /// <param name="query"></param>
+ /// <param name="page"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void SearchKeyword(string query, int page, object UserState, Action<TmdbAsyncResult<TmdbKeywordSearch>> callback)
+ {
+ if (CheckQuery(query, UserState, callback) == false)
+ return;
+
+ ProcessAsyncRequest<TmdbKeywordSearch>(Generator.SearchKeyword(query, page, UserState), callback);
+ }
+
+ /// <summary>
+ /// Search for collections by name
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fsearch%2Fcollection
+ /// </summary>
+ /// <param name="query"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void SearchCollection(string query, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbCollectionSearch>> callback)
+ {
+ if (CheckQuery(query, UserState, callback) == false)
+ return;
+
+ ProcessAsyncRequest<TmdbCollectionSearch>(Generator.SearchCollection(query, page, language, UserState), callback);
+ }
+
+ #endregion
+
+
+ #region Collections
+ /// <summary>
+ /// Get all of the basic information about a movie collection.
+ /// (http://help.themoviedb.org/kb/api/collection-info)
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCollectionInfo(int CollectionID, string language, object UserState, Action<TmdbAsyncResult<TmdbCollection>> callback)
+ {
+ //ProcessAsyncRequest<TmdbCollection>(BuildGetCollectionInfoRequest(CollectionID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbCollection>(Generator.GetCollectionInfo(CollectionID, language, UserState), callback);
+ }
+
+ public void GetCollectionInfoETag(int CollectionID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetCollectionInfoRequest(CollectionID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetCollectionInfo(CollectionID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get all of the basic information about a movie collection.
+ /// (http://help.themoviedb.org/kb/api/collection-info)
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCollectionInfo(int CollectionID, object UserState, Action<TmdbAsyncResult<TmdbCollection>> callback)
+ {
+ GetCollectionInfo(CollectionID, Language, UserState, callback);
+ }
+
+ public void GetCollectionInfoETag(int CollectionID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetCollectionInfoETag(CollectionID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get all the images for a movie collection
+ /// http://help.themoviedb.org/kb/api/collection-images
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCollectionImages(int CollectionID, string language, object UserState, Action<TmdbAsyncResult<TmdbCollectionImages>> callback)
+ {
+ //ProcessAsyncRequest<TmdbCollectionImages>(BuildGetCollectionImagesRequest(CollectionID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbCollectionImages>(Generator.GetCollectionImages(CollectionID, language, UserState), callback);
+ }
+
+ public void GetCollectionImagesETag(int CollectionID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetCollectionImagesRequest(CollectionID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetCollectionImages(CollectionID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get all the images for a movie collection
+ /// http://help.themoviedb.org/kb/api/collection-images
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCollectionImages(int CollectionID, object UserState, Action<TmdbAsyncResult<TmdbCollectionImages>> callback)
+ {
+ GetCollectionImages(CollectionID, Language, UserState, callback);
+ }
+
+ public void GetCollectionImagesETag(int CollectionID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetCollectionImagesETag(CollectionID, Language, UserState, callback);
+ }
+ #endregion
+
+
+ #region Movie Info
+ /// <summary>
+ /// Retrieve all the basic movie information for a particular movie by TMDB reference.
+ /// (http://help.themoviedb.org/kb/api/movie-info)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieInfo(int MovieID, string language, object UserState, Action<TmdbAsyncResult<TmdbMovie>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovie>(BuildGetMovieInfoRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbMovie>(Generator.GetMovieInfo(MovieID, language, UserState), callback);
+ }
+
+ public void GetMovieInfoETag(int MovieID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieInfoRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieInfo(MovieID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Retrieve all the basic movie information for a particular movie by TMDB reference.
+ /// (http://help.themoviedb.org/kb/api/movie-info)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieInfo(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovie>> callback)
+ {
+ GetMovieInfo(MovieID, Language, UserState, callback);
+ }
+
+ public void GetMovieInfoETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetMovieInfoETag(MovieID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Retrieve all the basic movie information for a particular movie by IMDB reference.
+ /// (http://help.themoviedb.org/kb/api/movie-info)
+ /// </summary>
+ /// <param name="IMDB_ID">IMDB movie id</param>
+ /// <param name="callback"></param>
+ public void GetMovieByIMDB(string IMDB_ID, string language, object UserState, Action<TmdbAsyncResult<TmdbMovie>> callback)
+ {
+ if (CheckQuery(IMDB_ID, UserState, callback) == false)
+ return;
+
+ //ProcessAsyncRequest<TmdbMovie>(BuildGetMovieByIMDBRequest(IMDB_ID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbMovie>(Generator.GetMovieByIMDB(IMDB_ID, language, UserState), callback);
+ }
+
+ public void GetMovieByIMDB(string IMDB_ID, object UserState, Action<TmdbAsyncResult<TmdbMovie>> callback)
+ {
+ GetMovieByIMDB(IMDB_ID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of all the alternative titles for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-alternative-titles)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="Country">ISO 3166-1 country code (optional)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieAlternateTitles(int MovieID, string Country, object UserState, Action<TmdbAsyncResult<TmdbMovieAlternateTitles>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieAlternateTitles>(BuildGetMovieAlternateTitlesRequest(MovieID, Country, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieAlternateTitles>(Generator.GetMovieAlternateTitles(MovieID, Country, UserState), callback);
+ }
+
+ public void GetMovieAlternateTitlesETag(int MovieID, string Country, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieAlternateTitlesRequest(MovieID, Country, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieAlternateTitles(MovieID, Country, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of all the cast information for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-casts)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieCast(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovieCast>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieCast>(BuildGetMovieCastRequest(MovieID, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieCast>(Generator.GetMovieCast(MovieID, UserState), callback);
+ }
+
+ public void GetMovieCastETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieCastRequest(MovieID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieCast(MovieID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of all the images for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-images)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieImages(int MovieID, string language, object UserState, Action<TmdbAsyncResult<TmdbMovieImages>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieImages>(BuildGetMovieImagesRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieImages>(Generator.GetMovieImages(MovieID, language, UserState), callback);
+ }
+
+ public void GetMovieImagesETag(int MovieID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieImagesRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieImages(MovieID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of all the images for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-images)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieImages(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovieImages>> callback)
+ {
+ GetMovieImages(MovieID, Language, UserState, callback);
+ }
+
+ public void GetMovieImagesETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetMovieImagesETag(MovieID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of all the keywords that have been added to a particular movie. Only English keywords exist currently.
+ /// (http://help.themoviedb.org/kb/api/movie-keywords)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieKeywords(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovieKeywords>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieKeywords>(BuildGetMovieKeywordsRequest(MovieID, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieKeywords>(Generator.GetMovieKeywords(MovieID, UserState), callback);
+ }
+
+ public void GetMovieKeywordsETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieKeywordsRequest(MovieID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieKeywords(MovieID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get all the release and certification data in TMDB for a particular movie
+ /// (http://help.themoviedb.org/kb/api/movie-release-info)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieReleases(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovieReleases>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieReleases>(BuildGetMovieReleasesRequest(MovieID, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieReleases>(Generator.GetMovieReleases(MovieID, UserState), callback);
+ }
+
+ public void GetMovieReleasesETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieReleasesRequest(MovieID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieReleases(MovieID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of trailers for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-trailers)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieTrailers(int MovieID, string language, object UserState, Action<TmdbAsyncResult<TmdbMovieTrailers>> callback)
+ {
+ //ProcessAsyncRequest<TmdbMovieTrailers>(BuildGetMovieTrailersRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbMovieTrailers>(Generator.GetMovieTrailers(MovieID, language, UserState), callback);
+ }
+
+ public void GetMovieTrailersETag(int MovieID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieTrailersRequest(MovieID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieTrailers(MovieID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of trailers for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-trailers)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieTrailers(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbMovieTrailers>> callback)
+ {
+ GetMovieTrailers(MovieID, Language, UserState, callback);
+ }
+
+ public void GetMovieTrailersETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetMovieTrailersETag(MovieID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of all available translations for a specific movie.
+ /// (http://help.themoviedb.org/kb/api/movie-translations)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <returns></returns>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetMovieTranslations(int MovieID, object UserState, Action<TmdbAsyncResult<TmdbTranslations>> callback)
+ {
+ //ProcessAsyncRequest<TmdbTranslations>(BuildGetMovieTranslationsRequest(MovieID, UserState), callback);
+ ProcessAsyncRequest<TmdbTranslations>(Generator.GetMovieTranslations(MovieID, UserState), callback);
+ }
+
+ public void GetMovieTranslationsETag(int MovieID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetMovieTranslationsRequest(MovieID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieTranslations(MovieID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the lists that the movie belongs to.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fmovie%2F%7Bid%7D%2Flists
+ /// </summary>
+ /// <param name="MovieID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void GetMovieLists(int MovieID, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbList>> callback)
+ {
+ ProcessAsyncRequest<TmdbList>(Generator.GetMovieLists(MovieID, page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of changes for a specific movie, grouped by key and ordered by date in descending order.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fmovie%2F%7Bid%7D%2Fchanges)
+ /// </summary>
+ /// <param name="MovieID"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetMovieChanges(int MovieID, object userState, Action<TmdbAsyncResult<TmdbMovieChanges>> callback)
+ {
+ ProcessAsyncRequest<TmdbMovieChanges>(Generator.GetMovieChanges(MovieID, userState), callback);
+ }
+
+ public void GetMovieChangesETag(int MovieID, object userState, Action<TmdbAsyncETagResult> callback)
+ {
+ ProcessAsyncRequestETag(ETagGenerator.GetMovieChanges(MovieID, userState), callback);
+ }
+
+ /// <summary>
+ /// Get list of similar movies for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-similar-movies)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetSimilarMovies(int MovieID, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbSimilarMovies>> callback)
+ {
+ //ProcessAsyncRequest<TmdbSimilarMovies>(BuildGetSimilarMoviesRequest(MovieID, page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbSimilarMovies>(Generator.GetSimilarMovies(MovieID, page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of similar movies for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-similar-movies)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetSimilarMovies(int MovieID, int page, object UserState, Action<TmdbAsyncResult<TmdbSimilarMovies>> callback)
+ {
+ GetSimilarMovies(MovieID, page, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of movies that are arriving to theatres in the next few weeks.
+ /// (http://help.themoviedb.org/kb/api/upcoming-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetUpcomingMovies(int page, string language, object UserState, Action<TmdbAsyncResult<TmdbUpcoming>> callback)
+ {
+ //ProcessAsyncRequest<TmdbUpcoming>(BuildGetUpcomingMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbUpcoming>(Generator.GetUpcomingMovies(page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of movies that are arriving to theatres in the next few weeks.
+ /// (http://help.themoviedb.org/kb/api/upcoming-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetUpcomingMovies(int page, object UserState, Action<TmdbAsyncResult<TmdbUpcoming>> callback)
+ {
+ GetUpcomingMovies(page, Language, UserState, callback);
+ }
+
+ #endregion
+
+
+ #region Person Info
+ /// <summary>
+ /// Get all of the basic information for a person.
+ /// (http://help.themoviedb.org/kb/api/person-info)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPersonInfo(int PersonID, object UserState, Action<TmdbAsyncResult<TmdbPerson>> callback)
+ {
+ //ProcessAsyncRequest<TmdbPerson>(BuildGetPersonInfoRequest(PersonID, UserState), callback);
+ ProcessAsyncRequest<TmdbPerson>(Generator.GetPersonInfo(PersonID, UserState), callback);
+ }
+
+ public void GetPersonInfoETag(int PersonID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetPersonInfoRequest(PersonID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetPersonInfo(PersonID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of cast and crew information for a person.
+ /// (http://help.themoviedb.org/kb/api/person-credits)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPersonCredits(int PersonID, string language, object UserState, Action<TmdbAsyncResult<TmdbPersonCredits>> callback)
+ {
+ //ProcessAsyncRequest<TmdbPersonCredits>(BuildGetPersonCreditsRequest(PersonID, language, UserState), callback);
+ ProcessAsyncRequest<TmdbPersonCredits>(Generator.GetPersonCredits(PersonID, language, UserState), callback);
+ }
+
+ public void GetPersonCreditsETag(int PersonID, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetPersonCreditsRequest(PersonID, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetPersonCredits(PersonID, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of cast and crew information for a person.
+ /// (http://help.themoviedb.org/kb/api/person-credits)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPersonCredits(int PersonID, object UserState, Action<TmdbAsyncResult<TmdbPersonCredits>> callback)
+ {
+ GetPersonCredits(PersonID, Language, UserState, callback);
+ }
+
+ public void GetPersonCreditsETag(int PersonID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetPersonCreditsETag(PersonID, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of images for a person.
+ /// (http://help.themoviedb.org/kb/api/person-images)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPersonImages(int PersonID, object UserState, Action<TmdbAsyncResult<TmdbPersonImages>> callback)
+ {
+ //ProcessAsyncRequest<TmdbPersonImages>(BuildGetPersonImagesRequest(PersonID, UserState), callback);
+ ProcessAsyncRequest<TmdbPersonImages>(Generator.GetPersonImages(PersonID, UserState), callback);
+ }
+
+ public void GetPersonImagesETag(int PersonID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetPersonImagesRequest(PersonID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetPersonImages(PersonID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of changes for a specific person. Changes are grouped by key and ordered by date in descending order.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fperson%2F%7Bid%7D%2Fchanges)
+ /// </summary>
+ /// <param name="PersonID"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetPersonChanges(int PersonID, object userState, Action<TmdbAsyncResult<TmdbPersonChanges>> callback)
+ {
+ ProcessAsyncRequest<TmdbPersonChanges>(Generator.GetPersonChanges(PersonID, userState), callback);
+ }
+
+ public void GetPersonChangesETag(int PersonID, object userState, Action<TmdbAsyncETagResult> callback)
+ {
+ ProcessAsyncRequestETag(ETagGenerator.GetPersonChanges(PersonID, userState), callback);
+ }
+ #endregion
+
+
+ #region Miscellaneous Movie
+ /// <summary>
+ /// Get the newest movie added to the TMDB.
+ /// (http://help.themoviedb.org/kb/api/latest-movie)
+ /// </summary>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ /// <returns></returns>
+ public void GetLatestMovie(object UserState, Action<TmdbAsyncResult<TmdbLatestMovie>> callback)
+ {
+ //ProcessAsyncRequest<TmdbLatestMovie>(BuildGetLatestMovieRequest(UserState), callback);
+ ProcessAsyncRequest<TmdbLatestMovie>(Generator.GetLatestMovies(UserState), callback);
+ }
+
+ public void GetLatestMovieETag(object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetLatestMovieRequest(UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetLatestMovies(UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of movies currently in theatres. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/now-playing-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetNowPlayingMovies(int page, string language, object UserState, Action<TmdbAsyncResult<TmdbNowPlaying>> callback)
+ {
+ //ProcessAsyncRequest<TmdbNowPlaying>(BuildGetNowPlayingMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbNowPlaying>(Generator.GetNowPlayingMovies(page, language, UserState), callback);
+ }
+
+ public void GetNowPlayingMoviesETag(int page, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetNowPlayingMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetNowPlayingMovies(page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of movies currently in theatres. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/now-playing-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetNowPlayingMovies(int page, object UserState, Action<TmdbAsyncResult<TmdbNowPlaying>> callback)
+ {
+ GetNowPlayingMovies(page, Language, UserState, callback);
+ }
+
+ public void GetNowPlayingMoviesETag(int page, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetNowPlayingMoviesETag(page, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get the daily popularity list of movies. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/popular-movie-list)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPopularMovies(int page, string language, object UserState, Action<TmdbAsyncResult<TmdbPopular>> callback)
+ {
+ //ProcessAsyncRequest<TmdbPopular>(BuildGetPopularMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbPopular>(Generator.GetPopularMovies(page, language, UserState), callback);
+ }
+
+ public void GetPopularMoviesETag(int page, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetPopularMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetPopularMovies(page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the daily popularity list of movies. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/popular-movie-list)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetPopularMovies(int page, object UserState, Action<TmdbAsyncResult<TmdbPopular>> callback)
+ {
+ GetPopularMovies(page, Language, UserState, callback);
+ }
+
+ public void GetPopularMoviesETag(int page, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetPopularMoviesETag(page, Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of movies that have over 10 votes on TMDB. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/top-rated-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetTopRatedMovies(int page, string language, object UserState, Action<TmdbAsyncResult<TmdbTopRated>> callback)
+ {
+ //ProcessAsyncRequest<TmdbTopRated>(BuildGetTopRatedMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbTopRated>(Generator.GetTopRatedMovies(page, language, UserState), callback);
+ }
+
+ public void GetTopRatedMoviesETag(int page, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetTopRatedMoviesRequest(page, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetTopRatedMovies(page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of movies that have over 10 votes on TMDB. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/top-rated-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetTopRatedMovies(int page, object UserState, Action<TmdbAsyncResult<TmdbTopRated>> callback)
+ {
+ GetTopRatedMovies(page, Language, UserState, callback);
+ }
+
+ public void GetTopRatedMoviesETag(int page, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetTopRatedMoviesETag(page, Language, UserState, callback);
+ }
+
+ #endregion
+
+
+ #region Lists Methods
+
+ /// <summary>
+ /// Get a list by id
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Flist%2F%7Bid%7D
+ /// </summary>
+ /// <param name="ListID"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void GetList(string ListID, object UserState, Action<TmdbAsyncResult<TmdbListItem>> callback)
+ {
+ ProcessAsyncRequest<TmdbListItem>(Generator.GetList(ListID, UserState), callback);
+ }
+
+ #endregion
+
+
+ #region Company Info
+ /// <summary>
+ /// Get basic information about a production company from TMDB.
+ /// (http://help.themoviedb.org/kb/api/company-info)
+ /// </summary>
+ /// <param name="CompanyID">Company ID</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCompanyInfo(int CompanyID, object UserState, Action<TmdbAsyncResult<TmdbCompany>> callback)
+ {
+ //ProcessAsyncRequest<TmdbCompany>(BuildGetCompanyInfoRequest(CompanyID, UserState), callback);
+ ProcessAsyncRequest<TmdbCompany>(Generator.GetCompanyInfo(CompanyID, UserState), callback);
+ }
+
+ public void GetCompanyInfoETag(int CompanyID, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetCompanyInfoRequest(CompanyID, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetCompanyInfo(CompanyID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of movies associated with a company. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/company-movies)
+ /// </summary>
+ /// <param name="CompanyID">Company ID</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCompanyMovies(int CompanyID, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbCompanyMovies>> callback)
+ {
+ //ProcessAsyncRequest<TmdbCompanyMovies>(BuildGetCompanyMoviesRequest(CompanyID, page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbCompanyMovies>(Generator.GetCompanyMovies(CompanyID, page, language, UserState), callback);
+ }
+
+ public void GetCompanyMoviesETag(int CompanyID, int page, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetCompanyMoviesRequest(CompanyID, page, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetCompanyMovies(CompanyID, page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of movies associated with a company. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/company-movies)
+ /// </summary>
+ /// <param name="CompanyID">Company ID</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetCompanyMovies(int CompanyID, int page, object UserState, Action<TmdbAsyncResult<TmdbCompanyMovies>> callback)
+ {
+ GetCompanyMovies(CompanyID, page, Language, UserState, callback);
+ }
+
+ public void GetCompanyMoviesETag(int CompanyID, int page, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetCompanyMoviesETag(CompanyID, page, Language, UserState, callback);
+ }
+ #endregion
+
+
+ #region Genre Info
+ /// <summary>
+ /// Get list of genres used in TMDB. The ids will correspond to those found in movie calls.
+ /// (http://help.themoviedb.org/kb/api/genre-list)
+ /// </summary>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetGenreList(string language, object UserState, Action<TmdbAsyncResult<TmdbGenre>> callback)
+ {
+ //ProcessAsyncRequest<TmdbGenre>(BuildGetGenreListRequest(language, UserState), callback);
+ ProcessAsyncRequest<TmdbGenre>(Generator.GetGenreList(language, UserState), callback);
+ }
+
+ public void GetGenreListETag(string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetGenreListRequest(language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetGenreList(language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of genres used in TMDB. The ids will correspond to those found in movie calls.
+ /// (http://help.themoviedb.org/kb/api/genre-list)
+ /// </summary>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetGenreList(object UserState, Action<TmdbAsyncResult<TmdbGenre>> callback)
+ {
+ GetGenreList(Language, UserState, callback);
+ }
+
+ public void GetGenreListETag(object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetGenreListETag(Language, UserState, callback);
+ }
+
+ /// <summary>
+ /// Get list of movies in a Genre. Note that only movies with more than 10 votes get listed.
+ /// (http://help.themoviedb.org/kb/api/genre-movies)
+ /// </summary>
+ /// <param name="GenreID">TMDB Genre ID</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetGenreMovies(int GenreID, int page, string language, object UserState, Action<TmdbAsyncResult<TmdbGenreMovies>> callback)
+ {
+ //ProcessAsyncRequest<TmdbGenreMovies>(BuildGetGenreMoviesRequest(GenreID, page, language, UserState), callback);
+ ProcessAsyncRequest<TmdbGenreMovies>(Generator.GetGenreMovies(GenreID, page, language, UserState), callback);
+ }
+
+ public void GetGenreMoviesETag(int GenreID, int page, string language, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ //ProcessAsyncRequestETag(BuildGetGenreMoviesRequest(GenreID, page, language, UserState), callback);
+ ProcessAsyncRequestETag(ETagGenerator.GetGenreMovies(GenreID, page, language, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get list of movies in a Genre. Note that only movies with more than 10 votes get listed.
+ /// (http://help.themoviedb.org/kb/api/genre-movies)
+ /// </summary>
+ /// <param name="GenreID">TMDB Genre ID</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="UserState">User object to include in callback</param>
+ /// <param name="callback"></param>
+ public void GetGenreMovies(int GenreID, int page, object UserState, Action<TmdbAsyncResult<TmdbGenreMovies>> callback)
+ {
+ GetGenreMovies(GenreID, page, Language, UserState, callback);
+ }
+
+ public void GetGenreMoviesETag(int GenreID, int page, object UserState, Action<TmdbAsyncETagResult> callback)
+ {
+ GetGenreMoviesETag(GenreID, page, Language, UserState, callback);
+ }
+ #endregion
+
+
+ #region Keyword methods
+
+ /// <summary>
+ /// Get the basic information for a specific keyword id.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fkeyword%2F%7Bid%7D
+ /// </summary>
+ /// <param name="KeywordID"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void GetKeyword(int KeywordID, object UserState, Action<TmdbAsyncResult<TmdbKeyword>> callback)
+ {
+ ProcessAsyncRequest<TmdbKeyword>(Generator.GetKeyword(KeywordID, UserState), callback);
+ }
+
+ /// <summary>
+ /// Get the list of movies for a particular keyword by id.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fkeyword%2F%7Bid%7D%2Fmovies
+ /// </summary>
+ /// <param name="KeywordID"></param>
+ /// <param name="page"></param>
+ /// <param name="Language"></param>
+ /// <param name="UserState"></param>
+ /// <param name="callback"></param>
+ public void GetKeywordMovies(int KeywordID, int page, string Language, object UserState, Action<TmdbAsyncResult<TmdbKeywordMovies>> callback)
+ {
+ ProcessAsyncRequest<TmdbKeywordMovies>(Generator.GetKeywordMovies(KeywordID, page, Language, UserState), callback);
+ }
+
+ #endregion
+
+
+ #region Changes methods
+
+ /// <summary>
+ /// Get a list of movie ids that have been edited. By default results include the last 24 hours with
+ /// 100 items per page. Then use the method GetMovieChanges to get the data that has changed.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fmovie%2Fchanges)
+ /// </summary>
+ /// <param name="page"></param>
+ /// <param name="StartDate"></param>
+ /// <param name="EndDate"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetChangesByMovie(int page, DateTime? StartDate, DateTime? EndDate, object userState, Action<TmdbAsyncResult<TmdbChanges>> callback)
+ {
+ ProcessAsyncRequest<TmdbChanges>(Generator.GetChangesByMovie(page, StartDate, EndDate, userState), callback);
+ }
+
+ /// <summary>
+ /// Get a list of person ids that have been edited. By default results include the last 24 hours with
+ /// 100 items per page. Then use the method GetPersonChanges to get the data that has changed.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fperson%2Fchanges)
+ /// </summary>
+ /// <param name="page"></param>
+ /// <param name="StartDate"></param>
+ /// <param name="EndDate"></param>
+ /// <param name="userState"></param>
+ /// <param name="callback"></param>
+ public void GetChangesByPerson(int page, DateTime? StartDate, DateTime? EndDate, object userState, Action<TmdbAsyncResult<TmdbChanges>> callback)
+ {
+ ProcessAsyncRequest<TmdbChanges>(Generator.GetChangesByPerson(page, StartDate, EndDate, userState), callback);
+ }
+
+ #endregion
+ }
+}
View
885 WatTmdb/Tmdb/Tmdb.Sync.cs
@@ -0,0 +1,885 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using RestSharp;
+using System.Net;
+
+namespace WatTmdb.V3
+{
+ public partial class Tmdb
+ {
+ #region Process Execution
+
+ private T ProcessRequest<T>(RestRequest request)
+ where T : new()
+ {
+ var client = new RestClient(BASE_URL);
+ client.AddHandler("application/json", new WatJsonDeserializer());
+
+ if (Timeout.HasValue)
+ client.Timeout = Timeout.Value;
+
+#if !WINDOWS_PHONE
+ if (Proxy != null)
+ client.Proxy = Proxy;
+#endif
+
+ Error = null;
+
+ //request.AddHeader("Accept", "application/json");
+ //request.AddParameter("api_key", ApiKey);
+
+ var resp = client.Execute<T>(request);
+
+ ResponseContent = resp.Content;
+ ResponseHeaders = resp.Headers.ToDictionary(k => k.Name, v => v.Value);
+
+ if (resp.ResponseStatus == ResponseStatus.Completed)
+ {
+ if (resp.Content.Contains("status_message"))
+ Error = Deserializer.Deserialize<TmdbError>(resp);
+
+ return resp.Data;
+ }
+ else
+ {
+ if (resp.Content.Contains("status_message"))
+ Error = Deserializer.Deserialize<TmdbError>(resp);
+ else if (resp.ErrorException != null)
+ throw resp.ErrorException;
+ else
+ Error = new TmdbError { status_message = resp.ErrorMessage };
+ }
+
+ return default(T);
+ }
+
+ private string ProcessRequestETag(RestRequest request)
+ {
+ var client = new RestClient(BASE_URL);
+ if (Timeout.HasValue)
+ client.Timeout = Timeout.Value;
+
+#if !WINDOWS_PHONE
+ if (Proxy != null)
+ client.Proxy = Proxy;
+#endif
+ Error = null;
+
+ request.Method = Method.HEAD;
+ //request.AddHeader("Accept", "application/json");
+ //request.AddParameter("api_key", ApiKey);
+
+ var resp = client.Execute(request);
+ ResponseContent = resp.Content;
+ ResponseHeaders = resp.Headers.ToDictionary(k => k.Name, v => v.Value);
+
+ if (resp.ResponseStatus != ResponseStatus.Completed && resp.ErrorException != null)
+ throw resp.ErrorException;
+
+ return this.ResponseETag;
+ }
+
+ #endregion
+
+
+ #region Configuration
+ /// <summary>
+ /// Retrieve configuration data from TMDB
+ /// (http://help.themoviedb.org/kb/api/configuration)
+ /// </summary>
+ /// <returns></returns>
+ public TmdbConfiguration GetConfiguration()
+ {
+ //return ProcessRequest<TmdbConfiguration>(BuildGetConfigurationRequest());
+ return ProcessRequest<TmdbConfiguration>(Generator.GetConfiguration());
+ }
+
+ public string GetConfigurationETag()
+ {
+ //return ProcessRequestETag(BuildGetConfigurationRequest());
+ return ProcessRequestETag(Generator.GetConfiguration());
+ }
+
+ #endregion
+
+
+ #region Authentication
+
+ /// <summary>
+ /// Generate a valid request token for user based authentication.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Ftoken%2Fnew
+ /// </summary>
+ /// <returns></returns>
+ public TmdbAuthToken GetAuthToken()
+ {
+ return ProcessRequest<TmdbAuthToken>(Generator.GetAuthToken());
+ }
+
+ /// <summary>
+ /// Generate a session id for user based authentication.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Fsession%2Fnew
+ /// </summary>
+ /// <param name="RequestToken"></param>
+ /// <returns></returns>
+ public TmdbAuthSession GetAuthSession(string RequestToken)
+ {
+ return ProcessRequest<TmdbAuthSession>(Generator.GetAuthSession(RequestToken));
+ }
+
+ /// <summary>
+ /// Generate a Guest Session id
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fauthentication%2Fguest_session%2Fnew
+ /// </summary>
+ /// <returns></returns>
+ public TmdbGuestSession GetGuestSession()
+ {
+ return ProcessRequest<TmdbGuestSession>(Generator.GetGuestSession());
+ }
+
+ #endregion
+
+
+ #region Account Methods
+
+ /// <summary>
+ /// Get the basic information for an account.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount
+ /// </summary>
+ /// <param name="SessionID"></param>
+ /// <returns></returns>
+ public TmdbAccount GetAccountInfo(string SessionID)
+ {
+ return ProcessRequest<TmdbAccount>(Generator.GetAccountInfo(SessionID));
+ }
+
+ /// <summary>
+ /// Get the lists that you have created and marked as a favorite.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Flists
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <returns></returns>
+ public TmdbList GetAccountLists(int AccountID, string SessionID, int page, string language = "")
+ {
+ return ProcessRequest<TmdbList>(Generator.GetAccountLists(AccountID, SessionID, page, language));
+ }
+
+ /// <summary>
+ /// Get the list of favourite movies for an account
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Ffavorite_movies
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <returns></returns>
+ public TmdbAccountMovies GetAccountFavouriteMovies(int AccountID, string SessionID, int page, string language = "")
+ {
+ return ProcessRequest<TmdbAccountMovies>(Generator.GetAccountFavouriteMovies(AccountID, SessionID, page, language));
+ }
+
+ /// <summary>
+ /// Get the list of rated movies for an account
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Frated_movies
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <returns></returns>
+ public TmdbAccountMovies GetAccountRatedMovies(int AccountID, string SessionID, int page, string language = "")
+ {
+ return ProcessRequest<TmdbAccountMovies>(Generator.GetAccountRatedMovies(AccountID, SessionID, page, language));
+ }
+
+ /// <summary>
+ /// Get the list of movies on an accounts watchlist
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Faccount%2F%7Bid%7D%2Fmovie_watchlist
+ /// </summary>
+ /// <param name="AccountID"></param>
+ /// <param name="SessionID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <returns></returns>
+ public TmdbAccountMovies GetAccountWatchlistMovies(int AccountID, string SessionID, int page, string language = "")
+ {
+ return ProcessRequest<TmdbAccountMovies>(Generator.GetAccountWatchlistMovies(AccountID, SessionID, page, language));
+ }
+
+ #endregion
+
+
+ #region Search
+ /// <summary>
+ /// Search for movies that are listed in TMDB
+ /// (http://help.themoviedb.org/kb/api/search-movies)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <param name="includeAdult">optional - include adult items in your search, (Default=false)</param>
+ /// <param name="year">optional - to get a closer result</param>
+ /// <returns></returns>
+ public TmdbMovieSearch SearchMovie(string query, int page, string language = "", bool? includeAdult = null, int? year = null)
+ {
+ if (string.IsNullOrEmpty(query))
+ throw new ArgumentException("Search must be supplied");
+
+ //return ProcessRequest<TmdbMovieSearch>(BuildSearchMovieRequest(query, page, language, includeAdult, year));
+ return ProcessRequest<TmdbMovieSearch>(Generator.SearchMovie(query, page, language, includeAdult, year));
+ }
+
+ /// <summary>
+ /// Search for people that are listed in TMDB.
+ /// (http://help.themoviedb.org/kb/api/search-people)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbPersonSearch SearchPerson(string query, int page, string language = "")
+ {
+ if (string.IsNullOrEmpty(query))
+ throw new ArgumentException("Search must be supplied");
+
+ //return ProcessRequest<TmdbPersonSearch>(BuildSearchPersonRequest(query, page, language));
+ return ProcessRequest<TmdbPersonSearch>(Generator.SearchPerson(query, page, language));
+ }
+
+ /// <summary>
+ /// Search for production companies that are part of TMDB.
+ /// (http://help.themoviedb.org/kb/api/search-companies)
+ /// </summary>
+ /// <param name="query">Is your search text.</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <returns></returns>
+ public TmdbCompanySearch SearchCompany(string query, int page)
+ {
+ if (string.IsNullOrEmpty(query))
+ throw new ArgumentException("Search must be supplied");
+
+ //return ProcessRequest<TmdbCompanySearch>(BuildSearchCompanyRequest(query, page));
+ return ProcessRequest<TmdbCompanySearch>(Generator.SearchCompany(query, page));
+ }
+
+ /// <summary>
+ /// Search for keywords by name.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fsearch%2Fkeyword
+ /// </summary>
+ /// <param name="query"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public TmdbKeywordSearch SearchKeyword(string query, int page)
+ {
+ if (string.IsNullOrEmpty(query))
+ throw new ArgumentException("Search must be supplied");
+
+ return ProcessRequest<TmdbKeywordSearch>(Generator.SearchKeyword(query, page));
+ }
+
+ /// <summary>
+ /// Search for collections by name
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fsearch%2Fcollection
+ /// </summary>
+ /// <param name="query"></param>
+ /// <param name="page"></param>
+ /// <returns></returns>
+ public TmdbCollectionSearch SearchCollection(string query, int page, string language = "")
+ {
+ if (string.IsNullOrEmpty(query))
+ throw new ArgumentException("Search must be supplied");
+
+ return ProcessRequest<TmdbCollectionSearch>(Generator.SearchCollection(query, page, language));
+ }
+
+ #endregion
+
+
+ #region Collections
+ /// <summary>
+ /// Get all of the basic information about a movie collection.
+ /// (http://help.themoviedb.org/kb/api/collection-info)
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbCollection GetCollectionInfo(int CollectionID, string language = "")
+ {
+ //return ProcessRequest<TmdbCollection>(BuildGetCollectionInfoRequest(CollectionID, language));
+ return ProcessRequest<TmdbCollection>(Generator.GetCollectionInfo(CollectionID, language));
+ }
+
+ public string GetCollectionInfoETag(int CollectionID, string language = "")
+ {
+ //return ProcessRequestETag(BuildGetCollectionInfoRequest(CollectionID, language));
+ return ProcessRequestETag(ETagGenerator.GetCollectionInfo(CollectionID, language));
+ }
+
+ /// <summary>
+ /// Get all the images for a movie collection
+ /// http://help.themoviedb.org/kb/api/collection-images
+ /// </summary>
+ /// <param name="CollectionID">Collection ID, available in TmdbMovie::belongs_to_collection</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbCollectionImages GetCollectionImages(int CollectionID, string language = "")
+ {
+ //return ProcessRequest<TmdbCollectionImages>(BuildGetCollectionImagesRequest(CollectionID, language));
+ return ProcessRequest<TmdbCollectionImages>(Generator.GetCollectionImages(CollectionID, language));
+ }
+
+ public string GetCollectionImagesETag(int CollectionID, string language = "")
+ {
+ //return ProcessRequestETag(BuildGetCollectionImagesRequest(CollectionID, language));
+ return ProcessRequestETag(ETagGenerator.GetCollectionImages(CollectionID, language));
+ }
+
+ #endregion
+
+
+ #region Movie Info
+ /// <summary>
+ /// Retrieve all the basic movie information for a particular movie by TMDB reference.
+ /// (http://help.themoviedb.org/kb/api/movie-info)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbMovie GetMovieInfo(int MovieID, string language = "")
+ {
+ //return ProcessRequest<TmdbMovie>(BuildGetMovieInfoRequest(MovieID, language));
+ return ProcessRequest<TmdbMovie>(Generator.GetMovieInfo(MovieID, language));
+ }
+
+ public string GetMovieInfoETag(int MovieID, string language = "")
+ {
+ //return ProcessRequestETag(BuildGetMovieInfoRequest(MovieID, language));
+ return ProcessRequestETag(ETagGenerator.GetMovieInfo(MovieID, language));
+ }
+
+ /// <summary>
+ /// Retrieve all the basic movie information for a particular movie by IMDB reference.
+ /// (http://help.themoviedb.org/kb/api/movie-info)
+ /// </summary>
+ /// <param name="imdbId">IMDB movie id</param>
+ /// <returns></returns>
+ public TmdbMovie GetMovieByIMDB(string imdbId, string language = "")
+ {
+ if (string.IsNullOrEmpty(imdbId))
+ throw new ArgumentException("IMDB_ID must be supplied");
+
+ //return ProcessRequest<TmdbMovie>(BuildGetMovieByIMDBRequest(imdbId, language));
+ return ProcessRequest<TmdbMovie>(Generator.GetMovieByIMDB(imdbId, language));
+ }
+
+ /// <summary>
+ /// Get list of all the alternative titles for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-alternative-titles)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="Country">ISO 3166-1 country code (optional)</param>
+ /// <returns></returns>
+ public TmdbMovieAlternateTitles GetMovieAlternateTitles(int MovieID, string Country)
+ {
+ //return ProcessRequest<TmdbMovieAlternateTitles>(BuildGetMovieAlternateTitlesRequest(MovieID, Country));
+ return ProcessRequest<TmdbMovieAlternateTitles>(Generator.GetMovieAlternateTitles(MovieID, Country));
+ }
+
+ public string GetMovieAlternateTitlesETag(int MovieID, string Country)
+ {
+ //return ProcessRequestETag(BuildGetMovieAlternateTitlesRequest(MovieID, Country));
+ return ProcessRequestETag(ETagGenerator.GetMovieAlternateTitles(MovieID, Country));
+ }
+
+ /// <summary>
+ /// Get list of all the cast information for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-casts)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <returns></returns>
+ public TmdbMovieCast GetMovieCast(int MovieID)
+ {
+ //return ProcessRequest<TmdbMovieCast>(BuildGetMovieCastRequest(MovieID));
+ return ProcessRequest<TmdbMovieCast>(Generator.GetMovieCast(MovieID));
+ }
+
+ public string GetMovieCastETag(int MovieID)
+ {
+ //return ProcessRequestETag(BuildGetMovieCastRequest(MovieID));
+ return ProcessRequestETag(ETagGenerator.GetMovieCast(MovieID));
+ }
+
+ /// <summary>
+ /// Get list of all the images for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-images)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbMovieImages GetMovieImages(int MovieID, string language = "")
+ {
+ //return ProcessRequest<TmdbMovieImages>(BuildGetMovieImagesRequest(MovieID, language));
+ return ProcessRequest<TmdbMovieImages>(Generator.GetMovieImages(MovieID, language));
+ }
+
+ public string GetMovieImagesETag(int MovieID, string language = "")
+ {
+ //return ProcessRequestETag(BuildGetMovieImagesRequest(MovieID, language));
+ return ProcessRequestETag(ETagGenerator.GetMovieImages(MovieID, language));
+ }
+
+ /// <summary>
+ /// Get list of all the keywords that have been added to a particular movie. Only English keywords exist currently.
+ /// (http://help.themoviedb.org/kb/api/movie-keywords)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <returns></returns>
+ public TmdbMovieKeywords GetMovieKeywords(int MovieID)
+ {
+ //return ProcessRequest<TmdbMovieKeywords>(BuildGetMovieKeywordsRequest(MovieID));
+ return ProcessRequest<TmdbMovieKeywords>(Generator.GetMovieKeywords(MovieID));
+ }
+
+ public string GetMovieKeywordsETag(int MovieID)
+ {
+ //return ProcessRequestETag(BuildGetMovieKeywordsRequest(MovieID));
+ return ProcessRequestETag(ETagGenerator.GetMovieKeywords(MovieID));
+ }
+
+ /// <summary>
+ /// Get all the release and certification data in TMDB for a particular movie
+ /// (http://help.themoviedb.org/kb/api/movie-release-info)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <returns></returns>
+ public TmdbMovieReleases GetMovieReleases(int MovieID)
+ {
+ //return ProcessRequest<TmdbMovieReleases>(BuildGetMovieReleasesRequest(MovieID));
+ return ProcessRequest<TmdbMovieReleases>(Generator.GetMovieReleases(MovieID));
+ }
+
+ public string GetMovieReleasesETag(int MovieID)
+ {
+ //return ProcessRequestETag(BuildGetMovieReleasesRequest(MovieID));
+ return ProcessRequestETag(ETagGenerator.GetMovieReleases(MovieID));
+ }
+
+ /// <summary>
+ /// Get list of trailers for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-trailers)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbMovieTrailers GetMovieTrailers(int MovieID, string language = "")
+ {
+ //return ProcessRequest<TmdbMovieTrailers>(BuildGetMovieTrailersRequest(MovieID, language));
+ return ProcessRequest<TmdbMovieTrailers>(Generator.GetMovieTrailers(MovieID, language));
+ }
+
+ public string GetMovieTrailersETag(int MovieID, string language = "")
+ {
+ //return ProcessRequestETag(BuildGetMovieTrailersRequest(MovieID, language));
+ return ProcessRequestETag(ETagGenerator.GetMovieTrailers(MovieID, language));
+ }
+
+ /// <summary>
+ /// Get list of similar movies for a particular movie.
+ /// (http://help.themoviedb.org/kb/api/movie-similar-movies)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbSimilarMovies GetSimilarMovies(int MovieID, int page, string language = null)
+ {
+ //return ProcessRequest<TmdbSimilarMovies>(BuildGetSimilarMoviesRequest(MovieID, page, language));
+ return ProcessRequest<TmdbSimilarMovies>(Generator.GetSimilarMovies(MovieID, page, language));
+ }
+
+ /// <summary>
+ /// Get list of all available translations for a specific movie.
+ /// (http://help.themoviedb.org/kb/api/movie-translations)
+ /// </summary>
+ /// <param name="MovieID">TMDB movie id</param>
+ /// <returns></returns>
+ public TmdbTranslations GetMovieTranslations(int MovieID)
+ {
+ //return ProcessRequest<TmdbTranslations>(BuildGetMovieTranslationsRequest(MovieID));
+ return ProcessRequest<TmdbTranslations>(Generator.GetMovieTranslations(MovieID));
+ }
+
+ public string GetMovieTranslationsETag(int MovieID)
+ {
+ //return ProcessRequestETag(BuildGetMovieTranslationsRequest(MovieID));
+ return ProcessRequestETag(ETagGenerator.GetMovieTranslations(MovieID));
+ }
+
+ /// <summary>
+ /// Get the lists that the movie belongs to.
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Fmovie%2F%7Bid%7D%2Flists
+ /// </summary>
+ /// <param name="MovieID"></param>
+ /// <param name="page"></param>
+ /// <param name="language"></param>
+ /// <returns></returns>
+ public TmdbList GetMovieLists(int MovieID, int page, string language = null)
+ {
+ return ProcessRequest<TmdbList>(Generator.GetMovieLists(MovieID, page, language));
+ }
+
+ /// <summary>
+ /// Get list of changes for a specific movie, grouped by key and ordered by date in descending order.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fmovie%2F%7Bid%7D%2Fchanges)
+ /// </summary>
+ /// <param name="MovieID">TMDB Movie ID</param>
+ /// <returns></returns>
+ public TmdbMovieChanges GetMovieChanges(int MovieID)
+ {
+ return ProcessRequest<TmdbMovieChanges>(Generator.GetMovieChanges(MovieID));
+ }
+
+ public string GetMovieChangesETag(int MovieID)
+ {
+ return ProcessRequestETag(ETagGenerator.GetMovieChanges(MovieID));
+ }
+ #endregion
+
+
+ #region Person Info
+ /// <summary>
+ /// Get all of the basic information for a person.
+ /// (http://help.themoviedb.org/kb/api/person-info)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <returns></returns>
+ public TmdbPerson GetPersonInfo(int PersonID)
+ {
+ //return ProcessRequest<TmdbPerson>(BuildGetPersonInfoRequest(PersonID));
+ return ProcessRequest<TmdbPerson>(Generator.GetPersonInfo(PersonID));
+ }
+
+ public string GetPersonInfoETag(int PersonID)
+ {
+ //return ProcessRequestETag(BuildGetPersonInfoRequest(PersonID));
+ return ProcessRequestETag(ETagGenerator.GetPersonInfo(PersonID));
+ }
+
+ /// <summary>
+ /// Get list of cast and crew information for a person.
+ /// (http://help.themoviedb.org/kb/api/person-credits)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbPersonCredits GetPersonCredits(int PersonID, string language = null)
+ {
+ //return ProcessRequest<TmdbPersonCredits>(BuildGetPersonCreditsRequest(PersonID, language));
+ return ProcessRequest<TmdbPersonCredits>(Generator.GetPersonCredits(PersonID, language));
+ }
+
+ public string GetPersonCreditsETag(int PersonID, string language = null)
+ {
+ //return ProcessRequestETag(BuildGetPersonCreditsRequest(PersonID, language));
+ return ProcessRequestETag(ETagGenerator.GetPersonCredits(PersonID, language));
+ }
+
+ /// <summary>
+ /// Get list of images for a person.
+ /// (http://help.themoviedb.org/kb/api/person-images)
+ /// </summary>
+ /// <param name="PersonID">Person ID</param>
+ /// <returns></returns>
+ public TmdbPersonImages GetPersonImages(int PersonID)
+ {
+ //return ProcessRequest<TmdbPersonImages>(BuildGetPersonImagesRequest(PersonID));
+ return ProcessRequest<TmdbPersonImages>(Generator.GetPersonImages(PersonID));
+ }
+
+ public string GetPersonImagesETag(int PersonID)
+ {
+ //return ProcessRequestETag(BuildGetPersonImagesRequest(PersonID));
+ return ProcessRequestETag(ETagGenerator.GetPersonImages(PersonID));
+ }
+
+ /// <summary>
+ /// Get the list of changes for a specific person. Changes are grouped by key and ordered by date in descending order.
+ /// (http://docs.themoviedb.apiary.io/#get-%2F3%2Fperson%2F%7Bid%7D%2Fchanges)
+ /// </summary>
+ /// <param name="PersonID"></param>
+ /// <returns></returns>
+ public TmdbPersonChanges GetPersonChanges(int PersonID)
+ {
+ return ProcessRequest<TmdbPersonChanges>(Generator.GetPersonChanges(PersonID));
+ }
+
+ public string GetPersonChangesETag(int PersonID)
+ {
+ return ProcessRequestETag(ETagGenerator.GetPersonChanges(PersonID));
+ }
+ #endregion
+
+
+ #region Miscellaneous Movie
+ /// <summary>
+ /// Get the newest movie added to the TMDB.
+ /// (http://help.themoviedb.org/kb/api/latest-movie)
+ /// </summary>
+ /// <returns></returns>
+ public TmdbLatestMovie GetLatestMovie()
+ {
+ //return ProcessRequest<TmdbLatestMovie>(BuildGetLatestMovieRequest());
+ return ProcessRequest<TmdbLatestMovie>(Generator.GetLatestMovies());
+ }
+
+ public string GetLatestMovieETag()
+ {
+ //return ProcessRequestETag(BuildGetLatestMovieRequest());
+ return ProcessRequestETag(ETagGenerator.GetLatestMovies());
+ }
+
+ /// <summary>
+ /// Get the list of movies currently in theatres. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/now-playing-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbNowPlaying GetNowPlayingMovies(int page, string language = "")
+ {
+ //return ProcessRequest<TmdbNowPlaying>(BuildGetNowPlayingMoviesRequest(page, language));
+ return ProcessRequest<TmdbNowPlaying>(Generator.GetNowPlayingMovies(page, language));
+ }
+
+ public string GetNowPlayingMoviesETag(int page, string language = null)
+ {
+ //return ProcessRequestETag(BuildGetNowPlayingMoviesRequest(page, language));
+ return ProcessRequestETag(ETagGenerator.GetNowPlayingMovies(page, language));
+ }
+
+ /// <summary>
+ /// Get the daily popularity list of movies. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/popular-movie-list)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbPopular GetPopularMovies(int page, string language = null)
+ {
+ //return ProcessRequest<TmdbPopular>(BuildGetPopularMoviesRequest(page, language));
+ return ProcessRequest<TmdbPopular>(Generator.GetPopularMovies(page, language));
+ }
+
+ public string GetPopularMoviesETag(int page, string language = null)
+ {
+ //return ProcessRequestETag(BuildGetPopularMoviesRequest(page, language));
+ return ProcessRequestETag(ETagGenerator.GetPopularMovies(page, language));
+ }
+
+ /// <summary>
+ /// Get list of movies that have over 10 votes on TMDB. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/top-rated-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbTopRated GetTopRatedMovies(int page, string language = null)
+ {
+ //return ProcessRequest<TmdbTopRated>(BuildGetTopRatedMoviesRequest(page, language));
+ return ProcessRequest<TmdbTopRated>(Generator.GetTopRatedMovies(page, language));
+ }
+
+ public string GetTopRatedMoviesETag(int page, string language = null)
+ {
+ //return ProcessRequestETag(BuildGetTopRatedMoviesRequest(page, language));
+ return ProcessRequestETag(ETagGenerator.GetTopRatedMovies(page, language));
+ }
+
+ /// <summary>
+ /// Get list of movies that are arriving to theatres in the next few weeks.
+ /// (http://help.themoviedb.org/kb/api/upcoming-movies)
+ /// </summary>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbUpcoming GetUpcomingMovies(int page, string language = null)
+ {
+ //return ProcessRequest<TmdbUpcoming>(BuildGetUpcomingMoviesRequest(page, language));
+ return ProcessRequest<TmdbUpcoming>(Generator.GetUpcomingMovies(page, language));
+ }
+
+ public string GetUpcomingMoviesETag(int page, string language = null)
+ {
+ //return ProcessRequestETag(BuildGetUpcomingMoviesRequest(page, language));
+ return ProcessRequestETag(ETagGenerator.GetUpcomingMovies(page, language));
+ }
+
+ #endregion
+
+
+ #region Lists Methods
+
+ /// <summary>
+ /// Get a list by id
+ /// http://docs.themoviedb.apiary.io/#get-%2F3%2Flist%2F%7Bid%7D
+ /// </summary>
+ /// <param name="ListID"></param>
+ /// <returns></returns>
+ public TmdbListItem GetList(string ListID)
+ {
+ return ProcessRequest<TmdbListItem>(Generator.GetList(ListID));
+ }
+
+ #endregion
+
+
+ #region Company Info
+ /// <summary>
+ /// Get basic information about a production company from TMDB.
+ /// (http://help.themoviedb.org/kb/api/company-info)
+ /// </summary>
+ /// <param name="CompanyID">Company ID</param>
+ /// <returns></returns>
+ public TmdbCompany GetCompanyInfo(int CompanyID)
+ {
+ //return ProcessRequest<TmdbCompany>(BuildGetCompanyInfoRequest(CompanyID));
+ return ProcessRequest<TmdbCompany>(Generator.GetCompanyInfo(CompanyID));
+ }
+
+ public string GetCompanyInfoETag(int CompanyID)
+ {
+ //return ProcessRequestETag(BuildGetCompanyInfoRequest(CompanyID));
+ return ProcessRequestETag(ETagGenerator.GetCompanyInfo(CompanyID));
+ }
+
+ /// <summary>
+ /// Get list of movies associated with a company. Response will contain 20 movies per page.
+ /// (http://help.themoviedb.org/kb/api/company-movies)
+ /// </summary>
+ /// <param name="CompanyID">Company ID</param>
+ /// <param name="page">Result page to retrieve (1 based)</param>
+ /// <param name="language">optional - ISO 639-1 language code</param>
+ /// <returns></returns>
+ public TmdbCompanyMovies GetCompanyMovies(int CompanyID, int page, string language = null)
+ {