ostatus 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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