rawapi 0.1.1 → 0.1.2

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.
data/Manifest.txt CHANGED
@@ -5,6 +5,11 @@ README.txt
5
5
  Rakefile
6
6
 
7
7
  lib/rawapi.rb
8
+ lib/rawapi/entry.rb
9
+ lib/rawapi/feed.rb
10
+ lib/rawapi/item.rb
11
+ lib/rawapi/response.rb
12
+ lib/rawapi/referer.rb
8
13
  lib/rawapi/version.rb
9
14
  setup.rb
10
15
  test/test_helper.rb
@@ -0,0 +1,7 @@
1
+ class Entry
2
+ attr_accessor :date, :circulation, :hits, :items
3
+
4
+ def initialize
5
+ @items = []
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Feed
2
+ attr_accessor :id, :uri, :entries
3
+
4
+ def initialize
5
+ @entries = []
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Item
2
+ attr_accessor :title, :url, :itemviews, :clickthroughs, :referers
3
+
4
+ def initialize
5
+ @referers = []
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ class Referer
2
+ attr_accessor :url, :itemviews, :clickthroughs
3
+ end
@@ -0,0 +1,42 @@
1
+ # The Response object is the ruby object version of the webservice response.
2
+ class Response
3
+ attr_accessor :status, :code, :message, :feeds
4
+
5
+ def initialize
6
+ @feeds = []
7
+ end
8
+
9
+ # returns a formated string representing the response object. good for debugging.
10
+ def to_s
11
+ output = []
12
+ output << "Status: #{@status}"
13
+ output << "Code: #{@code}" if @code
14
+ output << "Message: #{@message}" if @message
15
+ for feed in @feeds
16
+ output << "-Feed"
17
+ output << " Id: #{feed.id}" if feed.id
18
+ output << " URI: #{feed.uri}" if feed.uri
19
+ for entry in feed.entries
20
+ output << " -Entry"
21
+ output << " Date: #{entry.date}" if entry.date
22
+ output << " Circulation: #{entry.circulation}" if entry.circulation
23
+ output << " Hits: #{entry.hits}" if entry.hits
24
+ for item in entry.items
25
+ output << " -Item"
26
+ output << " Title: #{item.title}" if item.title
27
+ output << " URL: #{item.url}" if item.url
28
+ output << " ItemViews: #{item.itemviews}" if item.itemviews
29
+ output << " Clickthoughs: #{item.clickthroughs}" if item.clickthroughs
30
+ for referer in item.referers
31
+ output << " -Referer"
32
+ output << " URL: #{referer.url}" if referer.url
33
+ output << " ItemViews: #{referer.itemviews}" if referer.itemviews
34
+ output << " Clickthoughs: #{referer.clickthroughs}" if referer.clickthroughs
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ return output.join("\n")
41
+ end
42
+ end
@@ -2,7 +2,7 @@ module Rawapi #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- BUILD = 1
5
+ BUILD = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, BUILD].join('.')
8
8
  end
data/lib/rawapi.rb CHANGED
@@ -4,9 +4,25 @@ require 'open-uri'
4
4
  require 'rexml/document'
5
5
  include REXML
6
6
 
7
+ # Class to provide the interface to the Awareness API
8
+ #
9
+ # dates:
10
+ # * Individual dates always use this format: YYYY-MM-DD
11
+ # * Date ranges are expressed with a comma: YYYY-MM-D1, YYYY-MM-D7 means all dates between and including D1 and D7
12
+ # * If a range is specified, the second date must always be later than the first date
13
+ # * A single date will be interpreted as a range of one date: YYYY-MM-D1 = YYYY-MM-D1, YYYY-MM-D1
14
+ # * Discrete ranges are separated by a slash: YYYY-MM-D1/YYYY-MM-D5/YYYY-MM-D7,YYYY-MM-D14 means D1 and D5 and all dates between and including D7 and D14. Multiple discrete ranges may also be provided by using multiple date parameters in a single GET request.
15
+ # * If no date is specified, Yesterday's date is assumed. "Current" is always yesterday's data. "Live" daily data is not yet available.
16
+ # * An individual date starts at 12am CDT (GMT -5) and ends 12am CDT the next day. Custom timezone support is not yet available.
7
17
  class AwarenessApi
8
18
  ROOT_API_URL = 'http://api.feedburner.com/awareness/1.0/'
9
19
 
20
+ # Get Basic Feed Awareness Data
21
+ #
22
+ # options:
23
+ # * uri: The URI of the feed (same as http://feeds.feedburner.com/<feeduri>) Must be used if id is not specified
24
+ # * id: The FeedBurner id of the feed (visible when editing a feed in your account, e.g., http://www.feedburner.com/fb/a/optimize?id=<id>). May be used instead if uri is not specified.
25
+ # * dates: Dates are used to specify the period for which data is need (see note on dates above)
10
26
  def get_feed_data(options)
11
27
  option_string = parse_options(options)
12
28
 
@@ -14,6 +30,13 @@ class AwarenessApi
14
30
  return parse_xml(response_xml)
15
31
  end
16
32
 
33
+ # Get Individual Item Awareness Data (TotalStats pro)
34
+ #
35
+ # options:
36
+ # * uri: The URI of the feed (same as http://feeds.feedburner.com/<feeduri>) Must be used if id is not specified
37
+ # * id: The FeedBurner id of the feed (visible when editing a feed in your account, e.g., http://www.feedburner.com/fb/a/optimize?id=<id>). May be used instead if uri is not specified.
38
+ # * itemurl: The source URL of item (not the FeedBurner generated URL, but the original source URL). Multiple itemurl parameters may be provided in a single request in order to retrieve additional items.
39
+ # * dates: Dates are used to specify the period for which data is need (see note on dates above)
17
40
  def get_item_data(options)
18
41
  option_string = parse_options(options)
19
42
 
@@ -21,13 +44,19 @@ class AwarenessApi
21
44
  return parse_xml(response_xml)
22
45
  end
23
46
 
24
- # add GetResyndicationData
25
- # def get_resyndication_data(options)
26
- # option_string = parse_options(options)
27
- #
28
- # response_xml = open("#{ROOT_API_URL}GetResyndicationData?#{option_string}").read
29
- # return parse_xml(response_xml)
30
- # end
47
+ # Get Resyndication Feed Awareness Data (TotalStats pro)
48
+ #
49
+ # options:
50
+ # * uri: The URI of the feed (same as http://feeds.feedburner.com/<feeduri>)
51
+ # * id: The FeedBurner id of the feed (visible when editing a feed in your account, e.g., http://www.feedburner.com/fb/a/optimize?id=<id>). May be used instead if uri is not specified.
52
+ # * itemurl: The source URL of item (not the FeedBurner generated URL, but the original source URL). Multiple itemurl parameters may be provided in a single request in order to retrieve additional items.
53
+ # * dates: Dates are used to specify the period for which data is need (see note on dates above)
54
+ def get_resyndication_data(options)
55
+ option_string = parse_options(options)
56
+
57
+ response_xml = open("#{ROOT_API_URL}GetResyndicationData?#{option_string}").read
58
+ return parse_xml(response_xml)
59
+ end
31
60
 
32
61
  private
33
62
  def parse_options(options)
@@ -76,6 +105,16 @@ class AwarenessApi
76
105
  item.clickthroughs = item_node.attributes['clickthroughs']
77
106
 
78
107
  entry.items << item
108
+
109
+ for referer_node in item_node.elements
110
+ referer = Referer.new
111
+
112
+ referer.url = referer_node.attributes['url']
113
+ referer.itemviews = referer_node.attributes['itemviews']
114
+ referer.clickthroughs = referer_node.attributes['clickthroughs']
115
+
116
+ item.referers << referer
117
+ end
79
118
  end
80
119
  end
81
120
  end
@@ -89,4 +128,5 @@ end
89
128
  # opts = {:uri => 'CommonThread', :dates => '2007-03-20,2007-03-23'}
90
129
  #
91
130
  # puts rawapi.get_feed_data(opts)
92
- # puts rawapi.get_item_data(opts)
131
+ # puts rawapi.get_item_data(opts)
132
+ # puts rawapi.get_resyndication_data(opts)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: rawapi
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2007-03-25 00:00:00 -05:00
6
+ version: 0.1.2
7
+ date: 2007-03-26 00:00:00 -05:00
8
8
  summary: Ruby interface to the FeedBurner Awareness API.
9
9
  require_paths:
10
10
  - lib
@@ -35,6 +35,11 @@ files:
35
35
  - README.txt
36
36
  - Rakefile
37
37
  - lib/rawapi.rb
38
+ - lib/rawapi/entry.rb
39
+ - lib/rawapi/feed.rb
40
+ - lib/rawapi/item.rb
41
+ - lib/rawapi/response.rb
42
+ - lib/rawapi/referer.rb
38
43
  - lib/rawapi/version.rb
39
44
  - setup.rb
40
45
  - test/test_helper.rb