@@ -227,6 +227,10 @@ class InsightsMapper extends DataEndpointMapper {
227
227
" facebook/feed" → " Posts composed" ,
228
228
" notables/feed" → " Notes taken" ,
229
229
" spotify/feed" → " Songs listened to" ,
230
+ " instagram/feed" → " Photos uploaded" ,
231
+ " fitbit/weight" -> " Fitbit weight records" ,
232
+ " fitbit/sleep" -> " Fitbit sleep records" ,
233
+ " fitbit/activity" -> " Fitbit activities logged" ,
230
234
" calendar/google/events" → " Calendar events recorded" ,
231
235
" monzo/transactions" → " Transactions performed" ,
232
236
" she/insights/emotions" -> " Posts analysed for Sentiments" ,
@@ -239,6 +243,10 @@ class InsightsMapper extends DataEndpointMapper {
239
243
" facebook/feed" → " facebook" ,
240
244
" notables/feed" → " notables" ,
241
245
" spotify/feed" → " spotify" ,
246
+ " instagram/feed" → " instagram" ,
247
+ " fitbit/weight" -> " fitbit-weight" ,
248
+ " fitbit/sleep" -> " fitbit-sleep" ,
249
+ " fitbit/activity" -> " fitbit-activity" ,
242
250
" calendar/google/events" → " google" ,
243
251
" monzo/transactions" → " monzo" ,
244
252
" she/insights/emotions" -> " sentiment" ,
@@ -622,8 +630,8 @@ class FacebookProfileMapper extends DataEndpointMapper with FeedItemComparator {
622
630
def dataQueries (fromDate : Option [DateTime ], untilDate : Option [DateTime ]): Seq [PropertyQuery ] = {
623
631
Seq (PropertyQuery (
624
632
List (
625
- EndpointQuery (" facebook/profile" , None , dateFilter(fromDate, untilDate).map(f ⇒ Seq (EndpointQueryFilter (" updated_time " , None , f))), None )),
626
- Some (" updated_time " ), Some (" descending" ), None ))
633
+ EndpointQuery (" facebook/profile" , None , dateFilter(fromDate, untilDate).map(f ⇒ Seq (EndpointQueryFilter (" hat_updated_time " , None , f))), None )),
634
+ Some (" hat_updated_time " ), Some (" descending" ), None ))
627
635
}
628
636
629
637
def mapDataRecord (recordId : UUID , content : JsValue , tailRecordId : Option [UUID ] = None , tailContent : Option [JsValue ] = None ): Try [DataFeedItem ] = {
@@ -640,7 +648,7 @@ class FacebookProfileMapper extends DataEndpointMapper with FeedItemComparator {
640
648
Some (contentText), None , None , None ))
641
649
}
642
650
} yield {
643
- DataFeedItem (" facebook" , (tailContent.getOrElse(content) \ " updated_time " ).as[DateTime ], Seq (" profile" ),
651
+ DataFeedItem (" facebook" , (tailContent.getOrElse(content) \ " hat_updated_time " ).as[DateTime ], Seq (" profile" ),
644
652
Some (title), Some (itemContent), None )
645
653
}
646
654
}
@@ -760,6 +768,54 @@ class FacebookFeedMapper extends DataEndpointMapper {
760
768
}
761
769
}
762
770
771
+ class FacebookPagesLikesMapper extends DataEndpointMapper {
772
+ def dataQueries (fromDate : Option [DateTime ], untilDate : Option [DateTime ]): Seq [PropertyQuery ] = {
773
+ Seq (PropertyQuery (
774
+ List (
775
+ EndpointQuery (" facebook/likes/pages" , None , dateFilter(fromDate, untilDate).map(f ⇒ Seq (EndpointQueryFilter (" created_time" , None , f))), None )),
776
+ Some (" created_time" ), Some (" descending" ), None ))
777
+ }
778
+
779
+ def mapDataRecord (recordId : UUID , content : JsValue , tailRecordId : Option [UUID ] = None , tailContent : Option [JsValue ] = None ): Try [DataFeedItem ] = {
780
+ for {
781
+ name <- Try ((content \ " name" ).as[String ])
782
+ title <- Try (DataFeedItemTitle (s " You liked $name" , None , None ))
783
+
784
+ itemContent ← Try (DataFeedItemContent (
785
+ Some (
786
+ s """ Page Name - ${name}
787
+ |
788
+ |Location - ${(content \ " location" \ " city" ).asOpt[String ].getOrElse(" " )}
789
+ |Website - ${(content \ " website" ).asOpt[String ].getOrElse(" " )}""" .stripMargin.trim), None , None , None ))
790
+ date ← Try ((content \ " created_time" ).as[DateTime ])
791
+ tags ← Try (Seq (" page" , name))
792
+ } yield {
793
+
794
+ val locationGeo = Try (LocationGeo (
795
+ (content \ " location" \ " longitude" ).as[Double ],
796
+ (content \ " location" \ " latitude" ).as[Double ])).toOption
797
+
798
+ val locationAddress = Try (LocationAddress (
799
+ (content \ " location" \ " country" ).asOpt[String ],
800
+ (content \ " location" \ " city" ).asOpt[String ],
801
+ (content \ " name" ).asOpt[String ],
802
+ (content \ " location" \ " street" ).asOpt[String ],
803
+ (content \ " location" \ " zip" ).asOpt[String ])).toOption
804
+
805
+ val maybeLocation = if (locationAddress.contains(LocationAddress (None , None , None , None , None ))) {
806
+ None
807
+ }
808
+ else {
809
+ locationAddress
810
+ }
811
+
812
+ val location = locationGeo.orElse(maybeLocation).map(_ ⇒ DataFeedItemLocation (locationGeo, maybeLocation, None ))
813
+
814
+ DataFeedItem (" facebook" , date, tags, Some (title), Some (itemContent), location)
815
+ }
816
+ }
817
+ }
818
+
763
819
class NotablesFeedMapper extends DataEndpointMapper {
764
820
def dataQueries (fromDate : Option [DateTime ], untilDate : Option [DateTime ]): Seq [PropertyQuery ] = {
765
821
Seq (PropertyQuery (
0 commit comments