tumblrb 1.0.6 → 2.0.1

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