calendar_api_url_generator.cc 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "google_apis/calendar/calendar_api_url_generator.h"
  5. #include "base/strings/string_number_conversions.h"
  6. #include "google_apis/common/time_util.h"
  7. #include "net/base/url_util.h"
  8. #include "third_party/abseil-cpp/absl/types/optional.h"
  9. namespace google_apis {
  10. namespace calendar {
  11. namespace {
  12. // Hard coded URLs for communication with a google calendar server.
  13. constexpr char kCalendarV3EventsUrl[] = "calendar/v3/calendars/primary/events";
  14. constexpr char kCalendarV3ColorUrl[] = "calendar/v3/colors";
  15. constexpr char kTimeMaxParameterName[] = "timeMax";
  16. constexpr char kTimeMinParameterName[] = "timeMin";
  17. constexpr char kSingleEventsParameterName[] = "singleEvents";
  18. constexpr char kMaxAttendeesParameterName[] = "maxAttendees";
  19. } // namespace
  20. CalendarApiUrlGenerator::CalendarApiUrlGenerator() = default;
  21. CalendarApiUrlGenerator::CalendarApiUrlGenerator(
  22. const CalendarApiUrlGenerator& src) = default;
  23. CalendarApiUrlGenerator& CalendarApiUrlGenerator::operator=(
  24. const CalendarApiUrlGenerator& src) = default;
  25. CalendarApiUrlGenerator::~CalendarApiUrlGenerator() = default;
  26. GURL CalendarApiUrlGenerator::GetCalendarEventListUrl(
  27. const base::Time& start_time,
  28. const base::Time& end_time,
  29. bool single_events,
  30. absl::optional<int> max_attendees) const {
  31. GURL url = base_url_.Resolve(kCalendarV3EventsUrl);
  32. std::string start_time_string = util::FormatTimeAsString(start_time);
  33. std::string end_time_string = util::FormatTimeAsString(end_time);
  34. url = net::AppendOrReplaceQueryParameter(url, kTimeMinParameterName,
  35. start_time_string);
  36. url = net::AppendOrReplaceQueryParameter(url, kTimeMaxParameterName,
  37. end_time_string);
  38. url = net::AppendOrReplaceQueryParameter(url, kSingleEventsParameterName,
  39. single_events ? "true" : "false");
  40. if (max_attendees.has_value()) {
  41. url = net::AppendOrReplaceQueryParameter(
  42. url, kMaxAttendeesParameterName,
  43. base::NumberToString(max_attendees.value()));
  44. }
  45. return url;
  46. }
  47. GURL CalendarApiUrlGenerator::GetCalendarColorListUrl() const {
  48. GURL url = base_url_.Resolve(kCalendarV3ColorUrl);
  49. return url;
  50. }
  51. } // namespace calendar
  52. } // namespace google_apis