SDKを使用した各メータリングAPIのLaravel実装サンプルとメータリングAPIを利用した機能の一例を記載します。
それぞれのAPIの詳細はAPIドキュメントをご確認ください。
Laravel実装サンプル
指定した日付のメータリングユニットカウントを取得
APIドキュメントユースケース
テナント向けに使用量を見せたい場合などに使用してください。
実装サンプル
- PHP
- Go
- Python
- Java
- C#(.Net8)
- C#(.Netfw4.8)
/**
* 指定した日付のメータリングユニットカウントを取 得
*
* @param string $tenantId テナントID
* @param string $meteringUnitName メータリングユニット名
* @param string $date 日付 yyyy-mm-dd形式
* @return array
*/
public function getCountOfSpecifiedDate(string $tenantId, string $meteringUnitName, string $date)
{
$client = new \AntiPatternInc\Saasus\Api\Client();
$pricingApi = $client->getPricingClient();
$unitCount = $pricingApi->getMeteringUnitDateCountByTenantIdAndUnitNameAndDate(
$tenantId,
$meteringUnitName,
$date
);
return [
'count' => $unitCount->getCount(),
'date' => $unitCount->getDate(),
'meteringUnitName' => $unitCount->getMeteringUnitName(),
];
}
// 指定した日付のメータリングユニットカウントを取得
// tenantId: テナントID
// unit: メータリングユニット名
// date: yyyy-MM-dd形式の日付
// returns: {"count": int, "date": string, "meteringUnitName": string}
func getCountOfSpecifiedDate(c echo.Context) error {
tenantId := c.Param("tenantId")
unit := c.Param("unit")
date := c.Param("date")
resp, err := pricingClient.
GetMeteringUnitDateCountByTenantIdAndUnitNameAndDateWithResponse(
c.Request().Context(), tenantId, unit, date,
)
if err != nil || resp.JSON200 == nil {
return c.String(http.StatusInternalServerError, "pricing API error")
}
return c.JSON(http.StatusOK, echo.Map{
"count": resp.JSON200.Count,
"date": resp.JSON200.Date,
"meteringUnitName": resp.JSON200.MeteringUnitName,
})
}
# 指定した日付のメータリングユニットカウントを取得
# tenant_id: テナントID
# unit: メータリングユニット名
# date: yyyy-MM-dd形式の日付
# returns: {"count": int, "date": str, "meteringUnitName": str}
def get_count_of_specified_date(tenant_id: str, unit: str, date: str) -> Dict:
metering_api = MeteringApi(api_client=pricing_api_client)
cnt = metering_api.get_metering_unit_date_count_by_tenant_id_and_unit_name_and_date(
tenant_id=tenant_id,
metering_unit_name=unit,
var_date=date,
)
return {
"count": cnt.count,
"date": cnt.var_date,
"meteringUnitName": cnt.metering_unit_name,
}
// 指定した日付のメータリングユニットカウントを取得
// tenantId: テナントID
// unit: メータリングユニット名
// date: yyyy-MM-dd形式の日付
@GetMapping("/tenants/{tenant_id}/metering/{unit:^(?!date$|month$).+}/date/{date}/count")
public ResponseEntity<?> getUnitDateCount(
HttpServletRequest request,
@PathVariable("tenant_id") String tenantId,
@PathVariable String unit,
@PathVariable String date
) {
try {
PricingApiClient pricingClient = new Configuration().getPricingApiClient();
pricingClient.setReferer(request.getHeader("X-Saasus-Referer"));
MeteringApi meteringApi = new MeteringApi(pricingClient);
MeteringUnitDateCount cnt = meteringApi
.getMeteringUnitDateCountByTenantIdAndUnitNameAndDate(tenantId, unit, date);
Map<String, Object> resp = new HashMap<>();
resp.put("count", cnt.getCount());
resp.put("date", cnt.getDate());
resp.put("meteringUnitName", cnt.getMeteringUnitName());
return ResponseEntity.ok(resp);
} catch (saasus.sdk.pricing.ApiException e) {
throw new ResponseStatusException(
HttpStatus.INTERNAL_SERVER_ERROR,
"Pricing API error: " + e.getMessage(), e
);
}
}
/// <summary>指定した日付のメータリングユニットカウントを取得</summary>
/// <param name="context">HTTP コンテキスト</param>
/// <param name="tenant_id">テナントID</param>
/// <param name="unit">メータ リングユニット名</param>
/// <param name="date">日付 (yyyy-MM-dd)</param>
/// <returns>JSON { count:int, date:string, meteringUnitName:string }</returns>
app.MapGet("/tenants/{tenant_id}/metering/{unit}/date/{date}/count",
async (HttpContext context, string tenant_id, string unit, string date) =>
{
try
{
var cfg = CreateClientConfiguration(c => c.GetPricingApiClientConfig(), context);
var metering = new MeteringApi(cfg);
var cnt = await metering.GetMeteringUnitDateCountByTenantIdAndUnitNameAndDateAsync(
tenant_id, unit, date);
return Results.Json(new {
count = cnt.Count,
date = cnt.Date,
meteringUnitName = cnt.MeteringUnitName
});
}
catch (Exception ex) { return HandleApiException(ex); }
});
/// <summary>
/// 指定した日付のメータリングユニットカウントを取得
/// </summary>
/// <param name="tenant_id">テナントID</param>
/// <param name="unit">メータリングユニット名</param>
/// <param name="date">日付 (yyyy-MM-dd)</param>
/// <returns>JSON { count:int, date:string, meteringUnitName:string }</returns>
[HttpGet]
[Route("tenants/{tenant_id}/metering/{unit}/date/{date}/count")]
public async Task<IHttpActionResult> GetUnitDateCount(
string tenant_id,
string unit,
string date)
{
try
{
var cfg = CreateClientConfiguration(c => c.GetPricingApiClientConfig());
var metering = new MeteringApi(cfg);
var cnt = await metering.GetMeteringUnitDateCountByTenantIdAndUnitNameAndDateAsync(
tenant_id, unit, date);
return Ok(new
{
count = cnt.Count,
date = cnt.Date,
meteringUnitName = cnt.MeteringUnitName
});
}
catch (Exception ex) { return HandleApiException(ex); }
}