“...I've been working since 2008 with Ruby / Ruby on Rails, love a bit of Elixir / Phoenix and learning Rust. I also poke through other people's code and make PRs for OpenSource Ruby projects that sometimes make it. Currently working for InPay...”

Rob Lacey (contact@robl.me)
Senior Software Engineer, Brighton, UK

Day 1: First MySpace / OpenSocial app

Have been playing all day, not fruitlessly but not as much fruit as I would have liked with creating a MySpace profile app, this one should simply print the name of the user viewing the app, the name of the user who has the app installed and whether or not the viewer has the app installed within their profile. From there on the user should be able to be prompted to add the app for themselves. Although its not quite working I should be there in a few more hours.

<script type="text/javascript" src="http://api.msappspace.com/AppRendering/js/jquery-1.2.1.min.js"></script>

<style type="text/css">
  div#widget {
    width: 300px;
    background-color: #bee0ed;
  }
  div#widget img {
    margin: 14px;
  }
</style>
<div id="widget">
  <img src="http://devsite/layout/logo.png" alt="My Site" class="logo" />
  <div id="viewer">
  </div> 
  <div id="owner">
  </div> 

</div>

<script type="text/javascript">
 
var os;
var dataReqObj;
var dataReqObj2;
var heading = null;
var viewer = null;

var v = opensocial.IdSpec.PersonId.VIEWER;
var o = opensocial.IdSpec.PersonId.OWNER;

function init() {
    os = opensocial.Container.get();
    
    var params = {};
    params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [opensocial.Person.Field.HAS_APP];

    dataReqObj = os.newDataRequest();
    var viewerReq = os.newFetchPersonRequest(v, params);
    dataReqObj.add(viewerReq);
    dataReqObj.send(viewerResponse);

    dataReqObj2 = os.newDataRequest();
    var viewerReq2 = os.newFetchPersonRequest(o);
    dataReqObj2.add(viewerReq2);
    dataReqObj2.send(ownerResponse);
}

function viewerResponse(data) {
    var viewer = data.get(v).getData();
    heading = 'Hello, ' + viewer.getDisplayName();
    var has_app = viewer.getField(opensocial.Person.Field.HAS_APP);
    heading += has_app;
    if (has_app) {
       heading += '<p>You have this app</p>';
    }
    document.getElementById('viewer').innerHTML = heading;
}

function ownerResponse(data) {
    var viewer = data.get(o).getData();
    heading = 'Hello, ' + viewer.getDisplayName();
    document.getElementById('owner').innerHTML = heading;
}

init();

</script>