ostatus 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ script: "bundle exec rake spec"
@@ -5,3 +5,4 @@ require_relative 'ostatus/activity'
5
5
  require_relative 'ostatus/portable_contacts'
6
6
  require_relative 'ostatus/salmon'
7
7
  require_relative 'ostatus/thread'
8
+ require_relative 'ostatus/link'
@@ -1,5 +1,6 @@
1
1
  require_relative 'activity'
2
2
  require_relative 'portable_contacts'
3
+ require 'date'
3
4
 
4
5
  module OStatus
5
6
 
@@ -30,7 +31,7 @@ module OStatus
30
31
  element 'poco:connected'
31
32
 
32
33
  def initialize *args
33
- self.activity_object_type = "http://activitystrea.ms/schema/1.0/person"
34
+ self.activity_object_type = "http://activitystrea.ms/schema/1.0/person"
34
35
  super(*args)
35
36
  end
36
37
 
@@ -1,6 +1,7 @@
1
1
  require_relative 'activity'
2
2
  require_relative 'author'
3
3
  require_relative 'thread'
4
+ require_relative 'link'
4
5
 
5
6
  module OStatus
6
7
  THREAD_NS = 'http://purl.org/syndication/thread/1.0'
@@ -18,8 +19,8 @@ module OStatus
18
19
  add_extension_namespace :thr, THREAD_NS
19
20
  element 'thr:in-reply-to', :class => OStatus::Thread
20
21
 
21
- # This is for backwards compatibility with some implementations of Activity
22
- # Streams. It should not be used, and in fact is obscured as it is not a
22
+ # This is for backwards compatibility with some implementations of Activity
23
+ # Streams. It should not be used, and in fact is obscured as it is not a
23
24
  # method in OStatus::Activity.
24
25
  element 'activity:actor', :class => OStatus::Author
25
26
 
@@ -27,7 +28,8 @@ module OStatus
27
28
  element :title, :id, :summary
28
29
  element :updated, :published, :class => DateTime, :content_only => true
29
30
  element :source, :class => Atom::Source
30
- elements :links, :class => Atom::Link
31
+ elements :links, :class => OStatus::Link
32
+
31
33
  elements :categories, :class => Atom::Category
32
34
  element :content, :class => Atom::Content
33
35
  element :author, :class => OStatus::Author
@@ -0,0 +1,65 @@
1
+ module OStatus
2
+ class Link < Atom::Link
3
+ include Atom::Xml::Parseable
4
+ attribute :rel, :type, :length, :hreflang, :title, :text
5
+ uri_attribute :href
6
+
7
+ # Create a link.
8
+ #
9
+ # +o+:: An XML::Reader containing a link element or a Hash of attributes.
10
+ #
11
+ def initialize(o)
12
+ case o
13
+ when XML::Reader
14
+ if current_node_is?(o, 'link')
15
+ self.text = o.read_string
16
+ parse(o, :once => true)
17
+ else
18
+ raise ArgumentError, "Link created with node other than atom:link: #{o.name}"
19
+ end
20
+ when Hash
21
+ [:href, :rel, :type, :length, :hreflang, :title].each do |attr|
22
+ self.send("#{attr}=", o[attr])
23
+ end
24
+ else
25
+ raise ArgumentError, "Don't know how to handle #{o}"
26
+ end
27
+ end
28
+
29
+ remove_method :length=
30
+ def length=(v)
31
+ @length = v.to_i
32
+ end
33
+
34
+ def href
35
+ @href || self.text
36
+ end
37
+
38
+ def to_s
39
+ self.href
40
+ end
41
+
42
+ def ==(o)
43
+ o.respond_to?(:href) && o.href == self.href
44
+ end
45
+
46
+ # This will fetch the URL referenced by the link.
47
+ #
48
+ # If the URL contains a valid feed, a Feed will be returned, otherwise,
49
+ # the body of the response will be returned.
50
+ #
51
+ # TODO: Handle redirects.
52
+ #
53
+ def fetch(options = {})
54
+ begin
55
+ Atom::Feed.load_feed(URI.parse(self.href), options)
56
+ rescue ArgumentError
57
+ Net::HTTP.get_response(URI.parse(self.href)).body
58
+ end
59
+ end
60
+
61
+ def inspect
62
+ "<OStatus::Link href:'#{href}' type:'#{type}'>"
63
+ end
64
+ end
65
+ end
@@ -44,19 +44,23 @@ module OStatus
44
44
  # Will pull a OStatus::Entry from a magic envelope described by the xml.
