~marcustomlinson/unity-scopes-api/switch-to-net-cpp

« back to all changes in this revision

Viewing changes to src/scopes/internal/smartscopes/HttpClientNetCpp.cpp

  • Committer: Marcus Tomlinson
  • Date: 2015-01-19 09:15:06 UTC
  • Revision ID: marcus.tomlinson@canonical.com-20150119091506-51ra7g9ln51zim5g
Reverted chucked data retreival change

Show diffs side-by-side

added added

removed removed

Lines of Context:
137
137
 
138
138
    auto id_and_cancelable = CancellationRegistry::instance().add();
139
139
 
140
 
    auto tmp_data = std::make_shared<std::string>();
141
140
    request->async_execute(
142
141
                http::Request::Handler()
143
142
                    .on_progress([id_and_cancelable](const http::Request::Progress&)
146
145
                                    http::Request::Progress::Next::abort_operation :
147
146
                                    http::Request::Progress::Next::continue_operation;
148
147
                    })
149
 
                    .on_data([tmp_data, line_data](const std::string& const_data)
150
 
                    {
151
 
                        // prepend any leftover data from the previous on_data() call
152
 
                        std::string data = *tmp_data + const_data;
153
 
 
154
 
                        // read data line-by-line calling line_data() for each
155
 
                        auto newline_pos = 0;
156
 
                        auto endline_pos = data.find('\n');
157
 
                        while (endline_pos != std::string::npos)
158
 
                        {
159
 
                            line_data(data.substr(newline_pos, endline_pos - newline_pos));
160
 
                            newline_pos = endline_pos + 1;
161
 
                            endline_pos = data.find('\n', newline_pos);
162
 
                        }
163
 
 
164
 
                        // store the leftover data in tmp_data
165
 
                        *tmp_data = data.substr(newline_pos, data.size() - newline_pos);
166
 
                    })
167
 
                    .on_response([promise, tmp_data, line_data](const http::Response& response)
 
148
                    .on_response([line_data, promise](const http::Response& response)
168
149
                    {
169
150
                        if (response.status != http::Status::ok)
170
151
                        {
176
157
                        }
177
158
                        else
178
159
                        {
179
 
                            // call line_data() for the leftover data from on_data()
180
 
                            if (!(*tmp_data).empty())
 
160
                            std::istringstream in(response.body);
 
161
                            std::string line;
 
162
                            while (std::getline(in, line))
181
163
                            {
182
 
                                line_data(*tmp_data);
 
164
                                line_data(line);
183
165
                            }
184
166
                            promise->set_value();
185
167
                        }