imasquerade 0.1.5 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +49 -0
- data/Gemfile +11 -4
- data/Rakefile +4 -8
- data/VERSION +1 -0
- data/imasquerade.gemspec +35 -33
- data/lib/imasquerade.rb +3 -2
- data/lib/imasquerade/extractor.rb +43 -19
- metadata +122 -135
- data/lib/version.rb +0 -9
data/.rvmrc
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
4
|
+
# development environment upon cd'ing into the directory
|
5
|
+
|
6
|
+
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
|
7
|
+
environment_id="ruby-1.9.2-p180@imasquerade"
|
8
|
+
|
9
|
+
#
|
10
|
+
# First we attempt to load the desired environment directly from the environment
|
11
|
+
# file. This is very fast and efficicent compared to running through the entire
|
12
|
+
# CLI and selector. If you want feedback on which environment was used then
|
13
|
+
# insert the word 'use' after --create as this triggers verbose mode.
|
14
|
+
#
|
15
|
+
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
|
16
|
+
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
|
17
|
+
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
18
|
+
|
19
|
+
[[ -s ".rvm/hooks/after_use" ]] && . ".rvm/hooks/after_use"
|
20
|
+
else
|
21
|
+
# If the environment file has not yet been created, use the RVM CLI to select.
|
22
|
+
rvm --create use "$environment_id"
|
23
|
+
fi
|
24
|
+
|
25
|
+
#
|
26
|
+
# If you use an RVM gemset file to install a list of gems (*.gems), you can have
|
27
|
+
# it be automatically loaded. Uncomment the following and adjust the filename if
|
28
|
+
# necessary.
|
29
|
+
#
|
30
|
+
# filename=".gems"
|
31
|
+
# if [[ -s "$filename" ]] ; then
|
32
|
+
# rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
|
33
|
+
# fi
|
34
|
+
|
35
|
+
#
|
36
|
+
# If you use bundler and would like to run bundle each time you enter the
|
37
|
+
# directory, you can uncomment the following code.
|
38
|
+
#
|
39
|
+
# # Ensure that Bundler is installed. Install it if it is not.
|
40
|
+
# if ! command -v bundle >/dev/null; then
|
41
|
+
# printf "The rubygem 'bundler' is not installed. Installing it now.\n"
|
42
|
+
# gem install bundler
|
43
|
+
# fi
|
44
|
+
#
|
45
|
+
# # Bundle while reducing excess noise.
|
46
|
+
# printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
|
47
|
+
# bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
|
48
|
+
#
|
49
|
+
|
data/Gemfile
CHANGED
@@ -5,9 +5,16 @@ source "http://rubygems.org"
|
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
gem "curb", "~> 0.7.15"
|
9
|
+
gem "nokogiri", "~> 1.5.0"
|
10
|
+
gem "plist", "~> 3.1.0"
|
11
|
+
gem "colorize", "~> 0.5.8"
|
12
|
+
|
8
13
|
group :development do
|
9
|
-
gem "
|
10
|
-
gem "
|
11
|
-
gem "jeweler", "~> 1.
|
12
|
-
gem "
|
14
|
+
gem "bundler", "~> 1.0.15"
|
15
|
+
gem "git", "~> 1.2.5"
|
16
|
+
gem "jeweler", "~> 1.6.4"
|
17
|
+
gem "rake", "~> 0.9.2"
|
18
|
+
gem "rcov", "~> 0.9.9"
|
19
|
+
gem "shoulda", "~> 2.11.3"
|
13
20
|
end
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler'
|
3
5
|
begin
|
@@ -10,23 +12,16 @@ end
|
|
10
12
|
require 'rake'
|
11
13
|
|
12
14
|
require 'jeweler'
|
13
|
-
require './lib/version.rb'
|
14
15
|
Jeweler::Tasks.new do |gem|
|
15
16
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
16
17
|
gem.name = "imasquerade"
|
17
|
-
gem.version = Imasquerade::Version::STRING
|
18
18
|
gem.homepage = "http://github.com/RLovelett/imasquerade"
|
19
19
|
gem.license = "MIT"
|
20
20
|
gem.summary = %Q{iMasquerade is a Ruby class that takes an iTunes Podcast URL and outputs the XML feed URL.}
|
21
21
|
gem.description = %Q{iMasquerade is a Ruby project that allows for the retrieval of the original XML feed used by iTunes to create a specific podcast feed. As the name suggests, the class works by masquerading as iTunes, thereby retrieving the same XML used internal to iTunes. Once this iTunes XML is retrieved it is parsed for the source feed url and is subsequently returned.}
|
22
22
|
gem.email = "ryan@wahvee.com"
|
23
23
|
gem.authors = ["Ryan Lovelett"]
|
24
|
-
#
|
25
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
26
|
-
gem.add_runtime_dependency 'curb', '= 0.7.10'
|
27
|
-
gem.add_runtime_dependency 'nokogiri', '= 1.4.4'
|
28
|
-
gem.add_development_dependency 'curb', '= 0.7.10'
|
29
|
-
gem.add_development_dependency 'nokogiri', '= 1.4.4'
|
24
|
+
# dependencies defined in Gemfile
|
30
25
|
end
|
31
26
|
Jeweler::RubygemsDotOrgTasks.new
|
32
27
|
|
@@ -42,6 +37,7 @@ Rcov::RcovTask.new do |test|
|
|
42
37
|
test.libs << 'test'
|
43
38
|
test.pattern = 'test/**/test_*.rb'
|
44
39
|
test.verbose = true
|
40
|
+
test.rcov_opts << '--exclude "gems/*"'
|
45
41
|
end
|
46
42
|
|
47
43
|
task :default => :test
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.1
|
data/imasquerade.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{imasquerade}
|
8
|
-
s.version = "0.1
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ryan Lovelett"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-07-30}
|
13
13
|
s.description = %q{iMasquerade is a Ruby project that allows for the retrieval of the original XML feed used by iTunes to create a specific podcast feed. As the name suggests, the class works by masquerading as iTunes, thereby retrieving the same XML used internal to iTunes. Once this iTunes XML is retrieved it is parsed for the source feed url and is subsequently returned.}
|
14
14
|
s.email = %q{ryan@wahvee.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -18,59 +18,61 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".rvmrc",
|
21
22
|
"Gemfile",
|
22
23
|
"LICENSE.txt",
|
23
24
|
"README.rdoc",
|
24
25
|
"Rakefile",
|
26
|
+
"VERSION",
|
25
27
|
"imasquerade.gemspec",
|
26
28
|
"lib/imasquerade.rb",
|
27
29
|
"lib/imasquerade/extractor.rb",
|
28
|
-
"lib/version.rb",
|
29
30
|
"test/helper.rb",
|
30
31
|
"test/test_imasquerade.rb"
|
31
32
|
]
|
32
33
|
s.homepage = %q{http://github.com/RLovelett/imasquerade}
|
33
34
|
s.licenses = ["MIT"]
|
34
35
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.
|
36
|
+
s.rubygems_version = %q{1.6.2}
|
36
37
|
s.summary = %q{iMasquerade is a Ruby class that takes an iTunes Podcast URL and outputs the XML feed URL.}
|
37
|
-
s.test_files = [
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_imasquerade.rb"
|
40
|
-
]
|
41
38
|
|
42
39
|
if s.respond_to? :specification_version then
|
43
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
40
|
s.specification_version = 3
|
45
41
|
|
46
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
-
s.
|
48
|
-
s.
|
49
|
-
s.
|
50
|
-
s.
|
51
|
-
s.
|
52
|
-
s.
|
53
|
-
s.add_development_dependency(%q<
|
54
|
-
s.add_development_dependency(%q<
|
43
|
+
s.add_runtime_dependency(%q<curb>, ["~> 0.7.15"])
|
44
|
+
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
45
|
+
s.add_runtime_dependency(%q<plist>, ["~> 3.1.0"])
|
46
|
+
s.add_runtime_dependency(%q<colorize>, ["~> 0.5.8"])
|
47
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.15"])
|
48
|
+
s.add_development_dependency(%q<git>, ["~> 1.2.5"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
50
|
+
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
51
|
+
s.add_development_dependency(%q<rcov>, ["~> 0.9.9"])
|
52
|
+
s.add_development_dependency(%q<shoulda>, ["~> 2.11.3"])
|
55
53
|
else
|
56
|
-
s.add_dependency(%q<
|
57
|
-
s.add_dependency(%q<
|
58
|
-
s.add_dependency(%q<
|
59
|
-
s.add_dependency(%q<
|
60
|
-
s.add_dependency(%q<
|
61
|
-
s.add_dependency(%q<
|
62
|
-
s.add_dependency(%q<
|
63
|
-
s.add_dependency(%q<
|
54
|
+
s.add_dependency(%q<curb>, ["~> 0.7.15"])
|
55
|
+
s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
56
|
+
s.add_dependency(%q<plist>, ["~> 3.1.0"])
|
57
|
+
s.add_dependency(%q<colorize>, ["~> 0.5.8"])
|
58
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.15"])
|
59
|
+
s.add_dependency(%q<git>, ["~> 1.2.5"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
61
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
62
|
+
s.add_dependency(%q<rcov>, ["~> 0.9.9"])
|
63
|
+
s.add_dependency(%q<shoulda>, ["~> 2.11.3"])
|
64
64
|
end
|
65
65
|
else
|
66
|
-
s.add_dependency(%q<
|
67
|
-
s.add_dependency(%q<
|
68
|
-
s.add_dependency(%q<
|
69
|
-
s.add_dependency(%q<
|
70
|
-
s.add_dependency(%q<
|
71
|
-
s.add_dependency(%q<
|
72
|
-
s.add_dependency(%q<
|
73
|
-
s.add_dependency(%q<
|
66
|
+
s.add_dependency(%q<curb>, ["~> 0.7.15"])
|
67
|
+
s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
68
|
+
s.add_dependency(%q<plist>, ["~> 3.1.0"])
|
69
|
+
s.add_dependency(%q<colorize>, ["~> 0.5.8"])
|
70
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.15"])
|
71
|
+
s.add_dependency(%q<git>, ["~> 1.2.5"])
|
72
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
73
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
74
|
+
s.add_dependency(%q<rcov>, ["~> 0.9.9"])
|
75
|
+
s.add_dependency(%q<shoulda>, ["~> 2.11.3"])
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
data/lib/imasquerade.rb
CHANGED
@@ -2,38 +2,62 @@ module Imasquerade
|
|
2
2
|
class Extractor
|
3
3
|
public
|
4
4
|
def Extractor.parse_itunes_uri(uri='')
|
5
|
-
|
6
|
-
|
5
|
+
return Extractor.fetch_and_parse_feed_from_apple(uri)
|
6
|
+
end
|
7
|
+
def Extractor.debug_output(uri='')
|
8
|
+
id = Extractor.itunes_id(uri)
|
9
|
+
doc = Extractor.get_raw_string(uri)
|
10
|
+
File.open("#{id}.xml", 'w') {|f| f.write(doc) }
|
7
11
|
end
|
8
12
|
private
|
9
|
-
def Extractor.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def Extractor.uri_orig(id='')
|
14
|
+
# This is the original place to check
|
15
|
+
@@uri_orig = "http://itunes.apple.com/podcast/id#{id}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def Extractor.uri_redirect(id='')
|
19
|
+
# Check here if there is a redirect
|
20
|
+
@@uri_redirect = "http://itunes.apple.com/WebObjects/DZR.woa/wa/viewPodcast?id=#{id}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def Extractor.itunes_id(url="")
|
24
|
+
/(?:id=?)([0-9]+)/i =~ url
|
25
|
+
return $1
|
15
26
|
end
|
16
|
-
|
17
|
-
def Extractor.
|
18
|
-
uri = "http://itunes.apple.com/podcast/id#{id}"
|
27
|
+
|
28
|
+
def Extractor.get_raw_string(uri="")
|
19
29
|
# In case there is some sort of error
|
20
30
|
begin
|
21
31
|
response = Curl::Easy.perform(uri) do |curl|
|
22
32
|
curl.headers["User-Agent"] = 'iTunes/10.1.1'
|
23
33
|
end
|
24
|
-
|
25
|
-
array_of_feeds = reader.xpath('//xmlns:key[text()="feedURL"]/following-sibling::xmlns:string[1]/text()')
|
26
|
-
return array_of_feeds[0].to_s
|
34
|
+
return response.body_str
|
27
35
|
rescue Nokogiri::XML::SyntaxError => e
|
28
|
-
puts "Caught exception: #{e}"
|
36
|
+
puts "Caught exception: #{e}".colorize(:red)
|
29
37
|
return nil
|
30
38
|
rescue Curl::Err::HostResolutionError => e
|
31
|
-
puts "Caught exception: #{e}"
|
39
|
+
puts "Caught exception: #{e}".colorize(:red)
|
32
40
|
return nil
|
33
41
|
rescue Curl::Err::RecvError => e
|
34
|
-
puts "Caught exception: #{e}"
|
42
|
+
puts "Caught exception: #{e}".colorize(:red)
|
35
43
|
return nil
|
36
44
|
end
|
37
|
-
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def Extractor.fetch_and_parse_feed_from_apple(url)
|
48
|
+
id = Extractor.itunes_id(url)
|
49
|
+
response = Extractor.get_raw_string(url)
|
50
|
+
reader = Nokogiri::XML(response)
|
51
|
+
feed_url = reader.xpath('//@feed-url')
|
52
|
+
return feed_url[0].value unless feed_url.count == 0
|
53
|
+
list = Plist::parse_xml(response)
|
54
|
+
if list.has_key?('action') && list['action']['kind'] == "Goto" then
|
55
|
+
response = Extractor.fetch_and_parse_feed_from_apple(list['action']['url'])
|
56
|
+
return response
|
57
|
+
elsif list.has_key?('dialog')
|
58
|
+
throw list['dialog']['explanation']
|
59
|
+
end
|
60
|
+
File.open("#{id}.html", 'w') {|f| f.write(response) }
|
61
|
+
end
|
38
62
|
end
|
39
|
-
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,192 +1,179 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: imasquerade
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
version: 0.1.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Ryan Lovelett
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2011-01-25 00:00:00 -06:00
|
12
|
+
date: 2011-07-30 00:00:00.000000000 -05:00
|
18
13
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
22
|
-
requirement: &
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: curb
|
17
|
+
requirement: &9148180 !ruby/object:Gem::Requirement
|
23
18
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
|
29
|
-
version: "0"
|
30
|
-
type: :development
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.15
|
23
|
+
type: :runtime
|
31
24
|
prerelease: false
|
32
|
-
version_requirements: *
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
35
|
-
requirement: &
|
25
|
+
version_requirements: *9148180
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: nokogiri
|
28
|
+
requirement: &9146520 !ruby/object:Gem::Requirement
|
36
29
|
none: false
|
37
|
-
requirements:
|
30
|
+
requirements:
|
38
31
|
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
|
41
|
-
|
42
|
-
- 0
|
43
|
-
- 0
|
44
|
-
version: 1.0.0
|
45
|
-
type: :development
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.5.0
|
34
|
+
type: :runtime
|
46
35
|
prerelease: false
|
47
|
-
version_requirements: *
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
50
|
-
requirement: &
|
36
|
+
version_requirements: *9146520
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: plist
|
39
|
+
requirement: &9121000 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 3.1.0
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *9121000
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: colorize
|
50
|
+
requirement: &9119460 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.5.8
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *9119460
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: bundler
|
61
|
+
requirement: &9117660 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
|
-
requirements:
|
63
|
+
requirements:
|
53
64
|
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
- 1
|
57
|
-
- 5
|
58
|
-
- 2
|
59
|
-
version: 1.5.2
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.0.15
|
60
67
|
type: :development
|
61
68
|
prerelease: false
|
62
|
-
version_requirements: *
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
65
|
-
requirement: &
|
69
|
+
version_requirements: *9117660
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: git
|
72
|
+
requirement: &9115680 !ruby/object:Gem::Requirement
|
66
73
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
- 0
|
72
|
-
version: "0"
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.2.5
|
73
78
|
type: :development
|
74
79
|
prerelease: false
|
75
|
-
version_requirements: *
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
78
|
-
requirement: &
|
80
|
+
version_requirements: *9115680
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: jeweler
|
83
|
+
requirement: &9114340 !ruby/object:Gem::Requirement
|
79
84
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
|
85
|
-
- 7
|
86
|
-
- 10
|
87
|
-
version: 0.7.10
|
88
|
-
type: :runtime
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.6.4
|
89
|
+
type: :development
|
89
90
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
91
|
+
version_requirements: *9114340
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rake
|
94
|
+
requirement: &9095840 !ruby/object:Gem::Requirement
|
94
95
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
100
|
-
- 4
|
101
|
-
- 4
|
102
|
-
version: 1.4.4
|
103
|
-
type: :runtime
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.9.2
|
100
|
+
type: :development
|
104
101
|
prerelease: false
|
105
|
-
version_requirements: *
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name:
|
108
|
-
requirement: &
|
102
|
+
version_requirements: *9095840
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rcov
|
105
|
+
requirement: &9094400 !ruby/object:Gem::Requirement
|
109
106
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
- 0
|
115
|
-
- 7
|
116
|
-
- 10
|
117
|
-
version: 0.7.10
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.9
|
118
111
|
type: :development
|
119
112
|
prerelease: false
|
120
|
-
version_requirements: *
|
121
|
-
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
123
|
-
requirement: &
|
113
|
+
version_requirements: *9094400
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: shoulda
|
116
|
+
requirement: &9092780 !ruby/object:Gem::Requirement
|
124
117
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
- 1
|
130
|
-
- 4
|
131
|
-
- 4
|
132
|
-
version: 1.4.4
|
118
|
+
requirements:
|
119
|
+
- - ~>
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 2.11.3
|
133
122
|
type: :development
|
134
123
|
prerelease: false
|
135
|
-
version_requirements: *
|
136
|
-
description: iMasquerade is a Ruby project that allows for the retrieval of the original
|
124
|
+
version_requirements: *9092780
|
125
|
+
description: iMasquerade is a Ruby project that allows for the retrieval of the original
|
126
|
+
XML feed used by iTunes to create a specific podcast feed. As the name suggests,
|
127
|
+
the class works by masquerading as iTunes, thereby retrieving the same XML used
|
128
|
+
internal to iTunes. Once this iTunes XML is retrieved it is parsed for the source
|
129
|
+
feed url and is subsequently returned.
|
137
130
|
email: ryan@wahvee.com
|
138
131
|
executables: []
|
139
|
-
|
140
132
|
extensions: []
|
141
|
-
|
142
|
-
extra_rdoc_files:
|
133
|
+
extra_rdoc_files:
|
143
134
|
- LICENSE.txt
|
144
135
|
- README.rdoc
|
145
|
-
files:
|
136
|
+
files:
|
146
137
|
- .document
|
138
|
+
- .rvmrc
|
147
139
|
- Gemfile
|
148
140
|
- LICENSE.txt
|
149
141
|
- README.rdoc
|
150
142
|
- Rakefile
|
143
|
+
- VERSION
|
151
144
|
- imasquerade.gemspec
|
152
145
|
- lib/imasquerade.rb
|
153
146
|
- lib/imasquerade/extractor.rb
|
154
|
-
- lib/version.rb
|
155
147
|
- test/helper.rb
|
156
148
|
- test/test_imasquerade.rb
|
157
149
|
has_rdoc: true
|
158
150
|
homepage: http://github.com/RLovelett/imasquerade
|
159
|
-
licenses:
|
151
|
+
licenses:
|
160
152
|
- MIT
|
161
153
|
post_install_message:
|
162
154
|
rdoc_options: []
|
163
|
-
|
164
|
-
require_paths:
|
155
|
+
require_paths:
|
165
156
|
- lib
|
166
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
167
158
|
none: false
|
168
|
-
requirements:
|
169
|
-
- -
|
170
|
-
- !ruby/object:Gem::Version
|
171
|
-
|
172
|
-
segments:
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
segments:
|
173
164
|
- 0
|
174
|
-
|
175
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
+
hash: 2697191615820270197
|
166
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
167
|
none: false
|
177
|
-
requirements:
|
178
|
-
- -
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
|
181
|
-
- 0
|
182
|
-
version: "0"
|
168
|
+
requirements:
|
169
|
+
- - ! '>='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
183
172
|
requirements: []
|
184
|
-
|
185
173
|
rubyforge_project:
|
186
|
-
rubygems_version: 1.
|
174
|
+
rubygems_version: 1.6.2
|
187
175
|
signing_key:
|
188
176
|
specification_version: 3
|
189
|
-
summary: iMasquerade is a Ruby class that takes an iTunes Podcast URL and outputs
|
190
|
-
|
191
|
-
|
192
|
-
- test/test_imasquerade.rb
|
177
|
+
summary: iMasquerade is a Ruby class that takes an iTunes Podcast URL and outputs
|
178
|
+
the XML feed URL.
|
179
|
+
test_files: []
|