GeoLocationRichObject.m 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
  3. * SPDX-License-Identifier: GPL-3.0-or-later
  4. */
  5. #import "GeoLocationRichObject.h"
  6. NSString * const GeoLocationRichObjectType = @"geo-location";
  7. @implementation GeoLocationRichObject
  8. + (instancetype)geoLocationRichObjectWithLatitude:(double)latitude longitude:(double)longitude name:(NSString *)name
  9. {
  10. GeoLocationRichObject *object = [[self alloc] init];
  11. NSString *latitudeString = [[NSNumber numberWithDouble:latitude] stringValue];
  12. NSString *longitudeString = [[NSNumber numberWithDouble:longitude] stringValue];
  13. object.objectType = GeoLocationRichObjectType;
  14. object.objectId = [NSString stringWithFormat:@"geo:%@,%@", latitudeString, longitudeString];
  15. object.latitude = latitudeString;
  16. object.longitude = longitudeString;
  17. object.name = name;
  18. return object;
  19. }
  20. + (instancetype)geoLocationRichObjectFromMessageLocationParameter:(NCMessageLocationParameter *)parameter
  21. {
  22. GeoLocationRichObject *richObject = [[self alloc] init];
  23. richObject.objectType = parameter.type;
  24. richObject.objectId = parameter.parameterId;
  25. richObject.latitude = parameter.latitude;
  26. richObject.longitude = parameter.longitude;
  27. richObject.name = parameter.name;
  28. return richObject;
  29. }
  30. - (NSDictionary *)metaData
  31. {
  32. return @{
  33. @"latitude": self.latitude,
  34. @"longitude": self.longitude,
  35. @"name": self.name
  36. };
  37. }
  38. - (NSDictionary *)richObjectDictionary
  39. {
  40. NSError *error;
  41. NSString *jsonString = @"";
  42. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[self metaData]
  43. options:0
  44. error:&error];
  45. if (!jsonData) {
  46. NSLog(@"Got an error: %@", error);
  47. } else {
  48. jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  49. }
  50. return @{
  51. @"objectType": self.objectType,
  52. @"objectId": self.objectId,
  53. @"metaData": jsonString
  54. };
  55. }
  56. @end