Skip to content

Commit

Permalink
Allow override of credentials per request. Closes #18
Browse files Browse the repository at this point in the history
  • Loading branch information
smithrobs committed Jan 13, 2017
1 parent 67cddcc commit 667e9c4
Show file tree
Hide file tree
Showing 12 changed files with 121 additions and 89 deletions.
27 changes: 15 additions & 12 deletions Nexmo.Api/Account.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,31 +72,33 @@ public class Number
public string voiceCallbackValue { get; set; }
}

public static decimal GetBalance()
public static decimal GetBalance(Credentials creds = null)
{
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Account),
"/account/get-balance"),
// TODO: using this method sig allows us to have the api auth injected at the expense of opaque code here
new Dictionary<string, string>());
new Dictionary<string, string>(),
creds);

var obj = JsonConvert.DeserializeObject<Balance>(json);
return obj.value;
}

public static Pricing GetPricing(string country)
public static Pricing GetPricing(string country, Credentials creds = null)
{
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Account),
"/account/get-pricing/outbound/"),
new Dictionary<string, string>
{
{ "country", country }
});
},
creds);

var obj = JsonConvert.DeserializeObject<Pricing>(json);
return obj;
}

public static Settings SetSettings(string newsecret = null, string httpMoCallbackurlCom = null, string httpDrCallbackurlCom = null)
public static Settings SetSettings(string newsecret = null, string httpMoCallbackurlCom = null, string httpDrCallbackurlCom = null, Credentials creds = null)
{
var parameters = new Dictionary<string, string>();
if (null != newsecret)
Expand All @@ -106,31 +108,32 @@ public static Settings SetSettings(string newsecret = null, string httpMoCallbac
if (null != httpDrCallbackurlCom)
parameters.Add("drCallBackUrl", httpDrCallbackurlCom);

var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Account), "/account/settings"), parameters);
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Account), "/account/settings"), parameters, creds);

// TODO: update secret?

return JsonConvert.DeserializeObject<Settings>(response.JsonResponse);
}

public static void TopUp(string transaction)
public static void TopUp(string transaction, Credentials creds = null)
{
ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Account), "/account/top-up"), new Dictionary<string, string>
{
{"trx", transaction}
});
},
creds);

// TODO: return response
}

public static NumbersResponse GetNumbers()
public static NumbersResponse GetNumbers(Credentials creds = null)
{
return GetNumbers(new NumbersRequest());
return GetNumbers(new NumbersRequest(), creds);
}

public static NumbersResponse GetNumbers(NumbersRequest request)
public static NumbersResponse GetNumbers(NumbersRequest request, Credentials creds = null)
{
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Account), "/account/numbers"), request);
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Account), "/account/numbers"), request, creds);
return JsonConvert.DeserializeObject<NumbersResponse>(json);
}
}
Expand Down
20 changes: 11 additions & 9 deletions Nexmo.Api/Application.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ public class Application
/// </summary>
/// <param name="request">Application request</param>
/// <returns></returns>
public static ApplicationResponse Create(ApplicationRequest request)
public static ApplicationResponse Create(ApplicationRequest request, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Application), "/v1/applications"), request);
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Application), "/v1/applications"), request, creds);

return JsonConvert.DeserializeObject<ApplicationResponse>(response.JsonResponse);
}
Expand All @@ -106,7 +106,7 @@ public static ApplicationResponse Create(ApplicationRequest request)
/// <param name="PageIndex">Set the offset from the first page. The default value is 0, calls to this endpoint return a page of <page_size>. For example, set page_index to 3 to retrieve items 31 - 40 when page_size is the default value.</param>
/// <param name="AppId">Optional id of specific application to retrieve</param>
/// <returns></returns>
public static List<ApplicationResponse> List(int PageSize = 10, int PageIndex = 0, string AppId = "")
public static List<ApplicationResponse> List(int PageSize = 10, int PageIndex = 0, string AppId = "", Credentials creds = null)
{
if (!string.IsNullOrEmpty(AppId))
{
Expand All @@ -116,7 +116,8 @@ public static List<ApplicationResponse> List(int PageSize = 10, int PageIndex =
ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Application),
$"/v1/applications/{AppId}"),
// TODO: using this method sig allows us to have the api auth injected at the expense of opaque code here
new Dictionary<string, string>()))
new Dictionary<string, string>(),
creds))
};

}
Expand All @@ -125,7 +126,8 @@ public static List<ApplicationResponse> List(int PageSize = 10, int PageIndex =
{
{ "page_size", PageSize.ToString()},
{ "page_index", PageIndex.ToString()}
});
},
creds);
var response = JsonConvert.DeserializeObject<ApplicationListResponse>(json);
return response._embedded.applications;
}
Expand All @@ -135,11 +137,11 @@ public static List<ApplicationResponse> List(int PageSize = 10, int PageIndex =
/// </summary>
/// <param name="request">Application request</param>
/// <returns></returns>
public static ApplicationResponse Update(ApplicationRequest request)
public static ApplicationResponse Update(ApplicationRequest request, Credentials creds = null)
{
var sb = ApiRequest.GetQueryStringBuilderFor(request);
var response = ApiRequest.DoPutRequest(ApiRequest.GetBaseUriFor(typeof(Application),
$"/v1/applications/{request.id}?{sb}"), null);
$"/v1/applications/{request.id}?{sb}"), null, creds);

