refactor rapidjson 51/79551/1
authorkdiluca <kristen@mapzen.com>
Mon, 27 Jun 2016 02:39:42 +0000 (22:39 -0400)
committerBaldur Gudbjornsson <baldur@mapzen.com>
Fri, 1 Jul 2016 18:09:04 +0000 (14:09 -0400)
Change-Id: Ic2386a64452021c7d385ee28ee265311c2c70562

src/mapzen/mapzen_route.cpp

index 9f5e2f2..7eb820e 100644 (file)
@@ -57,8 +57,14 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
        rapidjson::Document document;
        rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
 
-       rapidjson::Value& costing = document.AddMember(rapidjson::Value("costing", allocator).Move(),
-                       rapidjson::Value(rapidjson::kStringType).Move(), allocator);
+       rapidjson::Value directions_options(rapidjson::kObjectType);
+       rapidjson::Value costing(rapidjson::kStringType);
+       rapidjson::Value locations(rapidjson::kArrayType);
+       rapidjson::Value location(rapidjson::kObjectType);
+       rapidjson::Value startloc(rapidjson::kObjectType);
+       rapidjson::Value endloc(rapidjson::kObjectType);
+       rapidjson::Value costing_options(rapidjson::kObjectType);
+
        switch (type) {
        case COSTING_AUTO:
                costing.SetString("auto");
@@ -79,10 +85,12 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
                costing.SetString("auto");
        }
 
-       rapidjson::Value& locations = document.AddMember(rapidjson::Value("locations", allocator).Move(),
-                       rapidjson::Value(rapidjson::kArrayType).Move(), allocator);
-       rapidjson::Value& location = locations.AddMember(rapidjson::Value("", allocator).Move(),
-                       rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
+       document.AddMember("costing", costing, allocator);
+       MAP_DEBUG("**********SET COSTING: %f", costing.GetString());
+
+       directions_options.AddMember("unit","mi",allocator);
+       document.AddMember("directions_options", directions_options, allocator);
+       MAP_DEBUG("**********SET DIRECTIONS_OPTIONS: %s", directions_options.GetString());
 
        int length = g_list_length(waypoints);
        if (length != 0) {
@@ -91,7 +99,9 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
                waypoints_list = g_list_first(waypoints);
                while (waypoints_list) {
                        coords_s *data = (coords_s *) waypoints_list->data;
+                       MAP_DEBUG("**********IN WAYPOINT LIST******************");
 
+                       location.SetObject();
                        for (unsigned i = 0; i < sizeof(data); i++) {
                                location.AddMember<double>("lat", data[i].latitude, allocator);
                                location.AddMember<double>("lon", data[i].longitude, allocator);
@@ -99,21 +109,22 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
                        waypoints_list = g_list_next(waypoints_list);
                        index++;
                }
+               locations.PushBack(location, allocator);
+               document.AddMember("locations", locations, allocator);
        } else {
-               location.AddMember<double>("lat", startPoint.latitude, allocator);
-               location.AddMember<double>("lon", startPoint.longitude, allocator);
-               location.AddMember<double>("lat", endPoint.latitude, allocator);
-               location.AddMember<double>("lon", endPoint.longitude, allocator);
+               startloc.SetObject();
+               startloc.AddMember<double>("lat", startPoint.latitude, allocator);
+               startloc.AddMember<double>("lon", startPoint.longitude, allocator);
+               endloc.SetObject();
+               endloc.AddMember<double>("lat", endPoint.latitude, allocator);
+               endloc.AddMember<double>("lon", endPoint.longitude, allocator);
+
+               locations.PushBack(startloc, allocator);
+               locations.PushBack(endloc, allocator);
+               document.AddMember("locations", locations, allocator);
        }
 
-       rapidjson::Value& directions_options = document.AddMember(rapidjson::Value("directions_options", allocator).Move(),
-                       rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
-       directions_options.AddMember("unit","mi",allocator);
-
        if (avoids) {
-               rapidjson::Value& costing_options = document.AddMember(rapidjson::Value("costing_options", allocator).Move(),
-                               rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
-
                switch (avoids) {
                case PENALTY_NONE:
                        //TODO
@@ -137,10 +148,12 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
                        costing_options.AddMember("country_crossing_penalty","1", allocator);
                        break;
                }
+               document.AddMember("costing_options", costing_options, allocator);
+               MAP_DEBUG("**********SET COSTING_OPTIONS: %f", costing_options.GetString());
+
        }
 
-       /*rapidjson::Value& drive_style = document.AddMember(rapidjson::Value("drive_style", allocator).Move(),
-        *   rapidjson::Value(rapidjson::kStringType).Move(), allocator);
+       /*rapidjson::Value& drive_style;
        switch (style) {
        case DRIVING_STYLE_NORMAL:
                //TODO
@@ -151,22 +164,23 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_t
        case DRIVING_STYLE_AGGRESSIVE:
                //TODO
                break;
-       }*/
+       }
+       document.AddMember("driving_style", driving_style, allocator);*/
 
        //Stringify JSON
        rapidjson::StringBuffer buffer;
        rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
        document.Accept(writer);
-       const char* json = buffer.GetString();
+       const char* jsonString = buffer.GetString();
 
        //we think that this is already being encoded somewhere else
        //std::string encoded_json = url_encode(json);
 
        char routeRequest[1024];
        if (maps_key != NULL)
-               snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, maps_key, json);
+               snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, maps_key, jsonString);
        else
-               snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, "null", json);
+               snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, "null", jsonString);
 
        add_handle(routeRequest, REQ_TYPE_ROUTE, user_data);
        return 0;