Skip to content

Commit

Permalink
Merge pull request DotNetDevs#114 from DotNetDevs/dev
Browse files Browse the repository at this point in the history
Update README.md
  • Loading branch information
matteobruni authored Mar 19, 2018
2 parents e004599 + 478e953 commit 21ff2f3
Show file tree
Hide file tree
Showing 248 changed files with 2,122 additions and 1,405 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ Thumbs.db

#dotCover
*.dotCover
.vs/
25 changes: 0 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,35 +53,10 @@ Progress
<th>
Synology
</th>
<th>
Api
</th>
<th>
DownloadStation
</th>
<th>
DownloadStation2
</th>
<th>
FileStation
</th>
<th>
SurveillanceStation
</th>
</tr>
<tr>
<td>
<a href="https://badge.fury.io/nu/Synology"><img src="https://badge.fury.io/nu/Synology.svg" alt="NuGet version"></a>
</td><td>
<a href="https://badge.fury.io/nu/Synology.Api"><img src="https://badge.fury.io/nu/Synology.Api.svg" alt="NuGet version"></a>
</td><td>
<a href="https://badge.fury.io/nu/Synology.DownloadStation"><img src="https://badge.fury.io/nu/Synology.DownloadStation.svg" alt="NuGet version"></a>
</td><td>
<a href="https://badge.fury.io/nu/Synology.DownloadStation2"><img src="https://badge.fury.io/nu/Synology.DownloadStation2.svg" alt="NuGet version"></a>
</td><td>
<a href="https://badge.fury.io/nu/Synology.FileStation"><img src="https://badge.fury.io/nu/Synology.FileStation.svg" alt="NuGet version"></a>
</td><td>
<a href="https://badge.fury.io/nu/Synology.SurveillanceStation"><img src="https://badge.fury.io/nu/Synology.SurveillanceStation.svg" alt="NuGet version"></a>
</td>
</tr>
</table>
Expand Down
2 changes: 1 addition & 1 deletion Synology/Api/Api.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Synology.Api
{
class Api : SynologyApi, IApi
internal class Api : SynologyApi, IApi
{
public Api(ISynologyConnection connection) : base(connection)
{
Expand Down
14 changes: 11 additions & 3 deletions Synology/Api/Auth/ApiAuthExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,20 @@
using Synology.Extensions;

namespace Synology
{
{
/// <summary>
///
/// </summary>
public static class ApiAuthExtension
{
{
/// <summary>
///
/// </summary>
/// <param name="api"></param>
/// <returns></returns>
public static IAuthRequest Auth(this IApi api)
{
return RequestExtension<IAuthRequest>.Request(api);
return api.Request<IAuthRequest>();
}
}
}
104 changes: 53 additions & 51 deletions Synology/Api/Auth/AuthRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,60 +3,62 @@
using Synology.Api.Auth.Parameters;
using Synology.Api.Auth.Results;
using Synology.Attributes;
using Synology.Interfaces;
using Synology.Parameters;
using Synology.Extensions;

namespace Synology.Api.Auth
{
[Request("Auth")]
internal sealed class AuthRequest : MainApiRequest, IAuthRequest
{
private string _sessionNumber;

public AuthRequest(IApi api) : base(api)
{
}

[RequestMethod("login")]
public ResultData<AuthResult> Login(LoginParameters parameters = null)
{
parameters = parameters ?? new LoginParameters
{
Username = Api.Connection.Settings.Username,
Password = Api.Connection.Settings.Password
};

_sessionNumber = parameters.SessionName;

var result = GetData<AuthResult>(new SynologyRequestParameters(this)
{
Version = 4,
Additional = parameters
});

if (result.Success && !string.IsNullOrWhiteSpace(result.Data?.Sid))
Api.Connection.SetSid(result.Data.Sid);

return result;
}

[RequestMethod("logout")]
public ResultData Logout()
{
var parameters = new[] {
new QueryStringParameter("session", _sessionNumber),
};

var result = GetData(new SynologyRequestParameters(this)
{
Additional = parameters
});

if (result.Success)
Api.Connection.SetSid(null);

return result;
}
}
/// <inheritdoc cref="MainApiRequest" />
/// <summary>
/// </summary>
[Request("Auth")]
internal sealed class AuthRequest : MainApiRequest, IAuthRequest
{
private string _sessionNumber;

public AuthRequest(IApi api) : base(api)
{
}

[RequestMethod("login")]
public ResultData<AuthResult> Login(LoginParameters parameters = null)
{
parameters = parameters ?? new LoginParameters
{
Username = Api.Connection.Settings.Username,
Password = Api.Connection.Settings.Password
};

_sessionNumber = parameters.SessionName;

var result = GetData<AuthResult>(new SynologyRequestParameters(this)
{
Version = 4,
Additional = parameters
});

if (result.Success && !string.IsNullOrWhiteSpace(result.Data?.Sid))
Api.Connection.SetSid(result.Data?.Sid);

return result;
}

[RequestMethod("logout")]
public ResultData Logout()
{
var parameters = new[] {
new QueryStringParameter("session", _sessionNumber),
};

var result = GetData(new SynologyRequestParameters(this)
{
Additional = parameters
});

if (result.Success)
Api.Connection.SetSid(null);

return result;
}
}
}
26 changes: 18 additions & 8 deletions Synology/Api/Auth/IAuthRequest.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
using System;
using Synology.Api.Auth.Parameters;
using Synology.Api.Auth.Parameters;
using Synology.Api.Auth.Results;
using Synology.Attributes;
using Synology.Classes;
using Synology.Interfaces;

namespace Synology.Api.Auth
{
public interface IAuthRequest : ISynologyRequest
{
ResultData<AuthResult> Login(LoginParameters parameters = null);
/// <summary>
///
/// </summary>
public interface IAuthRequest : ISynologyRequest
{
/// <summary>
///
/// </summary>
/// <param name="parameters"></param>
/// <returns></returns>
ResultData<AuthResult> Login(LoginParameters parameters = null);

ResultData Logout();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
ResultData Logout();
}
}
9 changes: 9 additions & 0 deletions Synology/Api/Auth/Parameters/AuthFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@

namespace Synology.Api.Auth.Parameters
{
/// <summary>
///
/// </summary>
public enum AuthFormat
{
/// <summary>
///
/// </summary>
[Description("cookie")]
Cookie,
/// <summary>
///
/// </summary>
[Description("sid")]
Sid
}
Expand Down
39 changes: 32 additions & 7 deletions Synology/Api/Auth/Parameters/LoginParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,55 @@

namespace Synology.Api.Auth.Parameters
{
/// <summary>
///
/// </summary>
public class LoginParameters : RequestParameters
{
/// <summary>
///
/// </summary>
[Required]
[Description("account")]
[JsonProperty("account")]
[JsonProperty("account")]
[MinVersion(1)]
public string Username { get; set; }

/// <summary>
///
/// </summary>
[Required]
[Description("passwd")]
[JsonProperty("passwd")]
[JsonProperty("passwd")]
[MinVersion(1)]
public string Password { get; set; }

/// <summary>
///
/// </summary>
[Description("otp_code")]
[JsonProperty("otp_code")]
public string OtpCode { get; set; }
[JsonProperty("otp_code")]
public string OtpCode { get; set; }

/// <summary>
///
/// </summary>
[Required]
[Description("session")]
[JsonProperty("session")]
public string SessionName { get; set; }
[JsonProperty("session")]
public string SessionName { get; set; }

/// <summary>
///
/// </summary>
[Required]
[Description("format")]
[JsonProperty("format")]
[JsonProperty("format")]
public AuthFormat Format { get; set; }

/// <summary>
///
/// </summary>
public LoginParameters()
{
var rand = new Random((int)DateTime.Now.Ticks);
Expand All @@ -45,6 +66,10 @@ public LoginParameters()
Format = AuthFormat.Sid;
}

/// <summary>
///
/// </summary>
/// <returns></returns>
public override QueryStringParameter[] Parameters()
{
return new[] {
Expand Down
8 changes: 7 additions & 1 deletion Synology/Api/Auth/Results/AuthResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@

namespace Synology.Api.Auth.Results
{
/// <summary>
///
/// </summary>
public class AuthResult
{
[JsonProperty("sid")]
/// <summary>
///
/// </summary>
[JsonProperty("sid")]
public string Sid { get; set; }
}
}
6 changes: 4 additions & 2 deletions Synology/Api/IApi.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using System;
using Synology.Interfaces;
using Synology.Interfaces;

namespace Synology.Api
{
/// <inheritdoc />
/// <summary>
/// </summary>
public interface IApi : ISynologyApi
{
}
Expand Down
18 changes: 13 additions & 5 deletions Synology/Api/Info/ApiInfoExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,18 @@
using Synology.Extensions;

namespace Synology
{
public static class ApiInfoExtension
{
public static IInfoRequest Info(this IApi api) => RequestExtension<IInfoRequest>.Request(api);
}
{
/// <summary>
///
/// </summary>
public static class ApiInfoExtension
{
/// <summary>
///
/// </summary>
/// <param name="api"></param>
/// <returns></returns>
public static IInfoRequest Info(this IApi api) => api.Request<IInfoRequest>();
}
}

19 changes: 13 additions & 6 deletions Synology/Api/Info/IInfoRequest.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using Synology.Classes;
using Synology.Interfaces;

namespace Synology.Api.Info
{
public interface IInfoRequest : ISynologyRequest
{
ResultData<Dictionary<string, IApiInfo>> Query(params string[] apis);
}
/// <summary>
///
/// </summary>
public interface IInfoRequest : ISynologyRequest
{
/// <summary>
///
/// </summary>
/// <param name="apis"></param>
/// <returns></returns>
ResultData<Dictionary<string, IApiInfo>> Query(params string[] apis);
}
}
Loading

0 comments on commit 21ff2f3

Please sign in to comment.