Skip to content

Commit

Permalink
Fetch embedly services
Browse files Browse the repository at this point in the history
  • Loading branch information
ebonical committed Feb 13, 2012
1 parent 6021a93 commit 7b5ba45
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 1 deletion.
2 changes: 2 additions & 0 deletions lib/tinyembedly.rb
@@ -1,4 +1,6 @@
require 'httparty'
require "tinyembedly/version"
require "tinyembedly/base_uri"
require "tinyembedly/response_error"
require "tinyembedly/oembed"
require "tinyembedly/service"
3 changes: 3 additions & 0 deletions lib/tinyembedly/base_uri.rb
@@ -0,0 +1,3 @@
module Tinyembedly
BASE_URI = 'api.embed.ly'
end
2 changes: 1 addition & 1 deletion lib/tinyembedly/oembed.rb
@@ -1,7 +1,7 @@
module Tinyembedly
class Oembed
include HTTParty
base_uri 'api.embed.ly'
base_uri BASE_URI

attr_reader :response, :api_key, :url
@@api_key = nil
Expand Down
26 changes: 26 additions & 0 deletions lib/tinyembedly/service.rb
@@ -0,0 +1,26 @@
module Tinyembedly
class Service
include HTTParty

def self.services
if !defined?(@@services) || @@services.nil?
res = get("http://#{BASE_URI}/1/services/ruby")
@@services = res.code == 200 ? res.parsed_response : nil
end
@@services
end

def self.services_regex
if services.is_a?(Array)
r = services.collect { |service| service['regex'].join('|') }.join('|')
Regexp.new("^(#{r})$")
end
end

protected

def self.endpoint
'/1/services/ruby'
end
end
end
42 changes: 42 additions & 0 deletions spec/service_spec.rb
@@ -0,0 +1,42 @@
require 'spec_helper'

describe Tinyembedly::Service do
before(:each) do
@base = Tinyembedly::Service
end

describe "list of services" do
it "fetches list of services" do
@base.expects(:get).with('http://api.embed.ly/1/services/ruby').returns(mock(:code => 0))
@base.services
end

it "stores response" do
services = [{'name' => 'youtube','regex' => []}]
response = mock(:code => 200, :parsed_response => services)
@base.expects(:get).returns(response)
@base.services.size.should == 1
@base.services.first['name'].should == 'youtube'
end
end

describe "service regexes" do
it "creates a regex" do
@base.stubs(:services).returns([{'regex' => []}])
@base.services_regex.should be_kind_of(Regexp)
end

it "returns nil when services missing" do
@base.stubs(:services).returns(nil)
@base.services_regex.should be_nil
end

it "collects regexes" do
@base.stubs(:services).returns([
{'regex' => ["http:\\/\\/.*youtube\\.com\\/watch.*","http:\\/\\/youtu\\.be\\/.*"]},
{'regex' => ["http:\\/\\/military\\.discovery\\.com\\/videos\\/.*"]}])
@base.services_regex.should == /^(http:\/\/.*youtube\.com\/watch.*|http:\/\/youtu\.be\/.*|http:\/\/military\.discovery\.com\/videos\/.*)$/
end
end

end

0 comments on commit 7b5ba45

Please sign in to comment.