Musashi
Musashi is a RestClient that follows relations or links.
Example
Protocol
curl -i http://foo.com/customers/1
{
"id": "1",
"login": "foo",
"name": "Foo Bar",
"phones": [
{
"number": "51156782323",
"extension": ""
},
{
"number": "51156782323",
"extension": "2345"
}
],
"emails": ["[email protected]",
"[email protected]",
"[email protected]"],
"address": {
"street": "No Where",
"number": "123",
"complement": "4-F",
"district": "Pinheiros",
"city": "São Paulo",
"state": "SP",
"country": "Brazil",
"postal_code": "000000"
},
"link": [
{
"rel": "items",
"href": "http://bar.com/customers/1/items"
}
]
}
curl -i http://bar.com/customer/1/items
{"entries" :
[ "http://bazz.com/items/1", "http://bazz.com/items/2" ]
}
curl -i http://bazz.com/items/1
{"name":"bazz item"}
Code
With class
require 'musashi'
class Customer
include Musashi
include Musashi::Resource::JSON
attr_accessor :id
endpoint = '"http://foo.com/customers/#{id}"'
end
customer.id = '1'
puts customer.login
puts customer.phones.first.number
puts customer.email.first
puts customer.address.number
customer.items.entries.each do |i|
puts i.name
end
Without class
require 'musashi'
customer = Musashi::Resource.new('http://foo.com/customer/1', :format => :json)
puts custome.id
puts customer.login
puts customer.phones.first.number
puts customer.email.first
puts customer.address.number
customer.items.entries.each do |i|
puts i.name
end