45
45
  def Salmon.from_xml source
46
46
  if source.is_a?(String)
47
- source = XML::Document.string(source,
47
+ if source.length == 0
48
+ return nil
49
+ end
50
+
51
+ source = XML::Document.string(source,
48
52
  :options => XML::Parser::Options::NOENT)
49
53
  end
50
54
 
51
55
  # Retrieve the envelope
52
- envelope = source.find('/me:env',
56
+ envelope = source.find('/me:env',
53
57
  'me:http://salmon-protocol.org/ns/magic-env').first
54
58
 
55
59
  if envelope.nil?
56
60
  return nil
57
61
  end
58
62
 
59
- data = envelope.find('me:data',
63
+ data = envelope.find('me:data',
60
64
  'me:http://salmon-protocol.org/ns/magic-env').first
61
65
  if data.nil?
62
66
  return nil
@@ -140,7 +144,7 @@ module OStatus
140
144
 
141
145
  magic_envelope.root = XML::Node.new 'env'
142
146
 
143
- me_ns = XML::Namespace.new(magic_envelope.root,
147
+ me_ns = XML::Namespace.new(magic_envelope.root,
144
148
  'me', 'http://salmon-protocol.org/ns/magic-env')
145
149
 
146
150
  magic_envelope.root.namespaces.namespace = me_ns
@@ -164,13 +168,13 @@ module OStatus
164
168
 
165
169
  # Signature <me:sig>
166
170
  plaintext = "#{data_armored}.#{data_type_armored}.#{encoding_armored}.#{algorithm_armored}"
167
-
171
+
168
172
  # Assign @signature to the signature generated from the plaintext
169
173
  sign(plaintext, key)
170
174
 
171
175
  signature_armored = Base64::urlsafe_encode64(@signature)
172
176
  magic_envelope.root << XML::Node.new('sig', signature_armored, me_ns)
173
-
177
+
174
178
  magic_envelope.to_s :indent => true, :encoding => XML::Encoding::UTF_8
175
179
  end
176
180
 
@@ -183,7 +187,7 @@ module OStatus
183
187
  padding_count = modulus_byte_length - prefix.bytes.count - plaintext.bytes.count - 3
184
188
 
185
189
  padding = ""
186
- padding_count.times do
190
+ padding_count.times do
187
191
  padding = padding + "\xff"
188
192
  end
189
193
 
@@ -191,7 +195,7 @@ module OStatus
191
195
  end
192
196
 
193
197
  def sign message, key
194
- @plaintext = message
198
+ @plaintext = message
195
199
 
196
200
  modulus_byte_count = key.private_key.modulus.size
197
201
 
@@ -1,3 +1,3 @@
1
1
  module OStatus
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -14,8 +14,9 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "ostatus"
16
16
 
17
- s.add_dependency "ratom"
18
- s.add_development_dependency "rspec"
17
+ s.add_dependency "ratom", "~> 0.7.0"
18
+ s.add_development_dependency "rspec", "~> 2.10.0"
19
+ s.add_development_dependency "rake", "~> 0.9.2"
19
20
 
20
21
  s.files = `git ls-files`.split("\n")
21
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -64,8 +64,8 @@ describe 'XML builder' do
64
64
 
65
65
  specify { @feed.atom.should match('<title>atom powered robots') }
66
66
  specify { @feed.atom.should match('<content>atom powered robots') }
67
- specify { @feed.atom.should match("<updated>#{@now.iso8601}") }
68
- specify { @feed.atom.should match("<published>#{@now.iso8601}") }
67
+ specify { @feed.atom.should match(Regexp.escape("<updated>#{@now.iso8601}")) }
68
+ specify { @feed.atom.should match(Regexp.escape("<published>#{@now.iso8601}")) }
69
69
  specify { @feed.atom.should match('<id>http://example.org/feed/1') }
70
70
  specify { @feed.atom.should match('<link href="http://example.org/feed/1"/>') }
71
71
  end
@@ -1,11 +1,14 @@
1
1
  require_relative '../lib/ostatus/feed.rb'
2
2
  require_relative '../lib/ostatus/entry.rb'
3
3
  require_relative '../lib/ostatus/activity.rb'
4
+ require_relative '../lib/ostatus/link.rb'
4
5
 
5
6
  describe OStatus::Entry do
6
7
  before(:each) do
7
8
  @feed = OStatus::Feed.from_url('test/example_feed.atom')
8
9
  @entry = @feed.entries[0]
10
+ @feed_link_without_href = OStatus::Feed.from_url('test/example_feed_link_without_href.atom')
11
+ @entry_link_without_href = @feed_link_without_href.entries[0]
9
12
  end
10
13
 
11
14
  describe "#activity" do
@@ -45,7 +48,7 @@ describe OStatus::Entry do
45
48
  @entry.published.strftime("%Y-%m-%dT%I:%M:%S%z").should eql('2011-02-21T02:15:14+0000')
46
49
  end
47
50
  end
48
-
51
+
49
52
  describe "#id" do
50
53
  it "should return the id given in the id tag" do
51
54
  @entry.id.should eql('http://identi.ca/notice/64991641')
@@ -72,7 +75,7 @@ describe OStatus::Entry do
72
75
  it "should contain a Hash for the link" do
73
76
  @entry.info[:link].class.should eql(Hash)
74
77
  end
75
-
78
+
76
79
  it "should contain the published DateTime" do
77
80
  @entry.info[:published].class.should eql(DateTime)
78
81
  @entry.info[:published].strftime("%Y-%m-%dT%I:%M:%S%z").should eql('2011-02-21T02:15:14+0000')
@@ -83,4 +86,20 @@ describe OStatus::Entry do
83
86
  @entry.info[:updated].strftime("%Y-%m-%dT%I:%M:%S%z").should eql('2011-03-22T02:15:14+0000')
84
87
  end
85
88
  end
89
+
90
+ describe "#links" do
91
+ it "should use OStatus::Link elements" do
92
+ @entry.links.first.class.should eql(OStatus::Link)
93
+ end
94
+ end
95
+
96
+ describe "#url" do
97
+ it "should return the alternate link's href attribute" do
98
+ @entry.url.should eql("http://identi.ca/notice/64991641")
99
+ end
100
+
101
+ it "should return the alternate link's content if there's no href" do
102
+ @entry_link_without_href.url.should eql("http://identi.ca/notice/89057569")
103
+ end
104
+ end
86
105
  end
@@ -0,0 +1,9 @@
1
+ require_relative '../lib/ostatus/salmon.rb'
2
+
3
+ describe OStatus::Salmon do
4
+ describe "Salmon.from_xml" do
5
+ it "returns nil if source is empty string" do
6
+ OStatus::Salmon.from_xml("").should be_nil
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,134 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
3
+ <generator uri="http://status.net" version="1.0.1">StatusNet</generator>
4
+ <id>http://identi.ca/api/statuses/user_timeline/55937.atom?max_id=89098925</id>
5
+ <title>reality timeline</title>
6
+ <subtitle>Updates from reality on Identi.ca!</subtitle>
7
+ <logo>http://avatar3.status.net/i/identica/55937-96-20111008001238.jpeg</logo>
8
+ <updated>2012-02-01T02:37:57+00:00</updated>
9
+ <author>
10
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
11
+ <uri>http://identi.ca/user/55937</uri>
12
+ <name>reality</name>
13
+ <link rel="alternate" type="text/html" href="http://identi.ca/reality"/>
14
+ <link rel="avatar" type="image/jpeg" media:width="480" media:height="480" href="http://avatar3.status.net/i/identica/55937-480-20111008001238.jpeg"/>
15
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="http://avatar3.status.net/i/identica/55937-96-20111008001238.jpeg"/>
16
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="http://avatar3.status.net/i/identica/55937-48-20111008001238.jpeg"/>
17
+ <link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="http://avatar3.status.net/i/identica/55937-24-20111008001238.jpeg"/>
18
+ <georss:point>52.41548 -4.08292</georss:point>
19
+ <poco:preferredUsername>reality</poco:preferredUsername>
20
+ <poco:displayName>Luke Slater</poco:displayName>
21
+ <poco:note>Into the acoustic degree; a little bleak and edgy</poco:note>
22
+ <poco:address>
23
+ <poco:formatted>Aberystwyth, Wales</poco:formatted>
24
+ </poco:address>
25
+ <poco:urls>
26
+ <poco:type>homepage</poco:type>
27
+ <poco:value>http://nc.no.de/</poco:value>
28
+ <poco:primary>true</poco:primary>
29
+ </poco:urls>
30
+ <statusnet:profile_info local_id="55937"></statusnet:profile_info>
31
+
32
+ </author>
33
+ <!--Deprecation warning: activity:subject is present only for backward compatibility. It will be removed in the next version of StatusNet.-->
34
+ <activity:subject>
35
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
36
+ <id>http://identi.ca/user/55937</id>
37
+ <title>Luke Slater</title>
38
+ <link rel="alternate" type="text/html" href="http://identi.ca/reality"/>
39
+ <link rel="avatar" type="image/jpeg" media:width="480" media:height="480" href="http://avatar3.status.net/i/identica/55937-480-20111008001238.jpeg"/>
40
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="http://avatar3.status.net/i/identica/55937-96-20111008001238.jpeg"/>
41
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="http://avatar3.status.net/i/identica/55937-48-20111008001238.jpeg"/>
42
+ <link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="http://avatar3.status.net/i/identica/55937-24-20111008001238.jpeg"/>
43
+ <georss:point>52.41548 -4.08292</georss:point>
44
+ <poco:preferredUsername>reality</poco:preferredUsername>
45
+ <poco:displayName>Luke Slater</poco:displayName>
46
+ <poco:note>Into the acoustic degree; a little bleak and edgy</poco:note>
47
+ <poco:address>
48
+ <poco:formatted>Aberystwyth, Wales</poco:formatted>
49
+ </poco:address>
50
+ <poco:urls>
51
+ <poco:type>homepage</poco:type>
52
+ <poco:value>http://nc.no.de/</poco:value>
53
+ <poco:primary>true</poco:primary>
54
+ </poco:urls>
55
+ <statusnet:profile_info local_id="55937"></statusnet:profile_info>
56
+
57
+ </activity:subject>
58
+ <link href="http://identi.ca/reality" rel="alternate" type="text/html"/>
59
+ <link href="http://identi.ca/main/sup" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
60
+ <link href="http://identi.ca/api/statuses/user_timeline/55937.atom?max_id=89056842" rel="next" type="application/atom+xml"/>
61
+ <link href="http://identi.ca/api/statuses/user_timeline/55937.atom?since_id=89098925" rel="prev" type="application/atom+xml"/>
62
+ <link href="http://identi.ca/api/statuses/user_timeline/55937.atom" rel="first" type="application/atom+xml"/>
63
+ <link href="http://identi.ca/main/push/hub" rel="hub"/>
64
+ <link href="http://identi.ca/main/salmon/user/55937" rel="salmon"/>
65
+ <link href="http://identi.ca/main/salmon/user/55937" rel="http://salmon-protocol.org/ns/salmon-replies"/>
66
+ <link href="http://identi.ca/main/salmon/user/55937" rel="http://salmon-protocol.org/ns/salmon-mention"/>
67
+ <link href="http://identi.ca/api/statuses/user_timeline/55937.atom?max_id=89098925" rel="self" type="application/atom+xml"/>
68
+ <entry>
69
+ <id>http://identi.ca/notice/89057569</id>
70
+ <title>RT @psquid I think I’ll move to using char[][], just to annoy @speeddefrost.</title>
71
+ <content type="html">RT @&lt;span class=&quot;vcard&quot;&gt;&lt;a href=&quot;http://micro.fragdev.com/psquid&quot; class=&quot;url&quot; title=&quot;Psychedelic Squid&quot;&gt;&lt;span class=&quot;fn nickname mention&quot;&gt;psquid&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; I think I’ll move to using char[][], just to annoy @&lt;span class=&quot;vcard&quot;&gt;&lt;a href=&quot;http://identi.ca/user/36662&quot; class=&quot;url&quot; title=&quot;speeddefrost&quot;&gt;&lt;span class=&quot;fn nickname mention&quot;&gt;speeddefrost&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;.</content>
72
+ <link rel="alternate" type="text/html">http://identi.ca/notice/89057569</link>
73
+ <activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
74
+ <published>2012-01-23T03:04:39+00:00</published>
75
+ <updated>2012-01-23T03:04:39+00:00</updated>
76
+ <activity:object>
77
+ <activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
78
+ <id>http://micro.fragdev.com/notice/116469</id>
79
+ <title>I think I’ll move to using char[][], just to annoy @speeddefrost.</title>
80
+ <content type="html">I think I&amp;#8217;ll move to using char[][], just to annoy &amp;#64;&lt;span class=&quot;vcard&quot;&gt;&lt;a href=&quot;http://identi.ca/speeddefrost&quot; class=&quot;url&quot; title=&quot;speeddefrost&quot;&gt;&lt;span class=&quot;fn nickname mention&quot;&gt;speeddefrost&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;.</content>
81
+ <link rel="alternate" type="text/html">http://micro.fragdev.com/notice/116469</link>
82
+ <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
83
+ <published>2012-01-23T03:02:26+00:00</published>
84
+ <updated>2012-01-23T03:02:26+00:00</updated>
85
+ <author>
86
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
87
+ <uri>http://micro.fragdev.com/user/425</uri>
88
+ <name>psquid</name>
89
+ <link rel="alternate" type="text/html" href="http://micro.fragdev.com/psquid"/>
90
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="http://avatar3.status.net/i/identica/549245-original-20120131093453.jpeg"/>
91
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="http://avatar3.status.net/i/identica/549245-original-20120131093453.jpeg"/>
92
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="http://avatar3.status.net/i/identica/549245-48-20120131093453.jpeg"/>
93
+ <link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="http://avatar3.status.net/i/identica/549245-24-20120131093453.jpeg"/>
94
+ <georss:point>-47.15 -126.71666</georss:point>
95
+ <poco:preferredUsername>psquid</poco:preferredUsername>
96
+ <poco:displayName>psquid</poco:displayName>
97
+ <poco:note>Unhinge the daydream door; delve deep.</poco:note>
98
+ <poco:address>
99
+ <poco:formatted>R'lyeh</poco:formatted>
100
+ </poco:address>
101
+ <poco:urls>
102
+ <poco:type>homepage</poco:type>
103
+ <poco:value>http://psquid.net</poco:value>
104
+ <poco:primary>true</poco:primary>
105
+ </poco:urls>
106
+ <statusnet:profile_info local_id="549245"></statusnet:profile_info>
107
+ </author>
108
+ <activity:object>
109
+ <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
110
+ <id>http://micro.fragdev.com/notice/116469</id>
111
+ <title>I think I’ll move to using char[][], just to annoy @speeddefrost.</title>
112
+ <content type="html">I think I&amp;#8217;ll move to using char[][], just to annoy &amp;#64;&lt;span class=&quot;vcard&quot;&gt;&lt;a href=&quot;http://identi.ca/speeddefrost&quot; class=&quot;url&quot; title=&quot;speeddefrost&quot;&gt;&lt;span class=&quot;fn nickname mention&quot;&gt;speeddefrost&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;.</content>
113
+ <link rel="alternate" type="text/html" href="http://micro.fragdev.com/notice/116469"/>
114
+ </activity:object>
115
+ <link rel="ostatus:conversation" href="http://identi.ca/conversation/88893235"/>
116
+ <link rel="ostatus:attention" href="http://identi.ca/user/36662"/>
117
+ <link rel="mentioned" href="http://identi.ca/user/36662"/>
118
+ <source>
119
+ <id>http://micro.fragdev.com/api/statuses/user_timeline/425.atom</id>
120
+ <title>psquid</title>
121
+ <link rel="alternate" type="text/html" href="http://micro.fragdev.com/psquid"/>
122
+ <link rel="self" type="application/atom+xml" href="http://micro.fragdev.com/api/statuses/user_timeline/425.atom"/>
123
+ <icon>http://avatar3.status.net/i/identica/549245-original-20120131093453.jpeg</icon>
124
+ <updated>2012-02-01T02:27:07+00:00</updated>
125
+ </source>
126
+ </activity:object>
127
+ <link rel="ostatus:conversation" href="http://identi.ca/conversation/88893255"/>
128
+ <ostatus:forward ref="http://micro.fragdev.com/notice/116469" href="http://micro.fragdev.com/notice/116469"></ostatus:forward>
129
+ <link rel="self" type="application/atom+xml" href="http://identi.ca/api/statuses/show/89057569.atom"/>
130
+ <link rel="edit" type="application/atom+xml" href="http://identi.ca/api/statuses/show/89057569.atom"/>
131
+ <statusnet:notice_info local_id="89057569" source="web" repeat_of="89057548"></statusnet:notice_info>
132
+
133
+ </entry>
134
+ </feed>
metadata CHANGED
@@ -1,59 +1,75 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ostatus
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 10
9
- version: 0.0.10
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.11
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Hackers of the Severed Hand
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-06-09 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: ratom
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.0
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.0
30
+ - !ruby/object:Gem::Dependency
34
31
  name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.10.0
38
+ type: :development
35
39
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.10.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
37
49
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.9.2
44
54
  type: :development
45
- version_requirements: *id002
46
- description: This project is to be used to jumpstart OStatus related projects that implement the PubSubHubbub protocols by providing the common fundamentals of Atom parsing and OStatus object creation.
47
- email:
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.2
62
+ description: This project is to be used to jumpstart OStatus related projects that
63
+ implement the PubSubHubbub protocols by providing the common fundamentals of Atom
64
+ parsing and OStatus object creation.
65
+ email:
48
66
  - hotsh@xomb.org
49
67
  executables: []
50
-
51
68
  extensions: []
52
-
53
69
  extra_rdoc_files: []
54
-
55
- files:
70
+ files:
56
71
  - .gitignore
72
+ - .travis.yml
57
73
  - Gemfile
58
74
  - README.md
59
75
  - Rakefile
@@ -62,6 +78,7 @@ files:
62
78
  - lib/ostatus/author.rb
63
79
  - lib/ostatus/entry.rb
64
80
  - lib/ostatus/feed.rb
81
+ - lib/ostatus/link.rb
65
82
  - lib/ostatus/portable_contacts.rb
66
83
  - lib/ostatus/salmon.rb
67
84
  - lib/ostatus/thread.rb
@@ -73,50 +90,46 @@ files:
73
90
  - spec/entry_spec.rb
74
91
  - spec/feed_spec.rb
75
92
  - spec/portable_contacts_spec.rb
93
+ - spec/salmon_spec.rb
76
94
  - test/example_feed.atom
77
95
  - test/example_feed_empty_author.atom
78
96
  - test/example_feed_false_connected.atom
97
+ - test/example_feed_link_without_href.atom
79
98
  - test/example_page.html
80
- has_rdoc: true
81
99
  homepage: http://github.com/hotsh/ostatus
82
100
  licenses: []
83
-
84
101
  post_install_message:
85
102
  rdoc_options: []
86
-
87
- require_paths:
103
+ require_paths:
88
104
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
105
+ required_ruby_version: !ruby/object:Gem::Requirement
90
106
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- segments:
95
- - 0
96
- version: "0"
97
- required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
112
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- version: "0"
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
105
117
  requirements: []
106
-
107
118
  rubyforge_project: ostatus
108
- rubygems_version: 1.3.7
119
+ rubygems_version: 1.8.23
109
120
  signing_key:
110
121
  specification_version: 3
111
122
  summary: Implementations of the OStatus data stream objects.
112
- test_files:
123
+ test_files:
113
124
  - spec/activity_spec.rb
114
125
  - spec/author_spec.rb
115
126
  - spec/builder_spec.rb
116
127
  - spec/entry_spec.rb
117
128
  - spec/feed_spec.rb
118
129
  - spec/portable_contacts_spec.rb
130
+ - spec/salmon_spec.rb
119
131
  - test/example_feed.atom
120
132
  - test/example_feed_empty_author.atom
121
133
  - test/example_feed_false_connected.atom
134
+ - test/example_feed_link_without_href.atom
122
135
  - test/example_page.html