Skip to content

Commit

Permalink
Merge pull request stack72#15 from SimonBartlett/master
Browse files Browse the repository at this point in the history
Time is returned as System.DateTime
  • Loading branch information
stack72 committed Jan 26, 2012
2 parents 1ea3a62 + e242a6a commit 90ee07d
Show file tree
Hide file tree
Showing 9 changed files with 109 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public List<ProjectModel> GetAllProjectSummary()
ProjectName = proj.Name,
ProjectId = proj.Id,
BuildConfigName = currentConfig.Name,
LastBuildTime = DateTime.ParseExact(build.StartDate, "yyyyMMddTHHmmsszzzzz", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy HH:mm:ss"),
LastBuildTime = build.StartDate.ToString("dd/MM/yyyy HH:mm:ss"),
LastBuildStatus = build.Status,
LastBuildStatusText = build.StatusText
};
Expand Down
2 changes: 1 addition & 1 deletion src/TeamCitySharp/Connection/TeamCityCaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ private string CreateUrl(string urlPart)

HttpClient CreateHttpRequest(string userName, string password)
{
var httpClient = new HttpClient();
var httpClient = new HttpClient(new TeamcityJsonEncoderDecoderConfiguration());
httpClient.Request.Accept = HttpContentTypes.ApplicationJson;
httpClient.Request.SetBasicAuthentication(userName, password);
httpClient.Request.ForceBasicAuth = true;
Expand Down
54 changes: 54 additions & 0 deletions src/TeamCitySharp/Connection/TeamCityDateFilter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using JsonFx.IO;
using JsonFx.Model;
using JsonFx.Model.Filters;
using JsonFx.Serialization;

namespace TeamCitySharp.Connection
{
public class TeamCityDateFilter : ModelFilter<DateTime>
{
private const string DateFormat = "yyyyMMddTHHmmsszz00";

public override bool TryRead(DataReaderSettings settings, IStream<Token<ModelTokenType>> tokens, out DateTime value)
{
var token = tokens.Peek();
if (token == null || token.TokenType != ModelTokenType.Primitive || !(token.Value is string))
{
value = default(DateTime);
return false;
}

if (!TryParseDate(token.ValueAsString(), out value))
{
value = default(DateTime);
return false;
}

tokens.Pop();
return true;
}

public override bool TryWrite(DataWriterSettings settings, DateTime value, out IEnumerable<Token<ModelTokenType>> tokens)
{
tokens = new Token<ModelTokenType>[]
{
ModelGrammar.TokenPrimitive(FormatDate(value))
};

return true;
}

internal static bool TryParseDate(string date, out DateTime value)
{
return DateTime.TryParseExact(date, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out value);
}

private static string FormatDate(DateTime value)
{
return value.ToString(DateFormat);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System.Collections.Generic;
using EasyHttp.Codecs;
using EasyHttp.Codecs.JsonFXExtensions;
using EasyHttp.Configuration;
using JsonFx.Json;
using JsonFx.Serialization;

namespace TeamCitySharp.Connection
{
public class TeamcityJsonEncoderDecoderConfiguration : IEncoderDecoderConfiguration
{
public IEncoder GetEncoder()
{
var jsonWriter = new JsonWriter(new DataWriterSettings(DefaultEncoderDecoderConfiguration.CombinedResolverStrategy()
, new TeamCityDateFilter()), new[] { "application/.*json", "text/.*json" });

var writers = new List<IDataWriter> { jsonWriter };
var dataWriterProvider = new RegExBasedDataWriterProvider(new List<IDataWriter> { jsonWriter });
return new DefaultEncoder(dataWriterProvider);
}

public IDecoder GetDecoder()
{
var jsonReader = new JsonReader(new DataReaderSettings(DefaultEncoderDecoderConfiguration.CombinedResolverStrategy()
, new TeamCityDateFilter()), new[] { "application/.*json", "text/.*json" });

var readers = new List<IDataReader> { jsonReader };
var dataReaderProvider = new RegExBasedDataReaderProvider(readers);
return new DefaultDecoder(dataReaderProvider);
}
}
}
8 changes: 5 additions & 3 deletions src/TeamCitySharp/DomainEntities/Build.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace TeamCitySharp.DomainEntities
using System;

namespace TeamCitySharp.DomainEntities
{
public class Build
{
Expand All @@ -9,8 +11,8 @@ public class Build
public string Href { get; set; }
public string WebUrl { get; set; }
public string StatusText { get; set; }
public string StartDate { get; set; }
public string FinishDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime FinishDate { get; set; }

public BuildConfig BuildConfig { get; set; }
public Agent Agent { get; set;}
Expand Down
8 changes: 5 additions & 3 deletions src/TeamCitySharp/DomainEntities/Change.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
namespace TeamCitySharp.DomainEntities
using System;

namespace TeamCitySharp.DomainEntities
{
public class Change
{
public string Username { get; set; }
public string WebLink { get; set; }
public string Href { get; set; }
public string Id { get; set; }
public string Version { get; set; }
public string Date { get; set; }
public string Version { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }

public FileWrapper Files { get; set; }
Expand Down
8 changes: 5 additions & 3 deletions src/TeamCitySharp/DomainEntities/Server.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
namespace TeamCitySharp.DomainEntities
using System;

namespace TeamCitySharp.DomainEntities
{
public class Server
{
public string VersonMajor { get; set; }
public string Version { get; set; }
public string BuildNumber { get; set; }
public string CurrentTime { get; set; }
public string StartTime { get; set; }
public DateTime CurrentTime { get; set; }
public DateTime StartTime { get; set; }
}
}
6 changes: 4 additions & 2 deletions src/TeamCitySharp/DomainEntities/VcsRoot.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace TeamCitySharp.DomainEntities
using System;

namespace TeamCitySharp.DomainEntities
{
public class VcsRoot
{
Expand All @@ -8,7 +10,7 @@ public class VcsRoot
public string Name { get; set; }
public string Version { get; set; }
public string Status { get; set; }
public string lastChecked { get; set; }
public DateTime lastChecked { get; set; }

public override string ToString()
{
Expand Down
2 changes: 2 additions & 0 deletions src/TeamCitySharp/TeamCitySharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
<Compile Include="BuildTypeLocator.cs" />
<Compile Include="Connection\IClientConnection.cs" />
<Compile Include="Connection\TeamCityCaller.cs" />
<Compile Include="Connection\TeamCityDateFilter.cs" />
<Compile Include="Connection\TeamcityJsonEncoderDecoderConfiguration.cs" />
<Compile Include="DomainEntities\Agent.cs" />
<Compile Include="DomainEntities\AgentWrapper.cs" />
<Compile Include="DomainEntities\Build.cs" />
Expand Down

0 comments on commit 90ee07d

Please sign in to comment.