OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cloud_print/gcp20/prototype/privet_http_server.h" | 5 #include "cloud_print/gcp20/prototype/privet_http_server.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... |
28 const char kPrivetCapabilities[] = "/privet/capabilities"; | 28 const char kPrivetCapabilities[] = "/privet/capabilities"; |
29 const char kPrivetPrinterCreateJob[] = "/privet/printer/createjob"; | 29 const char kPrivetPrinterCreateJob[] = "/privet/printer/createjob"; |
30 const char kPrivetPrinterSubmitDoc[] = "/privet/printer/submitdoc"; | 30 const char kPrivetPrinterSubmitDoc[] = "/privet/printer/submitdoc"; |
31 const char kPrivetPrinterJobState[] = "/privet/printer/jobstate"; | 31 const char kPrivetPrinterJobState[] = "/privet/printer/jobstate"; |
32 | 32 |
33 // {"error":|error_type|} | 33 // {"error":|error_type|} |
34 scoped_ptr<base::DictionaryValue> CreateError(const std::string& error_type) { | 34 scoped_ptr<base::DictionaryValue> CreateError(const std::string& error_type) { |
35 scoped_ptr<base::DictionaryValue> error(new base::DictionaryValue); | 35 scoped_ptr<base::DictionaryValue> error(new base::DictionaryValue); |
36 error->SetString("error", error_type); | 36 error->SetString("error", error_type); |
37 | 37 |
38 return std::move(error); | 38 return error; |
39 } | 39 } |
40 | 40 |
41 // {"error":|error_type|, "description":|description|} | 41 // {"error":|error_type|, "description":|description|} |
42 scoped_ptr<base::DictionaryValue> CreateErrorWithDescription( | 42 scoped_ptr<base::DictionaryValue> CreateErrorWithDescription( |
43 const std::string& error_type, | 43 const std::string& error_type, |
44 const std::string& description) { | 44 const std::string& description) { |
45 scoped_ptr<base::DictionaryValue> error(CreateError(error_type)); | 45 scoped_ptr<base::DictionaryValue> error(CreateError(error_type)); |
46 error->SetString("description", description); | 46 error->SetString("description", description); |
47 return std::move(error); | 47 return error; |
48 } | 48 } |
49 | 49 |
50 // {"error":|error_type|, "timeout":|timeout|} | 50 // {"error":|error_type|, "timeout":|timeout|} |
51 scoped_ptr<base::DictionaryValue> CreateErrorWithTimeout( | 51 scoped_ptr<base::DictionaryValue> CreateErrorWithTimeout( |
52 const std::string& error_type, | 52 const std::string& error_type, |
53 int timeout) { | 53 int timeout) { |
54 scoped_ptr<base::DictionaryValue> error(CreateError(error_type)); | 54 scoped_ptr<base::DictionaryValue> error(CreateError(error_type)); |
55 error->SetInteger("timeout", timeout); | 55 error->SetInteger("timeout", timeout); |
56 return std::move(error); | 56 return error; |
57 } | 57 } |
58 | 58 |
59 // Converts state to string. | 59 // Converts state to string. |
60 std::string LocalPrintJobStateToString(LocalPrintJob::State state) { | 60 std::string LocalPrintJobStateToString(LocalPrintJob::State state) { |
61 switch (state) { | 61 switch (state) { |
62 case LocalPrintJob::STATE_DRAFT: | 62 case LocalPrintJob::STATE_DRAFT: |
63 return "draft"; | 63 return "draft"; |
64 break; | 64 break; |
65 case LocalPrintJob::STATE_ABORTED: | 65 case LocalPrintJob::STATE_ABORTED: |
66 return "done"; | 66 return "done"; |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 for (size_t i = 0; i < info.api.size(); ++i) | 271 for (size_t i = 0; i < info.api.size(); ++i) |
272 api.AppendString(info.api[i]); | 272 api.AppendString(info.api[i]); |
273 response->Set("api", api.DeepCopy()); | 273 response->Set("api", api.DeepCopy()); |
274 | 274 |
275 base::ListValue type; | 275 base::ListValue type; |
276 for (size_t i = 0; i < info.type.size(); ++i) | 276 for (size_t i = 0; i < info.type.size(); ++i) |
277 type.AppendString(info.type[i]); | 277 type.AppendString(info.type[i]); |
278 response->Set("type", type.DeepCopy()); | 278 response->Set("type", type.DeepCopy()); |
279 | 279 |
280 *status_code = net::HTTP_OK; | 280 *status_code = net::HTTP_OK; |
281 return std::move(response); | 281 return response; |
282 } | 282 } |
283 | 283 |
284 scoped_ptr<base::DictionaryValue> PrivetHttpServer::ProcessCapabilities( | 284 scoped_ptr<base::DictionaryValue> PrivetHttpServer::ProcessCapabilities( |
285 net::HttpStatusCode* status_code) const { | 285 net::HttpStatusCode* status_code) const { |
286 if (!delegate_->IsRegistered()) { | 286 if (!delegate_->IsRegistered()) { |
287 *status_code = net::HTTP_NOT_FOUND; | 287 *status_code = net::HTTP_NOT_FOUND; |
288 return scoped_ptr<base::DictionaryValue>(); | 288 return scoped_ptr<base::DictionaryValue>(); |
289 } | 289 } |
290 return make_scoped_ptr(delegate_->GetCapabilities().DeepCopy()); | 290 return make_scoped_ptr(delegate_->GetCapabilities().DeepCopy()); |
291 } | 291 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 switch (status) { | 370 switch (status) { |
371 case LocalPrintJob::SAVE_SUCCESS: | 371 case LocalPrintJob::SAVE_SUCCESS: |
372 response->SetString("job_id", job_id); | 372 response->SetString("job_id", job_id); |
373 response->SetInteger("expires_in", expires_in); | 373 response->SetInteger("expires_in", expires_in); |
374 response->SetString("job_type", job.content_type); | 374 response->SetString("job_type", job.content_type); |
375 response->SetString( | 375 response->SetString( |
376 "job_size", | 376 "job_size", |
377 base::StringPrintf("%u", static_cast<uint32_t>(job.content.size()))); | 377 base::StringPrintf("%u", static_cast<uint32_t>(job.content.size()))); |
378 if (job_name_present) | 378 if (job_name_present) |
379 response->SetString("job_name", job.job_name); | 379 response->SetString("job_name", job.job_name); |
380 return std::move(response); | 380 return response; |
381 | 381 |
382 case LocalPrintJob::SAVE_INVALID_PRINT_JOB: | 382 case LocalPrintJob::SAVE_INVALID_PRINT_JOB: |
383 return CreateErrorWithTimeout("invalid_print_job", timeout); | 383 return CreateErrorWithTimeout("invalid_print_job", timeout); |
384 case LocalPrintJob::SAVE_INVALID_DOCUMENT_TYPE: | 384 case LocalPrintJob::SAVE_INVALID_DOCUMENT_TYPE: |
385 return CreateError("invalid_document_type"); | 385 return CreateError("invalid_document_type"); |
386 case LocalPrintJob::SAVE_INVALID_DOCUMENT: | 386 case LocalPrintJob::SAVE_INVALID_DOCUMENT: |
387 return CreateError("invalid_document"); | 387 return CreateError("invalid_document"); |
388 case LocalPrintJob::SAVE_DOCUMENT_TOO_LARGE: | 388 case LocalPrintJob::SAVE_DOCUMENT_TOO_LARGE: |
389 return CreateError("document_too_large"); | 389 return CreateError("document_too_large"); |
390 case LocalPrintJob::SAVE_PRINTER_BUSY: | 390 case LocalPrintJob::SAVE_PRINTER_BUSY: |
(...skipping 17 matching lines...) Expand all Loading... |
408 std::string job_id; | 408 std::string job_id; |
409 net::GetValueForKeyInQuery(url, "job_id", &job_id); | 409 net::GetValueForKeyInQuery(url, "job_id", &job_id); |
410 LocalPrintJob::Info info; | 410 LocalPrintJob::Info info; |
411 if (!delegate_->GetJobState(job_id, &info)) | 411 if (!delegate_->GetJobState(job_id, &info)) |
412 return CreateError("invalid_print_job"); | 412 return CreateError("invalid_print_job"); |
413 | 413 |
414 scoped_ptr<base::DictionaryValue> response(new base::DictionaryValue); | 414 scoped_ptr<base::DictionaryValue> response(new base::DictionaryValue); |
415 response->SetString("job_id", job_id); | 415 response->SetString("job_id", job_id); |
416 response->SetString("state", LocalPrintJobStateToString(info.state)); | 416 response->SetString("state", LocalPrintJobStateToString(info.state)); |
417 response->SetInteger("expires_in", info.expires_in); | 417 response->SetInteger("expires_in", info.expires_in); |
418 return std::move(response); | 418 return response; |
419 } | 419 } |
420 | 420 |
421 scoped_ptr<base::DictionaryValue> PrivetHttpServer::ProcessRegister( | 421 scoped_ptr<base::DictionaryValue> PrivetHttpServer::ProcessRegister( |
422 const GURL& url, | 422 const GURL& url, |
423 net::HttpStatusCode* status_code) const { | 423 net::HttpStatusCode* status_code) const { |
424 if (delegate_->IsRegistered()) { | 424 if (delegate_->IsRegistered()) { |
425 *status_code = net::HTTP_NOT_FOUND; | 425 *status_code = net::HTTP_NOT_FOUND; |
426 return scoped_ptr<base::DictionaryValue>(); | 426 return scoped_ptr<base::DictionaryValue>(); |
427 } | 427 } |
428 | 428 |
(...skipping 30 matching lines...) Expand all Loading... |
459 | 459 |
460 if (action == "cancel") | 460 if (action == "cancel") |
461 status = delegate_->RegistrationCancel(user); | 461 status = delegate_->RegistrationCancel(user); |
462 } | 462 } |
463 | 463 |
464 if (status != REG_ERROR_OK) | 464 if (status != REG_ERROR_OK) |
465 response.reset(); | 465 response.reset(); |
466 | 466 |
467 ProcessRegistrationStatus(status, &response); | 467 ProcessRegistrationStatus(status, &response); |
468 *status_code = net::HTTP_OK; | 468 *status_code = net::HTTP_OK; |
469 return std::move(response); | 469 return response; |
470 } | 470 } |
471 | 471 |
472 void PrivetHttpServer::ProcessRegistrationStatus( | 472 void PrivetHttpServer::ProcessRegistrationStatus( |
473 RegistrationErrorStatus status, | 473 RegistrationErrorStatus status, |
474 scoped_ptr<base::DictionaryValue>* current_response) const { | 474 scoped_ptr<base::DictionaryValue>* current_response) const { |
475 switch (status) { | 475 switch (status) { |
476 case REG_ERROR_OK: | 476 case REG_ERROR_OK: |
477 DCHECK(*current_response) << "Response shouldn't be empty."; | 477 DCHECK(*current_response) << "Response shouldn't be empty."; |
478 break; | 478 break; |
479 | 479 |
(...skipping 26 matching lines...) Expand all Loading... |
506 delegate_->GetRegistrationServerError(&description); | 506 delegate_->GetRegistrationServerError(&description); |
507 *current_response = CreateErrorWithDescription("server_error", | 507 *current_response = CreateErrorWithDescription("server_error", |
508 description); | 508 description); |
509 break; | 509 break; |
510 } | 510 } |
511 | 511 |
512 default: | 512 default: |
513 NOTREACHED(); | 513 NOTREACHED(); |
514 }; | 514 }; |
515 } | 515 } |
OLD | NEW |