Search code examples
google-analyticsruby-on-rails-3.2google-analytics-apigarb-gem

Having trouble parsing response from Garb


I am trying to use Sija's Garb in my rails app. But I am having trouble parsing the response after getting the profiles. Here is a summary of what I am doing to get the profiles:

Garb::Session.access_token = token
subs = Garb::Management::Profile.all
@subsInfo = []
subs.each do |sub|
  sub_info = {:sid => sub.id,
              :sname => sub.name, 
              :surl => sub.websiteUrl
             }
  @subsInfo << sub_info
end

The problem is that, even though sub.id and sub.name work, I get an "undefined method 'websiteUrl'" message. This is what the subs response looks like when I raise to_yaml:

---
- !ruby/object:Garb::Management::Profile
  entry:
    id: '12345678'
    kind: analytics#profile
    selfLink: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-01234567-1/profiles/12345678
    accountId: '01234567'
    webPropertyId: UA-01234567-1
    internalWebPropertyId: '12345678'
    name: first property
    currency: USD
    timezone: America/New_York
    websiteUrl: http://www.firstproperty.com
    defaultPage: http://www.firstproperty.com/home.html
    type: WEB
    created: '2010-05-21T14:40:46.600Z'
    updated: '2011-02-02T16:51:12.910Z'
    eCommerceTracking: true
    parentLink:
      type: analytics#webproperty
      href: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-12345678-1
    childLink:
      type: analytics#goals
      href: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-01234567-1/profiles/12345678/goals
  session: &12345678901234 !ruby/class 'Garb::Session'
- !ruby/object:Garb::Management::Profile
  entry:
    id: '23456789'
    kind: analytics#profile
    selfLink: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-01234567-2/profiles/23456789
    accountId: '01234567'
    webPropertyId: UA-01234567-2
    internalWebPropertyId: '23456789'
    name: Second Property
    currency: USD
    timezone: America/Los_Angeles
    websiteUrl: http://www.secondproperty.com/
    defaultPage: http://www.secondproperty.com/index.html
    type: WEB
    created: '2010-07-05T19:58:33.611Z'
    updated: '2011-02-02T16:51:12.922Z'
    eCommerceTracking: true
    parentLink:
      type: analytics#webproperty
      href: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-01234567-2
    childLink:
      type: analytics#goals
      href: https://www.googleapis.com/analytics/v3/management/accounts/01234567/webproperties/UA-01234567-2/profiles/23456789/goals
  session: *012345678901234

I cannot for the life of me figure out why the websiteUrl is telling me that it's undefined. It's not just that property either, it's several other properties but for some reason id and name work just fine.


Solution

  • Found the answer here. The attribute was renamed from websiteUrl to website_url. Whoops.