tumblrb 1.0.6 → 2.0.1

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.
metadata CHANGED
@@ -2,15 +2,15 @@
2
2
  name: tumblrb
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.6
5
+ version: 2.0.1
6
6
  platform: ruby
7
7
  authors:
8
- - Jesse Reiss
8
+ - thegorgon
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-21 00:00:00 Z
13
+ date: 2011-10-25 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -24,25 +24,25 @@ dependencies:
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
- name: nokogiri
27
+ name: json
28
28
  prerelease: false
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 1.4.4
34
+ version: 1.6.0
35
35
  type: :runtime
36
36
  version_requirements: *id002
37
37
  - !ruby/object:Gem::Dependency
38
- name: curb
38
+ name: faraday
39
39
  prerelease: false
40
40
  requirement: &id003 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.7.15
45
+ version: 0.7.5
46
46
  type: :runtime
47
47
  version_requirements: *id003
48
48
  - !ruby/object:Gem::Dependency
@@ -51,12 +51,34 @@ dependencies:
51
51
  requirement: &id004 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
- - - ">="
54
+ - - ~>
55
55
  - !ruby/object:Gem::Version
56
- version: "0"
56
+ version: 2.2.0
57
57
  type: :runtime
58
58
  version_requirements: *id004
59
- description: A Ruby wrapper for the Tumblr XML API
59
+ - !ruby/object:Gem::Dependency
60
+ name: redis-objects
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.5.0
68
+ type: :runtime
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: will_paginate
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 3.0.0
79
+ type: :runtime
80
+ version_requirements: *id006
81
+ description: A simple blogging platform built on Tumblr and Redis
60
82
  email:
61
83
  - jessereiss@gmail.com
62
84
  executables: []
@@ -66,23 +88,31 @@ extensions: []
66
88
  extra_rdoc_files: []
67
89
 
68
90
  files:
69
- - README.mkd
70
- - LICENSE.mkd
91
+ - .rvmrc
71
92
  - Gemfile
72
- - tumblrb.gemspec
93
+ - Gemfile.lock
94
+ - LICENSE.mkd
95
+ - README.mkd
73
96
  - lib/tumblr.rb
74
- - lib/tumblr/answer.rb
75
- - lib/tumblr/audio.rb
76
- - lib/tumblr/conversation.rb
77
- - lib/tumblr/item.rb
78
- - lib/tumblr/link.rb
79
- - lib/tumblr/page.rb
80
- - lib/tumblr/photo.rb
97
+ - lib/tumblr/api.rb
98
+ - lib/tumblr/blog.rb
99
+ - lib/tumblr/config.rb
100
+ - lib/tumblr/middleware/params.rb
101
+ - lib/tumblr/middleware/parsing.rb
102
+ - lib/tumblr/object.rb
103
+ - lib/tumblr/objects/answer.rb
104
+ - lib/tumblr/objects/audio.rb
105
+ - lib/tumblr/objects/chat.rb
106
+ - lib/tumblr/objects/link.rb
107
+ - lib/tumblr/objects/photo.rb
108
+ - lib/tumblr/objects/post.rb
109
+ - lib/tumblr/objects/text.rb
110
+ - lib/tumblr/objects/user.rb
111
+ - lib/tumblr/objects/video.rb
112
+ - lib/tumblr/query.rb
81
113
  - lib/tumblr/quote.rb
82
- - lib/tumblr/regular.rb
83
- - lib/tumblr/user.rb
84
114
  - lib/tumblr/version.rb
85
- - lib/tumblr/video.rb
115
+ - tumblrb.gemspec
86
116
  homepage: https://github.com/thegorgon/tumblrb
87
117
  licenses: []
88
118
 
@@ -91,7 +121,6 @@ rdoc_options: []
91
121
 
92
122
  require_paths:
93
123
  - lib
94
- - lib
95
124
  required_ruby_version: !ruby/object:Gem::Requirement
96
125
  none: false
97
126
  requirements:
@@ -107,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
136
  requirements: []
108
137
 
109
138
  rubyforge_project: tumblrb
110
- rubygems_version: 1.8.10
139
+ rubygems_version: 1.8.11
111
140
  signing_key:
112
141
  specification_version: 3
113
142
  summary: Ruby wrapper for the Tumblr API
data/lib/tumblr/answer.rb DELETED
@@ -1,21 +0,0 @@
1
- module Tumblr
2
- class Answer < Item
3
- attr_accessor :question, :answer
4
-
5
- def as_json
6
- super.merge!({
7
- :question => question,
8
- :answer => answer
9
- })
10
- end
11
-
12
- private
13
-
14
- def parse_xml_node(node)
15
- super(node)
16
- self.caption = node.css('question').first.try(:content)
17
- self.source = node.css('answer').first.try(:content)
18
- self
19
- end
20
- end
21
- end
data/lib/tumblr/audio.rb DELETED
@@ -1,21 +0,0 @@
1
- module Tumblr
2
- class Audio < Item
3
- attr_accessor :caption, :player
4
-
5
- def as_json
6
- super.merge!({
7
- :caption => caption,
8
- :player => player
9
- })
10
- end
11
-
12
- private
13
-
14
- def parse_xml_node(node)
15
- super(node)
16
- self.caption = node.css('audio-caption').first.try(:content)
17
- self.source = node.css('audio-player').first.try(:content)
18
- self
19
- end
20
- end
21
- end
@@ -1,35 +0,0 @@
1
- module Tumblr
2
- class Conversation < Item
3
- attr_accessor :title, :text, :lines
4
-
5
- class Line < Struct.new(:name, :label, :content)
6
- def as_json
7
- {
8
- :name => name,
9
- :label => label,
10
- :content => content
11
- }
12
- end
13
- end
14
-
15
- def as_json
16
- super.merge!({
17
- :title => title,
18
- :text => text,
19
- :lines => lines.map { |l| l.as_json }
20
- })
21
- end
22
-
23
- private
24
-
25
- def self.parse_xml_node(node)
26
- super(node)
27
- self.title = node.css('conversation-title').first.try(:content)
28
- self.text = node.css('conversation-text').first.try(:content)
29
- self.lines = node.css("convesation line").collect do |line|
30
- Line.new(line["name"], line["label"], label.content)
31
- end
32
- self
33
- end
34
- end
35
- end
data/lib/tumblr/item.rb DELETED
@@ -1,110 +0,0 @@
1
- module Tumblr
2
- class Item
3
- PAGE_SIZE = 20
4
- attr_accessor :id, :slug, :type, :date, :format, :xml
5
- attr_accessor :tags
6
-
7
- def self.paginate(params={})
8
- params[:num] = params[:per_page].to_i > 0 ? params[:per_page].to_i : PAGE_SIZE
9
- params[:start] = ([params[:page].to_i, 1].max - 1) * params[:num]
10
- params.delete(:limit)
11
- params.delete(:page)
12
- if Tumblr.user
13
- params[:email] = Tumblr.user.email
14
- params[:password] = Tumblr.user.password
15
- end
16
- page_xml = xml(params)
17
- items = parse(page_xml)
18
- page_meta = page_xml.at("posts")
19
- if page_meta
20
- Tumblr::Page.new(items, page_meta["start"], page_meta["total"], params[:num])
21
- else
22
- Tumblr::Page.new(items, 0, items.length, params[:num])
23
- end
24
- end
25
-
26
- def self.find(id)
27
- paginate(:page => 1, :per_page => 1).first
28
- end
29
-
30
- def self.all(params={})
31
- parse(xml(params))
32
- end
33
-
34
- def self.xml(params={})
35
- Nokogiri::XML(raw(params))
36
- end
37
-
38
- def self.raw(params={})
39
- curl = Curl::Easy.perform(url(params))
40
- curl.body_str
41
- end
42
-
43
- def self.find(id)
44
- parse(xml(:id => id.to_i)).first
45
- end
46
-
47
- def to_param
48
- "#{id}-#{slug}"
49
- end
50
-
51
- def date_string
52
- date.strftime("%B %d, %Y")
53
- end
54
-
55
- def dom_class
56
- self.class.to_s.split("::").last.underscore
57
- end
58
-
59
- def as_json
60
- {
61
- :id => id,
62
- :slug => slug,
63
- :date => date,
64
- :type => type,
65
- :format => format,
66
- :tags => tags
67
- }
68
- end
69
-
70
- private
71
-
72
- def self.url(params)
73
- url = "http://#{Tumblr.blog}/api/read"
74
- if params.keys.length > 0
75
- query = Addressable::URI.new
76
- values = {}
77
- params.each do |key, value|
78
- values[key.to_s] = value.to_s
79
- end
80
- query.query_values = values
81
- url += "?#{query.query}"
82
- end
83
- url
84
- end
85
-
86
- def self.parse(xml)
87
- xml.css("posts post").collect do |post|
88
- object_class = "Tumblr::#{post['type'].classify}".constantize rescue nil
89
- if object_class
90
- object = object_class.new
91
- object.send(:parse_xml_node, post)
92
- object
93
- end
94
- end
95
- end
96
-
97
- def parse_xml_node(node)
98
- self.xml = node.to_s
99
- self.id = node['id']
100
- self.type = node['type']
101
- self.slug = node['slug']
102
- self.date = Time.at(node['unix-timestamp'].to_i)
103
- self.format = node['format']
104
- self.tags = node.css("tag").collect do |tag|
105
- tag.content
106
- end
107
- self
108
- end
109
- end
110
- end
data/lib/tumblr/link.rb DELETED
@@ -1,21 +0,0 @@
1
- module Tumblr
2
- class Link < Item
3
- attr_accessor :text, :url
4
-
5
- def as_json
6
- super.merge!({
7
- :text => text,
8
- :url => url
9
- })
10
- end
11
-
12
- private
13
-
14
- def parse_xml_node(node)
15
- super(node)
16
- self.text = node.css('link-text').first.try(:content)
17
- self.source = node.css('link-url').first.try(:content)
18
- self
19
- end
20
- end
21
- end
data/lib/tumblr/page.rb DELETED
@@ -1,39 +0,0 @@
1
- module Tumblr
2
- class Page
3
- include Enumerable
4
- attr_accessor :items, :start, :total, :page_size
5
-
6
- def initialize(items, start, total, page_size)
7
- self.items = items
8
- self.start = start.to_i
9
- self.total = total.to_i
10
- self.page_size = page_size.to_i
11
- end
12
-
13
- def page
14
- (start / page_size).floor + 1
15
- end
16
-
17
- def success?
18
- items.count > 0
19
- end
20
-
21
- def next_page
22
- (total - start) > page_size ? page + 1 : nil
23
- end
24
-
25
- def previous_page
26
- page > 1 ? page - 1 : nil
27
- end
28
-
29
- [:size, :count, :length].each do |m|
30
- define_method m do
31
- @items.send(m)
32
- end
33
- end
34
-
35
- def each(&block)
36
- items.each(&block)
37
- end
38
- end
39
- end
data/lib/tumblr/photo.rb DELETED
@@ -1,37 +0,0 @@
1
- module Tumblr
2
- class Photo < Item
3
- attr_accessor :caption, :sizes
4
-
5
- class Size < Struct.new(:url, :max_width)
6
- def as_json
7
- {
8
- :url => url,
9
- :max_width => max_width
10
- }
11
- end
12
- end
13
-
14
- def max_size
15
- sizes.last
16
- end
17
-
18
- def as_json
19
- super.merge!({
20
- :caption => caption,
21
- :sizes => sizes.map { |size| size.as_json }
22
- })
23
- end
24
-
25
- private
26
-
27
- def parse_xml_node(node)
28
- super(node)
29
- self.caption = node.css('photo-caption').first.try(:content)
30
- self.sizes = node.css("photo-url").collect do |size|
31
- Size.new(size.content, size['max-width'].to_i)
32
- end
33
- self.sizes.sort! { |s1, s2| s1.max_width <=> s2.max_width }
34
- self
35
- end
36
- end
37
- end
@@ -1,21 +0,0 @@
1
- module Tumblr
2
- class Regular < Item
3
- attr_accessor :title, :body
4
-
5
- def as_json
6
- super.merge!({
7
- :title => title,
8
- :body => body
9
- })
10
- end
11
-
12
- private
13
-
14
- def parse_xml_node(node)
15
- super(node)
16
- self.title = node.css('regular-title').first.try(:content)
17
- self.body = node.css('regular-body').first.try(:content)
18
- self
19
- end
20
- end
21
- end