hark 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ pkg/*
4
+ doc/
5
+ .yardoc/
6
+ .*.swp
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in hark-api.gemspec
4
+ gemspec
5
+
6
+ gem 'rake'
7
+ gem 'httparty'
8
+ gem 'activesupport'
9
+
10
+ group :development, :test do
11
+ gem 'mocha'
12
+ gem 'shoulda'
13
+ gem 'vcr'
14
+ gem 'webmock'
15
+ gem 'json'
16
+ gem 'rdoc'
17
+ gem 'yard'
18
+ gem 'rdiscount'
19
+ end
@@ -0,0 +1,50 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ hark (0.0.1)
5
+ activesupport
6
+ httparty
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ activesupport (3.1.1)
12
+ multi_json (~> 1.0)
13
+ addressable (2.2.6)
14
+ crack (0.3.1)
15
+ httparty (0.8.1)
16
+ multi_json
17
+ multi_xml
18
+ json (1.6.1)
19
+ metaclass (0.0.1)
20
+ mocha (0.10.0)
21
+ metaclass (~> 0.0.1)
22
+ multi_json (1.0.3)
23
+ multi_xml (0.4.1)
24
+ rake (0.9.2.2)
25
+ rdiscount (1.6.8)
26
+ rdoc (3.11)
27
+ json (~> 1.4)
28
+ shoulda (2.11.3)
29
+ vcr (1.11.3)
30
+ webmock (1.7.7)
31
+ addressable (~> 2.2, > 2.2.5)
32
+ crack (>= 0.1.7)
33
+ yard (0.7.3)
34
+
35
+ PLATFORMS
36
+ ruby
37
+
38
+ DEPENDENCIES
39
+ activesupport
40
+ hark!
41
+ httparty
42
+ json
43
+ mocha
44
+ rake
45
+ rdiscount
46
+ rdoc
47
+ shoulda
48
+ vcr
49
+ webmock
50
+ yard
@@ -0,0 +1,307 @@
1
+ Hark API
2
+ ========
3
+
4
+ A Ruby Gem to access the hark.com API
5
+
6
+ About Hark
7
+ ----------
8
+ hark.com is a site that publishes movie quote sound bites and still images.
9
+ This gem is used to access these sounds :mega: , still images, and other
10
+ information in a programmatic fashion.
11
+
12
+ Reference
13
+ ---------
14
+
15
+ ### Pure HTTP Example
16
+
17
+ The Hark API is accessed through a HTTP GET focused REST interface currently
18
+ supporting JSON and JSONP formats. The API is currently version 1.0 and is only
19
+ accessible over HTTPS. The token to access the API is submitted as a HTTP
20
+ header with the name X-HarkToken.
21
+
22
+ #### JSON Access
23
+
24
+ ```shell
25
+ curl --verbose -H "X-HarkToken: a-token" "https://api.hark.com/1.0/clips/jxxcfhxywx.json"
26
+ ```
27
+
28
+ #### JSONP Access
29
+
30
+ The value of callback is the variable name that is returned wrapping the result
31
+ JSON.
32
+
33
+ ```shell
34
+ curl --verbose -H "X-HarkToken: a-token" "https://api.hark.com/1.0/clips/jxxcfhxywx.json?callback=wrapper"
35
+ ```
36
+
37
+ Formatting
38
+ ----------
39
+
40
+ ### API Information
41
+
42
+ All results return information about the request and its results.
43
+
44
+ * version - API Version.
45
+ * when - When these results returned.
46
+ * what - The kind of object requested, clip, clips, collection, collections, etc.
47
+ * message - A message about the request.
48
+ * status - The HTTP status given with the result.
49
+
50
+
51
+ ### Error results
52
+
53
+ #### Missing query parameters
54
+
55
+ HTTP Status 400. Parameter(s) for the query were missing.
56
+
57
+ ```json
58
+ {
59
+ "collections": [
60
+
61
+ ],
62
+ "api": {
63
+ "version": "1.0.1",
64
+ "when": "Tue Nov 01 05:39:41 UTC 2011",
65
+ "what": "collections",
66
+ "message": "missing keywords query",
67
+ "status": 400
68
+ }
69
+ }
70
+ ```
71
+
72
+ #### Authorization Failure
73
+
74
+ HTTP Status 401. The API token given was not authorized.
75
+
76
+ ```json
77
+ {
78
+ "api": {
79
+ "version": "1.0.1",
80
+ "when": "Tue Nov 01 05:34:41 UTC 2011",
81
+ "what": "clips",
82
+ "message": "Unauthorized",
83
+ "status": 401
84
+ },
85
+ "clip": {
86
+ }
87
+ }
88
+ ```
89
+
90
+ #### Not Found
91
+
92
+ HTTP Status 404. The resource requested was not found.
93
+
94
+ ```json
95
+ {
96
+ "api": {
97
+ "version": "1.0.1",
98
+ "when": "Tue Nov 01 05:48:05 UTC 2011",
99
+ "what": "clip",
100
+ "message": "Not Found",
101
+ "status": 404
102
+ },
103
+ "clip": {
104
+ }
105
+ }
106
+ ```
107
+
108
+ #### Unprocessable Entity
109
+
110
+ HTTP Status 422. The URI of the query did not map to any resources currently
111
+ presented by the API.
112
+
113
+ ```json
114
+ {
115
+ "api": {
116
+ "version": "1.0.1",
117
+ "when": "Tue Nov 01 05:48:54 UTC 2011",
118
+ "what": "noob",
119
+ "message": "Unprocessable Entity",
120
+ "status": 422
121
+ }
122
+ }
123
+ ```
124
+
125
+
126
+ ### Clip JSON
127
+
128
+ #### Request
129
+
130
+ ```shell
131
+ curl -H "X-HarkToken: a-token" "https://api.hark.com/1.0/clips/jxxcfhxywx.json"
132
+ ```
133
+
134
+ #### Attributes
135
+
136
+ * audio_url - A CDN URL to the audio portion of the clip. URL will have expiry information attached to it, and will expire in 60 minutes from the time of the request.
137
+ * canonical_url - Unique URL of the clip.
138
+ * description - A description of the clip.
139
+ * duration - The clip's duration in seconds.
140
+ * image_urls - An array of images associated with the clip.
141
+ * name - The name of the clip.
142
+ * pid - Unique identifier of the clip.
143
+ * quote - A distinctive quote from the clip.
144
+ * short_url - A bit.ly shortened URL to the clip.
145
+
146
+ #### Example
147
+
148
+ ```json
149
+ {
150
+ "api": {
151
+ "version": "1.0.1",
152
+ "when": "Tue Nov 01 05:58:46 UTC 2011",
153
+ "what": "clip",
154
+ "message": "OK",
155
+ "status": 200
156
+ },
157
+ "clip": {
158
+ "audio_url": "*** A VALID EXPIRING CDN AUDIO URL ***",
159
+ "canonical_url": "http://hark.com/clips/jxxcfhxywx-i-have-a-dream-today",
160
+ "description": "Martin Luther King Jr. gives his I Have a Dream Speech.",
161
+ "duration": 2,
162
+ "image_urls": [
163
+ "http://cdn2.hark.com/images/000/000/224/224/martin-luther-king-jr_large.jpg"
164
+ ],
165
+ "name": "I have a dream today",
166
+ "pid": "jxxcfhxywx",
167
+ "quote": "\"I have a dream today!\"",
168
+ "short_url": "http://bit.ly/fPKQmO"
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### Clips Search JSON
174
+
175
+ #### Request
176
+
177
+ ```shell
178
+ curl -H "X-HarkToken: a-token" "https://api.hark.com/1.0/clips/search?keywords=a+search+phrase"
179
+ ```
180
+
181
+ #### Attributes
182
+
183
+ * clips - An array of clips specified above.
184
+
185
+ #### Example
186
+
187
+ ```json
188
+ {
189
+ "clips": [
190
+ { SEE CLIP DESCRIPTION ABOVE },
191
+ { SEE CLIP DESCRIPTION ABOVE },
192
+ { SEE CLIP DESCRIPTION ABOVE }
193
+ ],
194
+ "api": {
195
+ "version": "1.0.1",
196
+ "when": "Tue Nov 01 06:10:11 UTC 2011",
197
+ "what": "clips",
198
+ "message": "OK",
199
+ "status": 200
200
+ }
201
+ }
202
+ ```
203
+
204
+ ### Collection JSON
205
+
206
+ #### Request
207
+
208
+ ```shell
209
+ curl -H "X-HarkToken: a-token" "https://api.hark.com/1.0/collections/nfngpynlrd.json"
210
+ ```
211
+
212
+ #### Attributes
213
+
214
+ * canonical_url - Unique URL of the collection.
215
+ * clip_pids - Array of clip pids belonging to the collection.
216
+ * description - A description of the collection.
217
+ * image_urls - Array of images belonging to the collection.
218
+ * name - The name of the collection.
219
+ * pid - Unique identifier of the collection.
220
+ * short_url - A bit.ly shortened URL to the collection.
221
+
222
+ #### Example
223
+
224
+ ```json
225
+ {
226
+ "api": {
227
+ "version": "1.0.1",
228
+ "when": "Tue Nov 01 06:21:28 UTC 2011",
229
+ "what": "collection",
230
+ "message": "OK",
231
+ "status": 200
232
+ },
233
+ "collection": {
234
+ "canonical_url": "http://hark.com/collections/nfngpynlrd-the-godfather",
235
+ "clip_pids": [
236
+ "jtpmzgfktg",
237
+ "mdgnglbypn",
238
+ "vlbldnhdlc",
239
+ "kmbksnnsry"
240
+ ],
241
+ "description": "The Godfather is a 1972 American crime drama film based on the 1969 novel ...",
242
+ "image_urls": [
243
+ "http://cdn0.hark.com/images/000/001/572/1572/the-godfather_large.jpg",
244
+ "http://cdn2.hark.com/images/000/046/310/46310/the-godfather_large.jpg",
245
+ "http://cdn2.hark.com/images/000/425/462/425462/the-godfather_large.jpg"
246
+ ],
247
+ "name": "The Godfather",
248
+ "pid": "nfngpynlrd",
249
+ "short_url": "http://hark.com/collections/nfngpynlrd-the-godfather"
250
+ }
251
+ }
252
+ ```
253
+
254
+ ### Collections Search JSON
255
+
256
+ #### Request
257
+
258
+ ```shell
259
+ curl -H "X-HarkToken: a-token" "https://api.hark.com/1.0/collections/search?keywords=a+search+phrase"
260
+ ```
261
+
262
+ #### Attributes
263
+
264
+ * collections - An array of collections specified above.
265
+
266
+ #### Example
267
+
268
+ ```json
269
+ {
270
+ "collections": [
271
+ { SEE COLLECTION DESCRIPTION ABOVE },
272
+ { SEE COLLECTION DESCRIPTION ABOVE },
273
+ { SEE COLLECTION DESCRIPTION ABOVE }
274
+ ],
275
+ "api": {
276
+ "version": "1.0.1",
277
+ "when": "Tue Nov 01 06:10:11 UTC 2011",
278
+ "what": "collections",
279
+ "message": "OK",
280
+ "status": 200
281
+ }
282
+ }
283
+ ```
284
+
285
+
286
+
287
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
288
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
289
+ !! The Ruby implementation is a work in progress. The interface will likely !!
290
+ !! change as well as be expanded upon. !!
291
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
292
+
293
+
294
+ Ruby Examples
295
+ -------------
296
+
297
+ Configure the API and fetch a clip.
298
+
299
+ ```ruby
300
+ require 'hark'
301
+
302
+ Hark::API.configure do |config|
303
+ config.api_key = 'the-key'
304
+ end
305
+
306
+ Hark::API.clip('jxxcfhxywx') # returns JSON
307
+ ```
@@ -0,0 +1,43 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the hark gem'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << ['lib', 'test']
11
+ t.pattern = 'test/**/test_*.rb'
12
+ t.options = ["--verbose=verbose"] # (s[ilent], p[rogress], n[ormal], v[erbose])
13
+ end
14
+
15
+ desc "Generate documentation for the hark gem"
16
+ task :doc => ['doc:generate']
17
+
18
+ namespace :doc do
19
+
20
+ project_root = File.expand_path(File.dirname(__FILE__))
21
+ doc_destination = File.join(project_root, 'doc')
22
+
23
+ begin
24
+ require 'rdoc'
25
+ require 'yard'
26
+ require 'rdiscount'
27
+ YARD::Rake::YardocTask.new(:generate) do |t|
28
+ t.files = ['lib/**/*.rb']
29
+ t.options = ['--output-dir', doc_destination, '--readme', 'README.md']
30
+ end
31
+ rescue LoadError
32
+ desc "Generate YARD Documentation"
33
+ task :generate do
34
+ abort "Please install the yard and rdiscount gems to generate rdoc."
35
+ end
36
+ end
37
+
38
+ desc "Remove generated documentation"
39
+ task :clean do
40
+ rm_r doc_destination if File.exists?(doc_destination)
41
+ end
42
+
43
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "hark/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "hark"
7
+ s.version = Hark::VERSION
8
+ s.authors = ["Mike Mondragon", "Wes Maldonado"]
9
+ s.email = ["mikemondragon@gmail.com", "wes@brokenbuild.com"]
10
+ s.homepage = "http://www.hark.com/"
11
+ s.summary = %q{A Ruby Gem to access the hark.com API}
12
+ s.description = %q{hark.com is a site that publishes movie quote sound bites
13
+ and still images. This gem is used to access this
14
+ information in a programatic fashion.}
15
+
16
+ s.rubyforge_project = "hark"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_runtime_dependency "httparty"
24
+ s.add_runtime_dependency "activesupport"
25
+ s.add_development_dependency "mocha"
26
+ s.add_development_dependency "rdoc"
27
+ s.add_development_dependency "yard"
28
+ s.add_development_dependency "rdiscount"
29
+ end
@@ -0,0 +1,21 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require "httparty"
4
+ require "active_support"
5
+ require "active_support/core_ext/object/blank"
6
+
7
+ module Hark
8
+
9
+ autoload :VERSION, 'hark/version'
10
+ autoload :API, 'hark/api'
11
+ autoload :Configuration, 'hark/configuration'
12
+
13
+ class << self
14
+
15
+ # An environment object used for configuration.
16
+ def env
17
+ @_env ||= ActiveSupport::StringInquirer.new(ENV["HARK_ENV"] || "production")
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,78 @@
1
+ module Hark
2
+ class API
3
+
4
+ include ::HTTParty
5
+
6
+ if Hark.env.production?
7
+ base_uri 'https://api.hark.com/1.0'
8
+ else
9
+ base_uri 'http://api.hark.dev/1.0'
10
+ end
11
+
12
+ # Queries the API for the clip JSON
13
+ # @param [String] clip_id The clip identifier
14
+ # @return [String] Returns a JSON representation of the clip.
15
+ def clip( clip_id )
16
+ self.class.get("/clips/#{clip_id}.json", options)
17
+ end
18
+
19
+ # Queries the API for the search term
20
+ # @param [String] search_term The clip identifier
21
+ # @return [String] Returns a JSON array of clips
22
+ def search(search_term)
23
+ search_options = options
24
+ search_options[:query] = { 'keywords' => search_term }
25
+ puts search_options
26
+ self.class.get("/clips/search.json", search_options)
27
+ end
28
+
29
+ # Default options passed back to in a HTTParty call.
30
+ # @return [Hash] Returns hash of options for a HTTParty call.
31
+ def options
32
+ { :headers => { 'X-HarkToken' => self.class.configuration.api_key } }
33
+ end
34
+
35
+ class << self
36
+
37
+ # Configuration object. Acts like a hash and return sensible values for
38
+ # all configuration options. See Hark::Configuration.
39
+ attr_writer :configuration
40
+
41
+ # Call this method to configure the library at runtime.
42
+ #
43
+ # @example
44
+ # Hark::API.configure do |config|
45
+ # config.api_key = '1234567890abcdef'
46
+ # end
47
+ def configure
48
+ yield(configuration)
49
+ @api ||= API.new
50
+ end
51
+
52
+ # The configuration object.
53
+ # @see Hark::API.configure
54
+ def configuration
55
+ @configuration ||= Configuration.new
56
+ end
57
+
58
+ # The api object.
59
+ # @see Hark::API
60
+ def api
61
+ raise ArgumentError if configuration.api_key.blank?
62
+ @api
63
+ end
64
+
65
+ # Queries the API for the clip JSON.
66
+ # @see Hark::API#clip
67
+ def clip(clip_id)
68
+ api.clip(clip_id)
69
+ end
70
+
71
+ # Queries the API for the search term
72
+ # @see Hark::API#search
73
+ def search(search_term)
74
+ api.search(search_term)
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,10 @@
1
+ module Hark
2
+
3
+ # Used to set up and modify settings for the API.
4
+ class Configuration
5
+
6
+ attr_accessor :api_key
7
+
8
+ end
9
+
10
+ end
@@ -0,0 +1,3 @@
1
+ module Hark
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,55 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.hark.com:443/1.0/clips/jxxcfhxywx.json
6
+ body:
7
+ headers:
8
+ x-harktoken:
9
+ - an-api-key
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ x-ua-compatible:
16
+ - IE=Edge,chrome=1
17
+ etag:
18
+ - "\"e699d0aaa3334eedecb6a2732239280f\""
19
+ x-powered-by:
20
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.2
21
+ content-type:
22
+ - application/json; charset=utf-8
23
+ x-rack-cache:
24
+ - miss
25
+ server:
26
+ - Apache/2.2.3 (CentOS)
27
+ date:
28
+ - Fri, 28 Oct 2011 05:46:00 GMT
29
+ x-runtime:
30
+ - "0.072499"
31
+ cache-control:
32
+ - max-age=0, private, must-revalidate
33
+ vary:
34
+ - Host,X-Forwarded-Proto
35
+ status:
36
+ - "200"
37
+ transfer-encoding:
38
+ - chunked
39
+ body: |-
40
+ {
41
+ "pid": "jxxcfhxywx",
42
+ "name": "I have a dream today",
43
+ "duration": 2,
44
+ "short_url": "http://bit.ly/fPKQmO",
45
+ "canonical_url": "http://hark.com/clips/jxxcfhxywx-i-have-a-dream-today",
46
+ "version": "1.0.1",
47
+ "audio_url": "http://audio1.hark.com/002BB7/production/audio/000/000/001/1.mp3?Expires=1319784360&Signature=ecFLDwVqaWqTD~KFpbCtjSgof1icL5IklpN1lt~DjUOZO0thGGUmTdUS4UcLwxcdYGIi0bBZDpVh7kM6CFhbWFKm5m~X4i5Y-ffPu9Mhc~ENa-O6-zQbVy5bSc2H4-L8XMn8uElUPKkxXHsN2Th9Up4dP~H5Lb4GKMrqQaAg~UA_&Key-Pair-Id=APKAJQKB5APWST65Q4AQ",
48
+ "what": "clip",
49
+ "quote": "\"I have a dream today!\"",
50
+ "description": "Martin Luther King Jr. gives his I Have a Dream Speech.",
51
+ "image_urls": [
52
+ "http://cdn2.hark.com/images/000/000/224/224/martin-luther-king-jr_large.jpg"
53
+ ]
54
+ }
55
+ http_version: "1.1"
@@ -0,0 +1,44 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.hark.com:443/1.0/clips/foo.json
6
+ body:
7
+ headers:
8
+ x-harktoken:
9
+ - an-api-key
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ x-ua-compatible:
16
+ - IE=Edge,chrome=1
17
+ x-powered-by:
18
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.2
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ x-rack-cache:
22
+ - miss
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ date:
26
+ - Fri, 28 Oct 2011 05:33:00 GMT
27
+ x-runtime:
28
+ - "1.052981"
29
+ cache-control:
30
+ - no-cache
31
+ vary:
32
+ - Host,X-Forwarded-Proto
33
+ status:
34
+ - "404"
35
+ transfer-encoding:
36
+ - chunked
37
+ body: |-
38
+ {
39
+ "pid": "foo",
40
+ "what": "clip",
41
+ "message": "Not Found",
42
+ "status": 404
43
+ }
44
+ http_version: "1.1"
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class TestHark < Test::Unit::TestCase
4
+
5
+ def test_default_env
6
+ assert_true Hark.env.production?
7
+ assert_false Hark.env.test?
8
+ end
9
+
10
+ end
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+
3
+ class TestHarkAPI < Test::Unit::TestCase
4
+
5
+ context "getting clips" do
6
+
7
+ setup do
8
+ Hark::API.configuration.api_key = nil
9
+ end
10
+
11
+ should "raise error when api key not set" do
12
+ assert_raise(ArgumentError) { Hark::API.clip('jxxcfhxywx') }
13
+ end
14
+
15
+ should "fail getting a clip for a non-existent clip id" do
16
+ Hark::API.configure do |config|
17
+ config.api_key = 'an-api-key'
18
+ end
19
+
20
+ VCR.use_cassette('non-existent-clip') do
21
+ json = Hark::API.clip('foo').body
22
+ result = JSON.parse(json).symbolize_keys
23
+
24
+ expected = { :status => 404, :message => 'Not Found', :pid => 'foo', :what => 'clip' }
25
+ assert_equal expected, result
26
+ end
27
+ end
28
+
29
+ should "get a clip" do
30
+
31
+ Hark::API.configure do |config|
32
+ config.api_key = 'an-api-key'
33
+ end
34
+
35
+ VCR.use_cassette('existing-clip') do
36
+ json = Hark::API.clip('jxxcfhxywx').body
37
+ result = JSON.parse(json).symbolize_keys
38
+ # TODO implement when updates for API are deployed
39
+ # assert_equal 200, result[:status]
40
+ # assert_equal 'Success', result[:message]
41
+ assert_equal 'jxxcfhxywx', result[:pid]
42
+ assert_equal 'clip', result[:what]
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ context "searching for clips" do
49
+
50
+ should "should raise error when api key not set"
51
+
52
+ should "get a result with zero clips"
53
+
54
+ should "get a result with many clips"
55
+
56
+ end
57
+
58
+ context "getting collections" do
59
+
60
+ should "fail getting a collection and having a bad api key"
61
+
62
+ should "fail getting a collection for a non-existent collection id"
63
+
64
+ should "get a collection"
65
+
66
+ end
67
+
68
+ context "searching for collections" do
69
+
70
+ should "should raise error when api key not set"
71
+
72
+ should "get a result with zero collections"
73
+
74
+ should "get a result with many collections"
75
+
76
+ end
77
+
78
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class TestHarkConfiguration < Test::Unit::TestCase
4
+
5
+ context "the instance" do
6
+
7
+ setup do
8
+ @configuration = Hark::Configuration.new
9
+ @configuration.api_key = "abc123"
10
+ end
11
+
12
+ should "have api key set" do
13
+ assert_equal "abc123", @configuration.api_key
14
+ end
15
+
16
+ end
17
+
18
+ context "the configuration" do
19
+
20
+
21
+ should "configure the api key in the configure block" do
22
+
23
+ Hark::API.configure do |config|
24
+ config.api_key = '1234567890abcdef'
25
+ end
26
+
27
+ assert_equal '1234567890abcdef', Hark::API.configuration.api_key
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class TestHarkVersion < Test::Unit::TestCase
4
+
5
+ def test_version
6
+ assert_equal "0.0.1", Hark::VERSION
7
+ end
8
+
9
+ end
@@ -0,0 +1,37 @@
1
+ %W{
2
+ pp
3
+ test/unit
4
+ mocha
5
+ shoulda
6
+ vcr
7
+ json/pure
8
+ active_support/hash_with_indifferent_access
9
+ }.each do |g|
10
+ begin
11
+ require g
12
+ rescue LoadError
13
+ require 'rubygems'
14
+ require g
15
+ end
16
+ end
17
+
18
+ require 'json/pure'
19
+
20
+ VCR.config do |c|
21
+ c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
22
+ c.stub_with :webmock
23
+ end
24
+
25
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'hark'))
26
+
27
+ class Test::Unit::TestCase
28
+
29
+ def assert_true(what)
30
+ assert_equal true, what
31
+ end
32
+
33
+ def assert_false(what)
34
+ assert_equal false, what
35
+ end
36
+
37
+ end
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hark
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Mike Mondragon
14
+ - Wes Maldonado
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-11-14 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: httparty
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: activesupport
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: rdoc
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: yard
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :development
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: rdiscount
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :development
104
+ version_requirements: *id006
105
+ description: |-
106
+ hark.com is a site that publishes movie quote sound bites
107
+ and still images. This gem is used to access this
108
+ information in a programatic fashion.
109
+ email:
110
+ - mikemondragon@gmail.com
111
+ - wes@brokenbuild.com
112
+ executables: []
113
+
114
+ extensions: []
115
+
116
+ extra_rdoc_files: []
117
+
118
+ files:
119
+ - .gitignore
120
+ - Gemfile
121
+ - Gemfile.lock
122
+ - README.md
123
+ - Rakefile
124
+ - hark.gemspec
125
+ - lib/hark.rb
126
+ - lib/hark/api.rb
127
+ - lib/hark/configuration.rb
128
+ - lib/hark/version.rb
129
+ - test/fixtures/vcr_cassettes/existing-clip.yml
130
+ - test/fixtures/vcr_cassettes/non-existent-clip.yml
131
+ - test/test_hark.rb
132
+ - test/test_hark_api.rb
133
+ - test/test_hark_configuration.rb
134
+ - test/test_hark_version.rb
135
+ - test/test_helper.rb
136
+ homepage: http://www.hark.com/
137
+ licenses: []
138
+
139
+ post_install_message:
140
+ rdoc_options: []
141
+
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
162
+ requirements: []
163
+
164
+ rubyforge_project: hark
165
+ rubygems_version: 1.8.6
166
+ signing_key:
167
+ specification_version: 3
168
+ summary: A Ruby Gem to access the hark.com API
169
+ test_files:
170
+ - test/fixtures/vcr_cassettes/existing-clip.yml
171
+ - test/fixtures/vcr_cassettes/non-existent-clip.yml
172
+ - test/test_hark.rb
173
+ - test/test_hark_api.rb
174
+ - test/test_hark_configuration.rb
175
+ - test/test_hark_version.rb
176
+ - test/test_helper.rb
177
+ has_rdoc: