teleportd 0.0.4 → 0.1.0

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/README.md CHANGED
@@ -25,13 +25,9 @@ NOTE: You must set an ENV variable 'TELEPORTD_API_KEY' for your Teleportd API ke
25
25
 
26
26
  $ export TELEPORTD_API_KEY=$APIKEY
27
27
 
28
- Create an instance of a Teleportd::Search with optional filters. Call
29
- the result method on the Search instance to receive a Hash of the
30
- search.
31
-
32
- Basic Query Without Filters:
33
-
34
- $ search = Teleportd::Search.new
28
+ Create an instance of a Teleportd::Search with optional filters. The
29
+ Search returns an enumerable collection of Teleportd::SearchResult
30
+ objects
35
31
 
36
32
  Query With Locations:
37
33
 
@@ -5,6 +5,7 @@ require 'teleportd/version'
5
5
  require 'teleportd/config'
6
6
  require 'teleportd/request'
7
7
  require 'teleportd/search'
8
+ require 'teleportd/search_result'
8
9
 
9
10
  module Teleportd
10
11
  end
@@ -1,5 +1,6 @@
1
1
  module Teleportd
2
2
  class Search
3
+ include Enumerable
3
4
 
4
5
  class << self
5
6
  def potential_available_filters
@@ -10,15 +11,23 @@ module Teleportd
10
11
  attr_reader :opts
11
12
 
12
13
  def initialize opts={}
13
- @opts = opts
14
+ @opts = opts
14
15
  @request = Request.new(request_uri)
15
16
  end
16
17
 
17
- def result
18
- @request.parsed_response
18
+ def results
19
+ @results ||= parsed_response["hits"].map{|r|SearchResult.new(r)}
20
+ end
21
+
22
+ def each
23
+ results.each {|member| yield member}
19
24
  end
20
25
 
21
26
  private
27
+ def parsed_response
28
+ @request.parsed_response
29
+ end
30
+
22
31
  def request_uri
23
32
  available_filters.each_with_object(base_request_uri) do |filter, uri|
24
33
  uri << "&#{self.send(filter)}"
@@ -63,7 +72,7 @@ module Teleportd
63
72
  def time_period
64
73
  return nil unless has_time_search?
65
74
  begin_period = opts[:time_period][:start_time].to_i
66
- end_period = opts[:time_period][:end_time].to_i
75
+ end_period = opts[:time_period][:end_time].to_i
67
76
  "period=[#{begin_period},#{end_period}]"
68
77
  end
69
78
 
@@ -0,0 +1,110 @@
1
+ module Teleportd
2
+ # Represents an individual image returned from a Search call
3
+ class SearchResult
4
+
5
+ # @api private
6
+ attr_reader :result_hash
7
+
8
+ # Accepts a hash from a Teleportd::Search and returns an instance of Teleportd::SearchResult
9
+ #
10
+ # @example
11
+ # Teleportd::SearchResult.new(result_hash)
12
+ # > #<Teleportd::SearchResult...>
13
+ #
14
+ # @param [Hash]
15
+ # @return [Teleportd::SearchResult]
16
+ def initialize result_hash={}
17
+ @result_hash = result_hash
18
+ end
19
+
20
+ # Returns a Hash with the results latitude and longitude values
21
+ #
22
+ # @return [Hash]
23
+ def location
24
+ result_hash['loc']
25
+ end
26
+
27
+ # Returns a String representing the search result type (usually "image")
28
+ #
29
+ # @return [String]
30
+ def type
31
+ result_hash['typ']
32
+ end
33
+
34
+ # Returns a String representing the search result SHA hash
35
+ #
36
+ # @return [String]
37
+ def sha
38
+ result_hash['sha']
39
+ end
40
+
41
+ # Returns the result's time as seconds from the epoch
42
+ #
43
+ # @return [Fixnum]
44
+ def date
45
+ result_hash['dte']
46
+ end
47
+
48
+ # Returns the source of the result ("twimg", "instagram", etc.)
49
+ #
50
+ # @return [String]
51
+ def source
52
+ result_hash['src']
53
+ end
54
+
55
+ # Returns the thumbnail image url for the result
56
+ #
57
+ # @return [String]
58
+ def thumbnail_url
59
+ result_hash['thb']
60
+ end
61
+
62
+ # Returns the full resolution image url for the result
63
+ #
64
+ # @return [String]
65
+ def full_resolution_url
66
+ result_hash['fll']
67
+ end
68
+
69
+ # Returns the author handles identified from the result
70
+ # NOTE: Will return nil unless you have an enterprise account
71
+ #
72
+ # @return [Array]
73
+ def users
74
+ result_hash['usr']
75
+ end
76
+
77
+ # Returns the user's profile pic url from the respective service account
78
+ # NOTE: Will return nil unless you have an enterprise account
79
+ #
80
+ # @return [String]
81
+ def profile_pic_url
82
+ result_hash['pic']
83
+ end
84
+
85
+ # Returns the comments or title of the search result in an Array
86
+ # NOTE: Will return nil unless you have an enterprise account
87
+ #
88
+ # @return [Array]
89
+ def text
90
+ result_hash['text']
91
+ end
92
+
93
+ # Returns the hashtags of the search result in an Array
94
+ # NOTE: Will return nil unless you have an enterprise account
95
+ #
96
+ # @return [Array]
97
+ def hashtags
98
+ result_hash['hashtag']
99
+ end
100
+
101
+ # Returns the mentions of the search result in an Array
102
+ # NOTE: Will return nil unless you have an enterprise account
103
+ #
104
+ # @return [Array]
105
+ def mentions
106
+ result_hash['mention']
107
+ end
108
+
109
+ end
110
+ end
@@ -1,3 +1,3 @@
1
1
  module Teleportd
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teleportd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-29 00:00:00.000000000 Z
12
+ date: 2012-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &7591140 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.7.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7591140
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.7.1
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: activesupport
27
- requirement: &7590620 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *7590620
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: i18n
38
- requirement: &7589940 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *7589940
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: curb
49
- requirement: &7589340 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *7589340
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: pry
60
- requirement: &7588680 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *7588680
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  description: Ruby Wrapper Library for Teleportd API
70
95
  email:
71
96
  - nicholas.fine@gmail.com
@@ -82,6 +107,7 @@ files:
82
107
  - lib/teleportd/config.rb
83
108
  - lib/teleportd/request.rb
84
109
  - lib/teleportd/search.rb
110
+ - lib/teleportd/search_result.rb
85
111
  - lib/teleportd/version.rb
86
112
  - teleportd.gemspec
87
113
  homepage: ''
@@ -104,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
130
  version: '0'
105
131
  requirements: []
106
132
  rubyforge_project:
107
- rubygems_version: 1.8.15
133
+ rubygems_version: 1.8.24
108
134
  signing_key:
109
135
  specification_version: 3
110
136
  summary: Ruby Wrapper Library for Teleportd API