almodovar 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +33 -11
- data/lib/almodovar.rb +13 -6
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
=Almodovar
|
2
2
|
|
3
|
-
Almodovar is a client for BeBanjo Movida API written in Ruby
|
3
|
+
Almodovar is a client for BeBanjo's Movida API written in Ruby
|
4
4
|
|
5
5
|
==Getting started
|
6
6
|
|
@@ -38,20 +38,42 @@ Ok. Let's see what we have under _platforms_
|
|
38
38
|
<link href="http://movida.example.com/api/platforms/6/schedule" rel="schedule"/>
|
39
39
|
</platform>]
|
40
40
|
|
41
|
-
Now, show me the _schedule_ of
|
42
|
-
|
43
|
-
>> movida.
|
41
|
+
Now, show me the _schedule_ of a _title_ given its external id:
|
42
|
+
|
43
|
+
>> movida.titles(:external_id => "C5134350003").first.schedule(:expand => :schedulings)
|
44
44
|
=> <schedule>
|
45
|
-
<link href="http://
|
46
|
-
<
|
45
|
+
<link href="http://staging.schedule.bebanjo.net/api/titles/498/schedule/schedulings" rel="schedulings"><schedulings type="array">
|
46
|
+
<scheduling>
|
47
|
+
<id type="integer">1122</id>
|
48
|
+
<put-up type="datetime">2010-04-17T00:00:00Z</put-up>
|
49
|
+
<take-down type="datetime">2010-06-17T00:00:00Z</take-down>
|
50
|
+
<scheduling-type>archive</scheduling-type>
|
51
|
+
<link href="http://staging.schedule.bebanjo.net/api/title_groups/129" rel="title_group"/>
|
52
|
+
<link href="http://staging.schedule.bebanjo.net/api/titles/498" rel="title"/>
|
53
|
+
</scheduling>
|
54
|
+
</schedulings>
|
55
|
+
</link>
|
56
|
+
<link href="http://staging.schedule.bebanjo.net/api/titles/498" rel="title"/>
|
47
57
|
</schedule>
|
48
58
|
|
49
|
-
|
59
|
+
Of course, once you've got the URL of a resource, the next time you don't need to navigate from the root of the API. You can (should!) start from the resource URL:
|
60
|
+
|
61
|
+
>> schedulings = Almodovar::Resource("http://staging.schedule.bebanjo.net/api/titles/498/schedule/schedulings", auth)
|
62
|
+
=> [<scheduling>
|
63
|
+
<id type="integer">1122</id>
|
64
|
+
<put-up type="datetime">2010-04-17T00:00:00Z</put-up>
|
65
|
+
<take-down type="datetime">2010-06-17T00:00:00Z</take-down>
|
66
|
+
<scheduling-type>archive</scheduling-type>
|
67
|
+
<link href="http://staging.schedule.bebanjo.net/api/title_groups/129" rel="title_group"/>
|
68
|
+
<link href="http://staging.schedule.bebanjo.net/api/titles/498" rel="title"/>
|
69
|
+
</scheduling>]
|
70
|
+
|
71
|
+
|
72
|
+
Next, explore the {API docs}[http://wiki.github.com/bebanjo/almodovar/] to learn about other resources.
|
50
73
|
|
51
74
|
==To-do
|
52
75
|
|
53
|
-
*
|
54
|
-
*
|
55
|
-
* Ability to take advantage of the API _expand_ functionality (e.g. <tt>movida.titles(:expand => [:schedule, :schedulings]).schedule.schedulings</tt>)
|
76
|
+
* Memoize linked resource calls so that the same request isn't made several times
|
77
|
+
* See what is preventing latest version of Resourceful from working and fix it (Now we're using a vendorized, patched version based on resourceful 0.5.3)
|
56
78
|
|
57
|
-
Copyright (c)
|
79
|
+
Copyright (c) 2010 BeBanjo S.L., released under the MIT license
|
data/lib/almodovar.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'resourceful'
|
1
|
+
require File.dirname(__FILE__) + '/../vendor/resourceful-0.5.3-patched/lib/resourceful'
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
4
|
module Almodovar
|
@@ -18,19 +18,22 @@ module Almodovar
|
|
18
18
|
|
19
19
|
private
|
20
20
|
|
21
|
+
undef id
|
22
|
+
|
21
23
|
def method_missing(meth, *args, &blk)
|
22
|
-
attribute = @xml.at_xpath("./*[name()='#{meth}']")
|
24
|
+
attribute = @xml.at_xpath("./*[name()='#{meth}' or name()='#{attribute_name(meth)}']")
|
23
25
|
return node_text(attribute) if attribute
|
24
26
|
|
25
|
-
link = @xml.at_xpath("./link[@rel='#{meth}']")
|
26
|
-
return get_linked_resource(link) if link
|
27
|
+
link = @xml.at_xpath("./link[@rel='#{meth}' or @rel='#{attribute_name(meth)}']")
|
28
|
+
return get_linked_resource(link, args.first) if link
|
27
29
|
|
28
30
|
super
|
29
31
|
end
|
30
32
|
|
31
|
-
def get_linked_resource(link)
|
33
|
+
def get_linked_resource(link, options = {})
|
34
|
+
options ||= {}
|
32
35
|
expansion = link.at_xpath("./*")
|
33
|
-
expansion ? Almodovar.instantiate(expansion, @auth) : Almodovar::Resource(link['href'], @auth)
|
36
|
+
options.empty? && expansion ? Almodovar.instantiate(expansion, @auth) : Almodovar::Resource(link['href'], @auth, options)
|
34
37
|
end
|
35
38
|
|
36
39
|
def node_text(node)
|
@@ -41,6 +44,10 @@ module Almodovar
|
|
41
44
|
node.text
|
42
45
|
end
|
43
46
|
end
|
47
|
+
|
48
|
+
def attribute_name(attribute)
|
49
|
+
attribute.to_s.gsub('_', '-')
|
50
|
+
end
|
44
51
|
end
|
45
52
|
|
46
53
|
def self.Resource(url, auth, params = {})
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 0
|
8
7
|
- 1
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- BeBanjo S.L.
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-12 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|