.
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Diagnostics;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Api.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
public class ErrorController : ControllerBase
|
||||
{
|
||||
[HttpGet]
|
||||
[Route("")]
|
||||
[AllowAnonymous]
|
||||
|
||||
public ActionResult Get()
|
||||
{
|
||||
IExceptionHandlerPathFeature exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
|
||||
|
||||
if (exceptionFeature != null)
|
||||
{
|
||||
string route = exceptionFeature.Path;
|
||||
|
||||
Exception ex = exceptionFeature.Error;
|
||||
|
||||
//TODO: Logging
|
||||
}
|
||||
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ namespace PartSource.Api.Controllers
|
||||
[Route("[controller]")]
|
||||
[Route("v1/[controller]")]
|
||||
[ApiController]
|
||||
[ApiExplorerSettings(GroupName = "v1")]
|
||||
public class InventoryController : BaseNexpartController
|
||||
{
|
||||
private readonly PartService _inventoryService;
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace PartSource.Api.Controllers
|
||||
[Route("vehicles")]
|
||||
[Route("v1/vehicles")]
|
||||
[ApiController]
|
||||
[ApiExplorerSettings(GroupName = "v1")]
|
||||
public class LegacyVehiclesController : BaseNexpartController
|
||||
{
|
||||
private readonly VehicleService _vehicleService;
|
||||
@@ -116,7 +117,7 @@ namespace PartSource.Api.Controllers
|
||||
});
|
||||
}
|
||||
|
||||
return Ok(new { data = new { subModel = submodels } });
|
||||
return Ok(new { data = new { subModel = nexpartSubmodels } });
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
||||
@@ -1,158 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using PartSource.Data.Nexpart;
|
||||
using PartSource.Services;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Api.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
public class NexpartVehiclesController : BaseNexpartController
|
||||
{
|
||||
private readonly NexpartService _nexpartService;
|
||||
|
||||
public NexpartVehiclesController(NexpartService nexpartService)
|
||||
{
|
||||
this._nexpartService = nexpartService;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("types")]
|
||||
public async Task<ActionResult> GetVehicleTypes()
|
||||
{
|
||||
NexpartVehiclesController vehiclesController = this;
|
||||
VehicleTypesGetResponse response = await vehiclesController._nexpartService.SendRequest<VehicleTypesGet, VehicleTypesGetResponse>(new VehicleTypesGet());
|
||||
return vehiclesController.NexpartResponse<VehicleTypesGetResponse, VehicleTypes>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("makes")]
|
||||
public async Task<ActionResult> GetMakes()
|
||||
{
|
||||
NexpartVehiclesController vehiclesController = this;
|
||||
MakeSearch requestContent = new MakeSearch()
|
||||
{
|
||||
VehicleTypeId = new int[] { 5, 6, 7 }
|
||||
};
|
||||
MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
|
||||
return vehiclesController.NexpartResponse<MakeSearchResponse, Makes>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("makes/vehicletypeid/{vehicleTypeId}")]
|
||||
public async Task<ActionResult> GetMakes(int vehicleTypeId)
|
||||
{
|
||||
NexpartVehiclesController vehiclesController = this;
|
||||
MakeSearch requestContent = new MakeSearch()
|
||||
{
|
||||
VehicleTypeId = new int[] { vehicleTypeId }
|
||||
};
|
||||
MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
|
||||
return vehiclesController.NexpartResponse<MakeSearchResponse, Makes>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("models/makeid/{makeId}/modelyear/{year}")]
|
||||
public async Task<ActionResult> GetModels(int makeId, int year)
|
||||
{
|
||||
NexpartVehiclesController vehiclesController = this;
|
||||
ModelSearch requestContent = new ModelSearch()
|
||||
{
|
||||
MakeId = makeId,
|
||||
Year = year,
|
||||
VehicleTypeId = new int[] { 5, 6, 7 }
|
||||
};
|
||||
ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest<ModelSearch, ModelSearchResponse>(requestContent);
|
||||
return vehiclesController.NexpartResponse<ModelSearchResponse, Models[]>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("models/makeid/{makeId}/modelyear/{year}/vehicletypeid/{vehicleTypeId}")]
|
||||
public async Task<ActionResult> GetModels(int makeId, int year, int vehicleTypeId)
|
||||
{
|
||||
NexpartVehiclesController vehiclesController = this;
|
||||
ModelSearch requestContent = new ModelSearch()
|
||||
{
|
||||
MakeId = makeId,
|
||||
Year = year,
|
||||
VehicleTypeId = new int[] { vehicleTypeId }
|
||||
};
|
||||
ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest<ModelSearch, ModelSearchResponse>(requestContent);
|
||||
return vehiclesController.NexpartResponse<ModelSearchResponse, Models[]>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("basevehicle/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
|
||||
public async Task<ActionResult> GetBaseVehicle(int makeId, int modelId, int year)
|
||||
{
|
||||
BaseVehicleDetailLookup requestContent = new BaseVehicleDetailLookup()
|
||||
{
|
||||
MakeId = makeId,
|
||||
ModelId = modelId,
|
||||
Year = year
|
||||
};
|
||||
BaseVehicleDetailLookupResponse response = await _nexpartService.SendRequest<BaseVehicleDetailLookup, BaseVehicleDetailLookupResponse>(requestContent);
|
||||
return NexpartResponse<BaseVehicleDetailLookupResponse, BaseVehicleDetail>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("engines/basevehicleid/{baseVehicleId}")]
|
||||
[Route("engines/basevehicleid/{baseVehicleId}/submodelid/{subModelId}")]
|
||||
public async Task<ActionResult> GetEngines(int baseVehicleId, int? subModelId = null)
|
||||
{
|
||||
EngineSearch requestContent = new EngineSearch()
|
||||
{
|
||||
VehicleIdentifier = new VehicleIdentifier()
|
||||
{
|
||||
BaseVehicleId = baseVehicleId
|
||||
},
|
||||
SubModelId = subModelId
|
||||
};
|
||||
EngineSearchResponse response = await _nexpartService.SendRequest<EngineSearch, EngineSearchResponse>(requestContent);
|
||||
return NexpartResponse<EngineSearchResponse, Engines>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("trim/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
|
||||
public async Task<ActionResult> GetTrim(int makeId, int modelId, int year)
|
||||
{
|
||||
SubModelSearch requestContent = new SubModelSearch()
|
||||
{
|
||||
MakeId = makeId,
|
||||
ModelId = modelId,
|
||||
Year = year,
|
||||
RegionId = 2
|
||||
};
|
||||
SubModelSearchResponse response = await _nexpartService.SendRequest<SubModelSearch, SubModelSearchResponse>(requestContent);
|
||||
return NexpartResponse<SubModelSearchResponse, SubModels>(response);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("/detail/basevehicleid/{baseVehicleId}/submodelid/{subModelId}/engineconfigid/{engineConfigId}")]
|
||||
public async Task<ActionResult> GetVehicleId(int baseVehicleId, int subModelId, int engineConfigId)
|
||||
{
|
||||
VehicleIdSearch requestContent = new VehicleIdSearch
|
||||
{
|
||||
VehicleIdentifier = new VehicleIdentifier()
|
||||
{
|
||||
BaseVehicleId = baseVehicleId,
|
||||
EngineConfigId = engineConfigId
|
||||
},
|
||||
Criterion = new Criterion[1]{
|
||||
new Criterion
|
||||
{
|
||||
Attribute = "SUB_MODEL",
|
||||
Id = subModelId
|
||||
}
|
||||
},
|
||||
RegionId = new RegionId
|
||||
{
|
||||
Value = 2
|
||||
},
|
||||
};
|
||||
|
||||
VehicleIdSearchResponse response = await _nexpartService.SendRequest<VehicleIdSearch, VehicleIdSearchResponse>(requestContent);
|
||||
return NexpartResponse<VehicleIdSearchResponse, VehicleDetail>(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ namespace PartSource.Api.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
[ApiExplorerSettings(GroupName = "v1")]
|
||||
public class PartsController : BaseNexpartController
|
||||
{
|
||||
private readonly NexpartService _nexpartService;
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using PartSource.Data.Nexpart;
|
||||
using PartSource.Services;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Api.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
public class SearchController : BaseNexpartController
|
||||
{
|
||||
private readonly NexpartService _nexpartService;
|
||||
|
||||
public SearchController()
|
||||
{
|
||||
this._nexpartService = new NexpartService();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("makes/vehicletypeid/{vehicleTypeId}")]
|
||||
public async Task<ActionResult> GetMakes(int vehicleTypeId)
|
||||
{
|
||||
SearchController searchController = this;
|
||||
MakeSearch requestContent = new MakeSearch()
|
||||
{
|
||||
VehicleTypeId = new int[] { vehicleTypeId }
|
||||
};
|
||||
MakeSearchResponse response = await searchController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
|
||||
return searchController.NexpartResponse<MakeSearchResponse, Makes>(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
//using Microsoft.AspNetCore.Mvc;
|
||||
//using PartSource.Data.Models;
|
||||
//using PartSource.Services;
|
||||
//using System.Web.Http;
|
||||
|
||||
//namespace PartSource.Api.Controllers
|
||||
//{
|
||||
// [Route("stores")]
|
||||
// public class StoresController : ControllerBase
|
||||
// {
|
||||
// private const int Count = 5;
|
||||
// private const int Page = 1;
|
||||
// private readonly LocationService _service;
|
||||
|
||||
// public StoresController(LocationService service)
|
||||
// {
|
||||
// this._service = service;
|
||||
// }
|
||||
|
||||
// [HttpGet]
|
||||
// [Route("nearest/{postal}")]
|
||||
// [Route("nearest/{postal}/count/{count}")]
|
||||
// [Route("nearest/{postal}/count/{count}/page/{page}")]
|
||||
// public ActionResult GetNearestStores(string postal, int count = 5, int page = 1)
|
||||
// {
|
||||
// PostalCode postalCodeData = this._service.GetPostalCodeData(postal);
|
||||
// if (postalCodeData == null)
|
||||
// return (ActionResult)this.BadRequest("Invalid postal code");
|
||||
// return (ActionResult)this.Ok(new
|
||||
// {
|
||||
// Data = this._service.GetClosestLocations(postalCodeData, count, page)
|
||||
// });
|
||||
// }
|
||||
|
||||
// [HttpGet]
|
||||
// [Route("nearest/{postal}/radius/{radius}")]
|
||||
// [Route("nearest/{postal}/radius/{radius}/count/{count}")]
|
||||
// [Route("nearest/{postal}/radius/{radius}/count/{count}/page/{page}")]
|
||||
// public ActionResult GetNearestStores(string postal, double radius, int count = 5, int page = 1)
|
||||
// {
|
||||
// return (ActionResult)this.Ok(new
|
||||
// {
|
||||
// Data = this._service.GetClosestLocations(this._service.GetPostalCodeData(postal), count, page, radius)
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
@@ -1,40 +0,0 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Api.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
public class TemplatesController : ControllerBase
|
||||
{
|
||||
|
||||
[Route("{templateName}/{vehicleId}")]
|
||||
[HttpGet]
|
||||
public IActionResult GetTemplate(string templateName, int vehicleId)
|
||||
{
|
||||
StringValues contentType = new StringValues("application/liquid");
|
||||
Response.Headers.Add("Content-Type", contentType);
|
||||
|
||||
string content = $"{templateName},{vehicleId}";
|
||||
|
||||
return Ok(content);
|
||||
}
|
||||
|
||||
//Crappy oauth code to make the app installable on shopify
|
||||
|
||||
//HttpRequest request = HttpContext.Request;
|
||||
|
||||
//string location = "https://ratermaniac.myshopify.com/admin/oauth/authorize?client_id=097de154602f28499e058f66b8653033&scope=read_customers&redirect_uri=https://soundpress.com&state=0.4585849384";
|
||||
|
||||
//StringValues locationHeader = new StringValues(location);
|
||||
|
||||
// //Response.Headers.Add("Location", location);
|
||||
|
||||
// return Redirect(location);
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,12 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Api.Controllers
|
||||
{
|
||||
/// <remarks>
|
||||
/// This endpoint gets vehicle data from WHI's SEO data.
|
||||
/// </remarks>
|
||||
[Route("v2/[controller]")]
|
||||
[ApiController]
|
||||
[ApiExplorerSettings(GroupName = "v2")]
|
||||
public class VehiclesController : BaseApiController
|
||||
{
|
||||
private readonly VehicleService _vehicleService;
|
||||
@@ -21,17 +25,30 @@ namespace PartSource.Api.Controllers
|
||||
_vehicleService = vehicleService;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("")]
|
||||
public async Task<ActionResult> GetVehicles([FromQuery] Vehicle vehicleQuery)
|
||||
/// <summary>
|
||||
/// Get Vehicles
|
||||
/// </summary>
|
||||
/// <response code="200"><strong>OK:</strong> An array of vehicles matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no vehicles were found.</response>
|
||||
[HttpGet("")]
|
||||
[ProducesResponseType(typeof(IList<VehicleDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
public async Task<ActionResult> GetVehicles([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<Vehicle> vehicles = await _vehicleService.GetVehicles(vehicleQuery);
|
||||
|
||||
return ApiResponse(vehicles);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("{id}")]
|
||||
/// <summary>
|
||||
/// Get Vehicle by ID
|
||||
/// </summary>
|
||||
/// <param name="id">A WHI VehicleToEngineConfigId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The vehicle with the provided VehicleToEngineConfigId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No vehicle was found matching the provided VehicleToEngineConfigId.</response>
|
||||
[HttpGet("{id}")]
|
||||
[ProducesResponseType(typeof(VehicleDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetVehicleById(int id)
|
||||
{
|
||||
Vehicle vehicle = await _vehicleService.GetVehicleById(id);
|
||||
@@ -39,94 +56,162 @@ namespace PartSource.Api.Controllers
|
||||
return ApiResponse(vehicle);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("makes")]
|
||||
public async Task<ActionResult> GetMakes([FromQuery] VehicleMake vehicleMake)
|
||||
/// <summary>
|
||||
/// Get Makes
|
||||
/// </summary>
|
||||
/// <response code="200"><strong>OK:</strong> An array of makes matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no makes were found.</response>
|
||||
[HttpGet("makes")]
|
||||
[ProducesResponseType(typeof(IList<MakeDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
public async Task<ActionResult> GetMakes([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<VehicleMake> makes = await _vehicleService.GetMakes(vehicleMake);
|
||||
IList<MakeDto> makes = await _vehicleService.GetMakes(vehicleQuery);
|
||||
|
||||
return ApiResponse(makes);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("makes/{id}")]
|
||||
/// <summary>
|
||||
/// Get Make by ID
|
||||
/// </summary>
|
||||
/// <param name="id">A WHI MakeId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The make with the provided MakeId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No make was found matching the provided MakeId.</response>
|
||||
[HttpGet("makes/{id}")]
|
||||
[ProducesResponseType(typeof(MakeDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetMakeById(int id)
|
||||
{
|
||||
VehicleMake make = await _vehicleService.GetMakeById(id);
|
||||
MakeDto make = await _vehicleService.GetMakeById(id);
|
||||
|
||||
return ApiResponse(make);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("models")]
|
||||
public async Task<ActionResult> GetModels([FromQuery] VehicleModel vehicleModel)
|
||||
/// <summary>
|
||||
/// Get Models
|
||||
/// </summary>
|
||||
/// <response code="200"><strong>OK:</strong> An array of models matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no models were found.</response>
|
||||
[HttpGet("models")]
|
||||
[ProducesResponseType(typeof(IList<ModelDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
public async Task<ActionResult> GetModels([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<VehicleModel> models = await _vehicleService.GetModels(vehicleModel);
|
||||
IList<ModelDto> models = await _vehicleService.GetModels(vehicleQuery);
|
||||
|
||||
return ApiResponse(models);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("models/{id}")]
|
||||
/// <summary>
|
||||
/// Get Model by ID
|
||||
/// </summary>
|
||||
/// <param name="id">A WHI ModelId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The model with the provided ModelId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No model was found matching the provided ModelId.</response>
|
||||
[HttpGet("models/{id}")]
|
||||
[ProducesResponseType(typeof(ModelDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetModelById(int id)
|
||||
{
|
||||
VehicleModel model = await _vehicleService.GetModelById(id);
|
||||
ModelDto model = await _vehicleService.GetModelById(id);
|
||||
|
||||
return ApiResponse(model);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("basevehicles")]
|
||||
public async Task<ActionResult> GetBaseVehicles([FromQuery] BaseVehicle baseVehicle)
|
||||
/// <summary>
|
||||
/// Get Submodels
|
||||
/// </summary>
|
||||
/// /// <remarks><em>Note: Submodels can be shared between models. Do not assume a submodel is unique to a given model.</em></remarks>
|
||||
/// <response code="200"><strong>OK:</strong> An array of submodels matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no submodels were found.</response>
|
||||
[HttpGet("submodels")]
|
||||
[ProducesResponseType(typeof(IList<SubmodelDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
public async Task<ActionResult> GetSubmodels([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<BaseVehicle> baseVehicles = await _vehicleService.GetBaseVehicles(baseVehicle);
|
||||
|
||||
return ApiResponse(baseVehicles);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("basevehicles/{id}")]
|
||||
public async Task<ActionResult> GetBaseVehicleById(int id)
|
||||
{
|
||||
BaseVehicle baseVehicle = await _vehicleService.GetBaseVehicleById(id);
|
||||
|
||||
return ApiResponse(baseVehicle);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("engines")]
|
||||
public async Task<ActionResult> GetEngines([FromQuery] Engine engine)
|
||||
{
|
||||
IList<Engine> engines = await _vehicleService.GetEngines(engine);
|
||||
|
||||
return ApiResponse(engines);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("engines/{id}")]
|
||||
public async Task<ActionResult> GetEngineById(int id)
|
||||
{
|
||||
EngineDto engine = await _vehicleService.GetEngineById(id);
|
||||
|
||||
return ApiResponse(engine);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("submodels")]
|
||||
public async Task<ActionResult> GetSubmodels([FromQuery] Submodel submodelQuery)
|
||||
{
|
||||
IList<Submodel> submodels = await _vehicleService.GetSubmodels(submodelQuery);
|
||||
IList<SubmodelDto> submodels = await _vehicleService.GetSubmodels(vehicleQuery);
|
||||
|
||||
return ApiResponse(submodels);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Route("submodels/{id}")]
|
||||
/// <summary>
|
||||
/// Get Submodel by ID
|
||||
/// </summary>
|
||||
/// <remarks><em>Note: Submodels can be shared between models. Do not assume a submodel is unique to a given model.</em></remarks>
|
||||
/// <param name="id">A WHI SubmodelId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The submodel with the provided SubmodelId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No submodel was found matching the provided SubmodelId.</response>
|
||||
[HttpGet("submodels/{id}")]
|
||||
[ProducesResponseType(typeof(SubmodelDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetSubmodels(int id)
|
||||
{
|
||||
SubmodelDto submodel = await _vehicleService.GetSubmodelById(id);
|
||||
|
||||
return ApiResponse(submodel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Base Vehicles
|
||||
/// </summary>
|
||||
/// <response code="200"><strong>OK:</strong> An array of base vehicles matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no base vehicles were found.</response>
|
||||
[HttpGet("basevehicles")]
|
||||
[ProducesResponseType(typeof(IList<BaseVehicleDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
|
||||
public async Task<ActionResult> GetBaseVehicles([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<BaseVehicleDto> baseVehicles = await _vehicleService.GetBaseVehicles(vehicleQuery);
|
||||
|
||||
return ApiResponse(baseVehicles);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Base Vehicle by ID
|
||||
/// </summary>
|
||||
/// <param name="id">A WHI BaseVehicleId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The base vehicle with the provided BaseVehicleId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No base vehicle was found matching the provided BaseVehicleId.</response>
|
||||
[HttpGet("basevehicles/{id}")]
|
||||
[ProducesResponseType(typeof(BaseVehicleDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetBaseVehicleById(int id)
|
||||
{
|
||||
BaseVehicleDto baseVehicle = await _vehicleService.GetBaseVehicleById(id);
|
||||
|
||||
return ApiResponse(baseVehicle);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Engines
|
||||
/// </summary>
|
||||
/// <response code="200"><strong>OK:</strong> An array of engines matching the query.</response>
|
||||
/// <response code="204"><strong>No Content:</strong> The query executed successfully, but no engines were found.</response>
|
||||
[HttpGet("engines")]
|
||||
[ProducesResponseType(typeof(IList<EngineDto>), 200)]
|
||||
[ProducesResponseType(204)]
|
||||
public async Task<ActionResult> GetEngines([FromQuery] VehicleDto vehicleQuery)
|
||||
{
|
||||
IList<EngineDto> engines = await _vehicleService.GetEngines(vehicleQuery);
|
||||
|
||||
return ApiResponse(engines);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get Engine by ID
|
||||
/// </summary>
|
||||
/// <param name="id">A WHI EngineConfigId</param>
|
||||
/// <response code="200"><strong>OK:</strong> The engine with the provided EngineConfigId.</response>
|
||||
/// <response code="404"><strong>Not Found:</strong> No engine was found matching the provided EngineConfigId.</response>
|
||||
[HttpGet("engines/{id}")]
|
||||
[ProducesResponseType(typeof(EngineDto), 200)]
|
||||
[ProducesResponseType(404)]
|
||||
public async Task<ActionResult> GetEngineById(int id)
|
||||
{
|
||||
EngineDto engine = await _vehicleService.GetEngineById(id);
|
||||
|
||||
return ApiResponse(engine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,11 @@
|
||||
<Configurations>Debug;Release;Also Debug</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DocumentationFile>C:\Users\Tommy\source\repos\ratermania\partsource\PartSource.Api\PartSource.Api.xml</DocumentationFile>
|
||||
<NoWarn>1701;1702;1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="appsettings.development.json" />
|
||||
</ItemGroup>
|
||||
@@ -15,15 +20,18 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="..\.editorconfig" Link=".editorconfig" />
|
||||
<None Include="appsettings.development.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.App" />
|
||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.ReDoc" Version="5.5.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
110
PartSource.Api/PartSource.Api.xml
Normal file
110
PartSource.Api/PartSource.Api.xml
Normal file
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>PartSource.Api</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:PartSource.Api.Controllers.LegacyVehiclesController">
|
||||
<summary>
|
||||
This controller exists to enable legacy support for the old Nexpart-based vehicle lookup.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:PartSource.Api.Controllers.VehiclesController">
|
||||
<remarks>
|
||||
This endpoint gets vehicle data from WHI's SEO data.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetVehicles(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Vehicles
|
||||
</summary>
|
||||
<response code="200"><strong>OK:</strong> An array of vehicles matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no vehicles were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetVehicleById(System.Int32)">
|
||||
<summary>
|
||||
Get Vehicle by ID
|
||||
</summary>
|
||||
<param name="id">A WHI VehicleToEngineConfigId</param>
|
||||
<response code="200"><strong>OK:</strong> The vehicle with the provided VehicleToEngineConfigId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No vehicle was found matching the provided VehicleToEngineConfigId.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetMakes(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Makes
|
||||
</summary>
|
||||
<response code="200"><strong>OK:</strong> An array of makes matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no makes were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetMakeById(System.Int32)">
|
||||
<summary>
|
||||
Get Make by ID
|
||||
</summary>
|
||||
<param name="id">A WHI MakeId</param>
|
||||
<response code="200"><strong>OK:</strong> The make with the provided MakeId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No make was found matching the provided MakeId.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetModels(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Models
|
||||
</summary>
|
||||
<response code="200"><strong>OK:</strong> An array of models matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no models were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetModelById(System.Int32)">
|
||||
<summary>
|
||||
Get Model by ID
|
||||
</summary>
|
||||
<param name="id">A WHI ModelId</param>
|
||||
<response code="200"><strong>OK:</strong> The model with the provided ModelId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No model was found matching the provided ModelId.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetSubmodels(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Submodels
|
||||
</summary>
|
||||
/// <remarks><em>Note: Submodels can be shared between models. Do not assume a submodel is unique to a given model.</em></remarks>
|
||||
<response code="200"><strong>OK:</strong> An array of submodels matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no submodels were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetSubmodels(System.Int32)">
|
||||
<summary>
|
||||
Get Submodel by ID
|
||||
</summary>
|
||||
<remarks><em>Note: Submodels can be shared between models. Do not assume a submodel is unique to a given model.</em></remarks>
|
||||
<param name="id">A WHI SubmodelId</param>
|
||||
<response code="200"><strong>OK:</strong> The submodel with the provided SubmodelId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No submodel was found matching the provided SubmodelId.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetBaseVehicles(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Base Vehicles
|
||||
</summary>
|
||||
<response code="200"><strong>OK:</strong> An array of base vehicles matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no base vehicles were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetBaseVehicleById(System.Int32)">
|
||||
<summary>
|
||||
Get Base Vehicle by ID
|
||||
</summary>
|
||||
<param name="id">A WHI BaseVehicleId</param>
|
||||
<response code="200"><strong>OK:</strong> The base vehicle with the provided BaseVehicleId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No base vehicle was found matching the provided BaseVehicleId.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetEngines(PartSource.Data.Dtos.VehicleDto)">
|
||||
<summary>
|
||||
Get Engines
|
||||
</summary>
|
||||
<response code="200"><strong>OK:</strong> An array of engines matching the query.</response>
|
||||
<response code="204"><strong>No Content:</strong> The query executed successfully, but no engines were found.</response>
|
||||
</member>
|
||||
<member name="M:PartSource.Api.Controllers.VehiclesController.GetEngineById(System.Int32)">
|
||||
<summary>
|
||||
Get Engine by ID
|
||||
</summary>
|
||||
<param name="id">A WHI EngineConfigId</param>
|
||||
<response code="200"><strong>OK:</strong> The engine with the provided EngineConfigId.</response>
|
||||
<response code="404"><strong>Not Found:</strong> No engine was found matching the provided EngineConfigId.</response>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
@@ -1,11 +1,16 @@
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using AutoMapper;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using PartSource.Api.Formatters;
|
||||
using PartSource.Data;
|
||||
using PartSource.Data.AutoMapper;
|
||||
using PartSource.Services;
|
||||
using System.IO;
|
||||
|
||||
namespace PartSource.Api
|
||||
{
|
||||
@@ -23,10 +28,20 @@ namespace PartSource.Api
|
||||
{
|
||||
services.AddMvc(options =>
|
||||
{
|
||||
options.OutputFormatters.Add(new LiquidTemplateOutputFormatter());
|
||||
options.OutputFormatters.RemoveType(typeof(StringOutputFormatter));
|
||||
options.EnableEndpointRouting = false;
|
||||
});
|
||||
|
||||
services.AddSwaggerGen(c =>
|
||||
{
|
||||
c.SwaggerDoc("v2", new OpenApiInfo { Title = "Partsource/WHI Integration API", Version = "v2" });
|
||||
|
||||
c.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "PartSource.Api.xml"));
|
||||
c.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "PartSource.Data.xml"));
|
||||
});
|
||||
|
||||
services.AddAutoMapper(typeof(PartSourceProfile));
|
||||
|
||||
services.AddTransient<PartService>();
|
||||
services.AddTransient<NexpartService>();
|
||||
services.AddTransient<SecurityService>();
|
||||
@@ -58,7 +73,14 @@ namespace PartSource.Api
|
||||
|
||||
app.UseCors("Default");
|
||||
|
||||
// app.UseExceptionHandler("/Error");
|
||||
app.UseSwagger();
|
||||
app.UseReDoc(c =>
|
||||
{
|
||||
c.SpecUrl = "/swagger/v2/swagger.json";
|
||||
c.ExpandResponses(string.Empty);
|
||||
});
|
||||
|
||||
// app.UseExceptionHandler("/Error");
|
||||
// app.UseHttpsRedirection();
|
||||
app.UseMvc();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user