return JsonConvert.DeserializeObject<ApplicationResponse>(response.JsonResponse);
}
Expand All @@ -149,11 +151,11 @@ public static ApplicationResponse Update(ApplicationRequest request)
/// </summary>
/// <param name="AppId">The application id to delete</param>
/// <returns></returns>
public static bool Delete(string AppId)
public static bool Delete(string AppId, Credentials creds = null)
{
var sb = ApiRequest.GetQueryStringBuilderFor(new object());
var response = ApiRequest.DoDeleteRequest(ApiRequest.GetBaseUriFor(typeof(Application),
$"/v1/applications/{AppId}?{sb}"), null);
$"/v1/applications/{AppId}?{sb}"), null, creds);

return response.Status == HttpStatusCode.NoContent;
}
Expand Down
20 changes: 11 additions & 9 deletions Nexmo.Api/Number.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,37 +81,39 @@ public class SearchResults
public IEnumerable<SearchResult> numbers { get; set; }
}

public static SearchResults Search(SearchRequest request)
public static SearchResults Search(SearchRequest request, Credentials creds = null)
{
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/search/"), request);
var json = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/search/"), request, creds);
return JsonConvert.DeserializeObject<SearchResults>(json);
}

public static ResponseBase Buy(string country, string number)
public static ResponseBase Buy(string country, string number, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/buy"), new Dictionary<string, string>()
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/buy"), new Dictionary<string, string>
{
{"country", country},
{"msisdn", number}
});
},
creds);

return JsonConvert.DeserializeObject<ResponseBase>(response.JsonResponse);
}

public static ResponseBase Update(NumberUpdateCommand cmd)
public static ResponseBase Update(NumberUpdateCommand cmd, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/update"), cmd);
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/update"), cmd, creds);

return JsonConvert.DeserializeObject<ResponseBase>(response.JsonResponse);
}

public static ResponseBase Cancel(string country, string number)
public static ResponseBase Cancel(string country, string number, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(Number), "/number/cancel"), new Dictionary<string, string>
{
{"country", country},
{"msisdn", number}
});
},
creds);

return JsonConvert.DeserializeObject<ResponseBase>(response.JsonResponse);
}
Expand Down
13 changes: 7 additions & 6 deletions Nexmo.Api/NumberInsight.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,27 +123,28 @@ public class NumberInsightResponse
public string roaming_network_code { get; set; }
}

public static NumberInsightBasicResponse RequestBasic(NumberInsightBasicRequest request)
public static NumberInsightBasicResponse RequestBasic(NumberInsightBasicRequest request, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/number/format/json"), request);
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/number/format/json"), request, creds);

return JsonConvert.DeserializeObject<NumberInsightBasicResponse>(response.JsonResponse);
}

public static NumberInsightStandardResponse RequestStandard(NumberInsightBasicRequest request)
public static NumberInsightStandardResponse RequestStandard(NumberInsightBasicRequest request, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/number/lookup/json"), request);
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/number/lookup/json"), request, creds);

return JsonConvert.DeserializeObject<NumberInsightStandardResponse>(response.JsonResponse);
}

public static NumberInsightRequestResponse Request(NumberInsightRequest request)
public static NumberInsightRequestResponse Request(NumberInsightRequest request, Credentials creds = null)
{
var response = ApiRequest.DoPostRequest(ApiRequest.GetBaseUriFor(typeof(NumberInsight), "/ni/json"), new Dictionary<string, string>
{
{"number", request.Number},
{"callback", request.Callback}
});
},
creds);

return JsonConvert.DeserializeObject<NumberInsightRequestResponse>(response.JsonResponse);
}
Expand Down
20 changes: 11 additions & 9 deletions Nexmo.Api/NumberVerify.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ public class VerifyResponse
public string error_text { get; set; }
}

public static VerifyResponse Verify(VerifyRequest request)
public static VerifyResponse Verify(VerifyRequest request, Credentials creds = null)
{
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/json"), request);
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/json"), request, creds);

return JsonConvert.DeserializeObject<VerifyResponse>(jsonstring);
}
Expand All @@ -48,13 +48,14 @@ public class CheckResponse
public string error_text { get; set; }
}

public static CheckResponse Check(CheckRequest request)
public static CheckResponse Check(CheckRequest request, Credentials creds = null)
{
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/check/json"), new Dictionary<string, string>()
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/check/json"), new Dictionary<string, string>
{
{"request_id", request.request_id},
{"code", request.code}
});
},
creds);

return JsonConvert.DeserializeObject<CheckResponse>(jsonstring);
}
Expand Down Expand Up @@ -90,13 +91,14 @@ public class CheckObj
public string ip_address { get; set; }
}

public static SearchResponse Search(SearchRequest request)
public static SearchResponse Search(SearchRequest request, Credentials creds = null)
{
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/search/json"), new Dictionary<string, string>()
{
{"request_id", request.request_id},
{"request_ids", request.request_ids}
});
},
creds);

return JsonConvert.DeserializeObject<SearchResponse>(jsonstring);
}
Expand Down Expand Up @@ -127,9 +129,9 @@ public class ControlResponse
public string command { get; set; }
}

public static ControlResponse Control(ControlRequest request)
public static ControlResponse Control(ControlRequest request, Credentials creds = null)
{
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/control/json"), request);
var jsonstring = ApiRequest.DoRequest(ApiRequest.GetBaseUriFor(typeof(NumberVerify), "/verify/control/json"), request, creds);

return JsonConvert.DeserializeObject<ControlResponse>(jsonstring);
}
Expand Down
Loading

0 comments on commit 667e9c4

Please sign in to comment.