3

I am doing a project for fun and one of the requirements is to the JSON data from an API of my choice and transform it into an activity stream using angularjs.

I've googled and read what an activity stream is and I believe I have a basic understanding of it. It's essentially transforming an action into a specific JSON format using the keywords "actor", "verb", "object", and "target".

When I look at examples, I understand why that specific JSON string is considered an activity stream.

Example:

  {
"published": "2011-02-10T15:04:55Z",
"actor": {
  "url": "http://example.org/martin",
  "objectType" : "person",
  "id": "tag:example.org,2011:martin",
  "image": {
    "url": "http://example.org/martin/image",
    "width": 250,
    "height": 250
  },
  "displayName": "Martin Smith"
},
"verb": "post",
"object" : {
  "url": "http://example.org/blog/2011/02/entry",
  "id": "tag:example.org,2011:abc123/xyz"
},
"target" : {
  "url": "http://example.org/blog/",
  "objectType": "blog",
  "id": "tag:example.org,2011:abc123",
  "displayName": "Martin's Blog"
}

}

But I'm confused in terms of how to transform my JSON Data into an activity stream.

My JSON doesn't have an "actor", nor does it have a "verb". If anyone can please explain or provide a solution that would be greatly appreciated. Thank you!

Weather API

{
  "coord": {
    "lon": -0.13,
    "lat": 51.51
  },
  "weather": [
    {
      "id": 300,
      "main": "Drizzle",
      "description": "light intensity drizzle",
      "icon": "09d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 280.32,
    "pressure": 1012,
    "humidity": 81,
    "temp_min": 279.15,
    "temp_max": 281.15
  },
  "visibility": 10000,
  "wind": {
    "speed": 4.1,
    "deg": 80
  },
  "clouds": {
    "all": 90
  },
  "dt": 1485789600,
  "sys": {
    "type": 1,
    "id": 5091,
    "message": 0.0103,
    "country": "GB",
    "sunrise": 1485762037,
    "sunset": 1485794875
  },
  "id": 2643743,
  "name": "London",
  "cod": 200
}
hiswendy
  • 373
  • 1
  • 3
  • 14
  • If I'm understanding the purpose of an activity stream, it looks like it's a way to handle data that's actionable. The first JSON sample represents the user martin who can "post" using the associated object and target. The weather data you have is not actionable. It just represents data that is to be displayed. All of it would be wrapped up into the "actor" section of your activity stream, I think. I don't have a lot of experience with these things. (thus the comment and not an answer) – SethWhite Jul 05 '17 at 19:54

2 Answers2

1

ActivityStream is just a specification for activities. Weather is just a model. A model can either be a subject/actor or an object that an actor acts upon to. In this case, weather can only be an object.

An example of activity that deals with weather is:

Martin checks the weather for London at 3:04 PM UTC on February 10, 2015.

The corresponding activity JSON is:

{
  "published": "2015-02-10T15:04:55Z",
  "actor": {
    "url": "http://example.org/martin",
    "objectType" : "person",
    "id": "tag:example.org,2011:martin",
    "image": {
      "url": "http://example.org/martin/image",
      "width": 250,
      "height": 250
    },
    "displayName": "Martin Smith"
  },
  "verb": "search",
  "object" : {
    "url": "http://api.openweathermap.org/data/2.5/weather?q=London",
    "name": "London's weather",
    "published": "2015-02-10T15:04:55Z"
  }
}

Note that this is only an example. You may have different activities, depending on how you want to use the weather data.

Sơn Trần-Nguyễn
  • 2,188
  • 1
  • 26
  • 30
0

The activity stream concept is pretty simple. Here's a good example: "Wendy adds London to her list Places to visit"

In this case the actor is "wendy", the object is "london" the verb is "add" and the target is "places to visit".

You can use this syntax to support different use cases. I've seen people us it the activity stream spec for everything ranging from Leed certification of buildings, error reporting to social apps.

Example 2:

Application Uber broke down with error code 2 and has been assigned to John

  • Actor: application:uber
  • Verb: break
  • Object: Error:2
  • Target: user:John

Example 3:

RoadToVR published an article about Echo Arena

  • Actor: RoadToVR
  • Verb: published
  • Object: Article:123

Advanced fields

The spec also outlines the TO field. You can use the TO field to support @mentions, hashtags and notifications.

Version 2

There is also a new version of the activity stream spec available: https://www.w3.org/TR/activitystreams-core/ So far I don't see any evidence of applications adopting this new spec.

Activity stream tutorial

This tutorial is a nice starting point if you want to build a Twitter style feed: https://getstream.io/get_started/

Thierry
  • 3,225
  • 1
  • 26
  • 26