Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import carPart._
- import com.fasterxml.jackson.databind.{ObjectMapper, DeserializationFeature}
- import com.twitter.finatra._
- import org.jboss.netty.handler.codec.http.{HttpVersion, HttpResponseStatus}
- import JsonUtil.JsonUtil
- class AutoserviceServer extends Controller {
- var carsDatabase = collection.mutable.Map[String, List[Car]]()
- var audiCars = List(
- Car("1", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "A4", "", "A888C", "2013", "petrol", "3.3",
- "210000", "automatic", "3650", "available", Bid("user1", "4000", "11")),
- Car("2", "../images/audi/1.jpg", "A5", "", "A578B", "2013", "petrol", "3.3",
- "1000", "automatic", "4650", "available", Bid("user2", "5000", "3")),
- Car("3", "../../images/1.jpg", "A6", "", "A234D", "2013", "petrol", "3.3",
- "210000", "automatic", "3330", "won", Bid("user1", "3400", "0"))
- );
- var bmwCars = List(
- Car("11", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "4", "", "B234N", "2013", "petrol", "3.3",
- "210000", "automatic", "6936", "won", Bid("user1", "7000", "0")),
- Car("12", "../images/audi/1.jpg", "1", "", "B422X", "2013", "petrol", "3.3",
- "210000", "automatic", "8000", "available", Bid("user1", "9000", "8")),
- Car("13", "../../images/1.jpg", "3", "", "B231T", "2013", "petrol", "3.3",
- "210000", "automatic", "2333", "available", Bid("", "", ""))
- );
- carsDatabase.put("audi", audiCars)
- carsDatabase.put("bmw", bmwCars)
- var carPartsDatabase = collection.mutable.Map[String, List[Any]]()
- var bodyParts = List(
- BodyPart("1", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4", "", "2005", "door", "67",
- "available"),
- BodyPart("2", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A5", "", "2000", "roof", "10",
- "sold"),
- BodyPart("3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4", "", "2013", "roof", "80",
- "available")
- );
- var engines = List(
- Engine("1", "1111S3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4","", "2005", "petrol", "1.8",
- "210000","AWT 026371","110","670","available"),
- Engine("2", "1111R3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A5","", "2000", "petrol", "1.8",
- "210000","AWT 023423","100","1000","sold"),
- Engine("3", "1111K3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4","", "2013", "petrol", "2.0",
- "","AWT 45646","180","900","available")
- );
- var wheelsTires = List(
- WheelTire("1", "33323S3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4","", "wheel", "R16", "5",
- "available"),
- WheelTire("2", "3333S3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A5","", "wheel", "R16", "5",
- "sold"),
- WheelTire("3", "3333S3", "http://www.avtorinok.ru/news/pics/Audi_A4_pic_24667.jpg", "audi", "A4","", "wheel", "R17", "90",
- "available")
- );
- carPartsDatabase.put("body-part", bodyParts)
- carPartsDatabase.put("engine", engines)
- carPartsDatabase.put("wheels-tires", wheelsTires)
- get("/api/catalog") { request =>
- val json = JsonUtil.toJson(carsDatabase)
- render.json(json).toFuture
- }
- get("/api/catalog/:carBrand") { request =>
- val carBrand = request.routeParams.getOrElse("carBrand", "default")
- val json = JsonUtil.toJson(carsDatabase.get(carBrand))
- render.json(json).toFuture
- }
- get("/api/catalog/:carBrand") { request =>
- val carBrand = request.routeParams.getOrElse("carBrand", "default")
- val json = JsonUtil.toJson(carsDatabase.get(carBrand))
- render.json(json).toFuture
- }
- get("/api/catalog/:carBrand/:model") { request =>
- val carBrand = request.routeParams.getOrElse("carBrand", "default")
- val modelCar = request.routeParams.getOrElse("model", "default")
- var json: String = null
- carsDatabase(carBrand).foreach { Car =>
- if (Car.model.equals(modelCar)) {
- json = JsonUtil.toJson(Car)
- }
- }
- render.json(json).toFuture
- }
- put("/api/catalog/:carBrand") { request =>
- val c = request.getContentString()
- val simple = AutosMap.parseToMap(c.substring(1, c.size - 1)) // вернёт Map
- AutosMap.writeJson(c)
- render.plain("okay").toFuture
- }
- notFound { request =>
- render.status(404).plain("Not found").toFuture
- }
- class Unauthorized extends Exception
- get("/unauthorized") { request =>
- throw new Unauthorized
- }
- error { request =>
- request.error match {
- case Some(e: ArithmeticException) =>
- render.status(500).plain("whoops, divide by zero!").toFuture
- case Some(e: Unauthorized) =>
- render.status(401).plain("Not Authorized!").toFuture
- case Some(e: UnsupportedMediaType) =>
- render.status(415).plain("Unsupported Media Type!").toFuture
- case _ =>
- render.status(500).plain("Something went wrong!").toFuture
- }
- }
- }
- object App extends FinatraServer {
- register(new AutoserviceServer())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement