joevandyk-evri 0.01 → 0.03

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -3,6 +3,7 @@ Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
5
  TODO
6
+ evri-api.gemspec
6
7
  lib/evri.rb
7
8
  lib/evri/entity.rb
8
9
  lib/evri/media.rb
data/Rakefile CHANGED
@@ -6,6 +6,16 @@ require './lib/evri.rb'
6
6
 
7
7
  Hoe.new('evri', Evri::VERSION) do |p|
8
8
  p.developer('Joe Van Dyk', 'joe@@fixieconsulting.com')
9
+ p.extra_deps = [:json]
10
+ p.extra_dev_deps = [:mocha]
11
+ end
12
+
13
+ task :github do
14
+ data = `rake check_manifest | sed 1d`
15
+ IO.popen("patch -p0 Manifest.txt", "w") do |p|
16
+ p << data
17
+ end
18
+ `rake debug_gem | sed 1d > evri-api.gemspec`
9
19
  end
10
20
 
11
21
  # vim: syntax=Ruby
data/evri-api.gemspec ADDED
@@ -0,0 +1,39 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{evri}
3
+ s.version = "0.03"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Joe Van Dyk"]
7
+ s.date = %q{2008-10-27}
8
+ s.description = %q{A beautiful API that wraps the RESTful services provided by evri.com.}
9
+ s.email = ["joe@@fixieconsulting.com"]
10
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
11
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO", "evri-api.gemspec", "lib/evri.rb", "lib/evri/entity.rb", "lib/evri/media.rb", "lib/evri/relation.rb", "lib/evri/zeitgeist.rb", "test/test_entity.rb", "test/test_evri.rb", "test/test_media.rb", "test/test_zeitgeist.rb"]
12
+ s.has_rdoc = true
13
+ s.homepage = %q{http://github.com/joevandyk/evri-api}
14
+ s.rdoc_options = ["--main", "README.txt"]
15
+ s.require_paths = ["lib"]
16
+ s.rubyforge_project = %q{evri}
17
+ s.rubygems_version = %q{1.2.0}
18
+ s.summary = %q{A beautiful API that wraps the RESTful services provided by evri.com.}
19
+ s.test_files = ["test/test_media.rb", "test/test_zeitgeist.rb", "test/test_entity.rb", "test/test_evri.rb"]
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 2
24
+
25
+ if current_version >= 3 then
26
+ s.add_runtime_dependency(%q<json>, [">= 0"])
27
+ s.add_development_dependency(%q<mocha>, [">= 0"])
28
+ s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
29
+ else
30
+ s.add_dependency(%q<json>, [">= 0"])
31
+ s.add_dependency(%q<mocha>, [">= 0"])
32
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<json>, [">= 0"])
36
+ s.add_dependency(%q<mocha>, [">= 0"])
37
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
38
+ end
39
+ end
data/lib/evri/entity.rb CHANGED
@@ -3,6 +3,7 @@ module Evri
3
3
  class Entity
4
4
  attr_reader :properties
5
5
 
6
+ # Finds a specific entity, given an ID.
6
7
  def self.find id
7
8
  @entended_properties = true
8
9
  @results ||= {}
@@ -13,18 +14,21 @@ module Evri
13
14
  end
14
15
  end
15
16
 
17
+ # Searches for an exact match.
16
18
  def self.search name
17
19
  create_from_jsons do
18
20
  Evri.query(:type => :search, :query => name)
19
21
  end
20
22
  end
21
23
 
24
+ # Searches for a partial match. i.e. 'ob' will return 'Obama'.
22
25
  def self.search_by_prefix prefix
23
26
  create_from_jsons do
24
27
  Evri.query(:type => :prefix, :query => prefix)
25
28
  end
26
29
  end
27
30
 
31
+ # Given a :uri and :text options, return the related entities.
28
32
  def self.from_media options={}
29
33
  uri, text = options[:uri], options[:text]
30
34
  raise ArgumentError, "Must specify URI via the :uri option" unless uri
@@ -36,10 +40,13 @@ module Evri
36
40
  end
37
41
  end
38
42
 
43
+ # Returns where the information for this entity came from.
39
44
  def source_url
40
45
  @source_url
41
46
  end
42
47
 
48
+ # Returns information about an entity.
49
+ # i.e obama.info(:birth_date)
43
50
  def info option=nil
44
51
  @properties ||= {}
45
52
  if defined?(@extended_properties)
@@ -56,9 +63,14 @@ module Evri
56
63
  end
57
64
 
58
65
  def to_s
59
- "#{name} <#{ id }>"
66
+ "#{name} (#{ id })"
60
67
  end
61
68
 
69
+ def inspect
70
+ "#<Evri::Entity:#{to_s}>"
71
+ end
72
+
73
+ # Returns the name of the entity
62
74
  def name
63
75
  @parsed_json["name"]["$"] || @parsed_json["name"]
64
76
  end
@@ -76,6 +88,7 @@ module Evri
76
88
  self.id == b.id
77
89
  end
78
90
 
91
+ # Returns the Evri URI of the entity
79
92
  def href
80
93
  @parsed_json["@href"]
81
94
  end
@@ -83,10 +96,12 @@ module Evri
83
96
  alias id href
84
97
  alias uri href
85
98
 
99
+ # TODO
86
100
  def target_href
87
101
  @parsed_json["@targetHref"]
88
102
  end
89
103
 
104
+ # Returns relationships for the entity
90
105
  def relations options={}
91
106
  from_domains = nil
92
107
  if options[:from]
@@ -106,6 +121,7 @@ module Evri
106
121
  @relations
107
122
  end
108
123
 
124
+ # Returns which entities are related to the current entity
109
125
  def related_by options={}
110
126
  media, verb, verb_value, entity, uri = nil, nil, nil, nil, nil
111
127
  options.each do |key, value|
@@ -137,6 +153,7 @@ module Evri
137
153
  @entities
138
154
  end
139
155
 
156
+ # Returns images relating to the current entity
140
157
  def images options={}
141
158
  medias = []
142
159
  if options[:entities]
@@ -159,6 +176,7 @@ module Evri
159
176
  medias
160
177
  end
161
178
 
179
+ # Returns articles relating to the current entity
162
180
  def articles options={}
163
181
  medias = []
164
182
  if options[:entities]
data/lib/evri/media.rb CHANGED
@@ -2,6 +2,7 @@ module Evri
2
2
  class Media
3
3
  end
4
4
 
5
+ # Represents an Article.
5
6
  class Article < Media
6
7
  attr_accessor :title, :href, :uri, :author, :published_at, :content
7
8
  def initialize json
@@ -14,6 +15,7 @@ module Evri
14
15
  end
15
16
  end
16
17
 
18
+ # Represents an Image.
17
19
  class Image < Media
18
20
  attr_accessor :size, :title, :article_href, :mime_type, :thumbnail, :date, :content, :width, :url, :click_url, :height
19
21
  def initialize json
@@ -31,6 +33,7 @@ module Evri
31
33
  @thumbnail = Thumbnail.new(json["thumbnail"])
32
34
  end
33
35
 
36
+ # Represents an Thumbnail for an Image.
34
37
  class Thumbnail
35
38
  attr_accessor :size, :width, :height, :url
36
39
  def initialize json
data/lib/evri/relation.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module Evri
2
+ # Represents a relation.
2
3
  class Relation
3
4
  attr_accessor :name, :href, :type
4
5
  def initialize json
@@ -8,6 +9,7 @@ module Evri
8
9
  @entities = []
9
10
  end
10
11
 
12
+ # Returns the entities in this relation.
11
13
  def entities
12
14
  return @entities unless @entities.empty?
13
15
  json = JSON.parse(Evri.query(:type => :uri, :query => @href))
@@ -1,10 +1,22 @@
1
1
  module Evri
2
+ # Returns information about a specific trend.
3
+ #
4
+ # To access the information, combine a TREND with a TYPE to form a class method.
5
+ #
6
+ # i.e.
7
+ #
8
+ # * Zeitgeist.all_chemical
9
+ # * Zeitgeist.falling_person
10
+ # * Zeitgeist.popular_organization
11
+ #
12
+ # etc
2
13
  class Zeitgeist
3
- ENTITY_TYPES = %w( animal backterium checmical concept disorder event location organization person plant product virus )
4
- TYPES = %w( all popular rising falling )
5
14
 
6
- TYPES.each do |t|
7
- ENTITY_TYPES.each do |et|
15
+ TYPES = %w( animal backterium chemical concept disorder event location organization person plant product virus )
16
+ TRENDS = %w( all popular rising falling )
17
+
18
+ TRENDS.each do |t|
19
+ TYPES.each do |et|
8
20
  eval %(
9
21
  def self.#{t}_#{et}
10
22
  json = Evri.parse_json(Evri.query :type => :zeitgeist, :query => "#{et}/#{t}")
data/lib/evri.rb CHANGED
@@ -24,31 +24,37 @@ module Evri
24
24
  # Raised whenever the entity you are searching for cannot be found.
25
25
  class EntityNotFound < Error; end
26
26
 
27
- VERSION = "0.01"
27
+ VERSION = "0.03"
28
28
  @@api_host = "api.evri.com"
29
29
  @@source_host = @@api_host
30
30
  @@source_url = nil
31
31
 
32
+ # Sets the hostname for the Evri API.
32
33
  def self.api_host= host
33
34
  @@api_host = validate_host(host)
34
35
  end
35
36
 
37
+ # Returns the hostname for the Evri API.
36
38
  def self.api_host
37
39
  @@api_host
38
40
  end
39
41
 
42
+ # Returns the source host for the Evri API
40
43
  def self.source_host
41
44
  @@source_host
42
45
  end
43
46
 
47
+ # Returns the source host for the Evri API
44
48
  def self.source_host= host
45
49
  @@source_host = validate_host(host)
46
50
  end
47
51
 
52
+ # Returns the source url for the Evri API
48
53
  def self.source_url
49
54
  @@source_url
50
55
  end
51
56
 
57
+ # Parses JSON data
52
58
  def self.parse_json json
53
59
  begin
54
60
  JSON.parse(json)
@@ -119,6 +125,7 @@ module Evri
119
125
  response.body
120
126
  end
121
127
 
128
+ # Escapes CGI text
122
129
  def self.escape text
123
130
  text ? CGI.escape(text.to_s) : ''
124
131
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joevandyk-evri
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.01"
4
+ version: "0.03"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Van Dyk
@@ -12,6 +12,24 @@ cert_chain: []
12
12
  date: 2008-10-27 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: mocha
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
15
33
  - !ruby/object:Gem::Dependency
16
34
  name: hoe
17
35
  version_requirement:
@@ -38,6 +56,7 @@ files:
38
56
  - README.txt
39
57
  - Rakefile
40
58
  - TODO
59
+ - evri-api.gemspec
41
60
  - lib/evri.rb
42
61
  - lib/evri/entity.rb
43
62
  - lib/evri/media.rb