rmd 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0a1e54a10c83c25b327ad3e66e92c75c2fdb51e3
4
+ data.tar.gz: 245f266bc289d6f49d31217e83e0fadeef2c44a4
5
+ SHA512:
6
+ metadata.gz: 26b45cc05505b77963087e42088f797220fd169a9817de5a5ca6bec48835636a216d3bae271f694e9ef9a07a37b09b6509c7fe4f16b7332117c194488c41f6e8
7
+ data.tar.gz: 7de0c319fbcf8865a209213f71cbbef2d96113a0e4d0585c7fc97bf1803c7de6b3420147d8fe64b6640419c7957d1a0ebe5a89547a55d3195c914ccf874dac9e
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_JOBS: 4
@@ -0,0 +1,5 @@
1
+ Gemfile.lock
2
+ .DS_Store
3
+ *.mp3
4
+ *.gem
5
+ coverage/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'simplecov', require: false
4
+
5
+ # Specify your gem's dependencies in rmd.gemspec
6
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Hieu Nguyen
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,57 @@
1
+ # Rmd
2
+
3
+ This is a simple CLI music downloader for Vietnamese music site.
4
+
5
+ This gem support MacOS / Linux (I'm not sure if it can run on Windows).
6
+
7
+ ## Installation
8
+
9
+ Install it as:
10
+
11
+ $ gem install rmd
12
+
13
+ ## Usage
14
+
15
+ ```shell
16
+ Commands:
17
+ rmd download [LINK] # Dowload your music from a specific link
18
+ rmd help [COMMAND] # Describe available commands or one specific command
19
+ ```
20
+
21
+ ##### Download a song
22
+
23
+ ```shell
24
+ $ rmd download http://www.nhaccuatui.com/bai-hat/dors-mon-ange-mozart-lopera-rock.dDXGBGls3Rik.html
25
+ Start processing http://www.nhaccuatui.com/bai-hat/dors-mon-ange-mozart-lopera-rock.dDXGBGls3Rik.html...
26
+ DorsMonAnge-MozartLoperaRock_4cxzy.mp3
27
+ Time: 00:00:02 ============================================================================================== 100% 1185 KB/sec
28
+ ```
29
+
30
+ ##### Download a playlist
31
+
32
+ ```shell
33
+ $ rmd download http://www.nhaccuatui.com/playlist/fullmetal-alchemist-dang-cap-nhat.ekoGnMrFlQfA.html
34
+ Start processing http://www.nhaccuatui.com/playlist/fullmetal-alchemist-dang-cap-nhat.ekoGnMrFlQfA.html...
35
+ 2 / 2 Songs ================================================================================================= 100%
36
+ DorsMonAnge-MozartLoperaRock_4cxzy.mp3
37
+ Time: 00:00:02 ============================================================================================== 100% 1185 KB/sec
38
+ LeBeinQiuFailMal-MozartLoperaRock_4asqw.mp3
39
+ Time: 00:00:03 ============================================================================================== 100% 902 KB/sec
40
+ ```
41
+
42
+ ## Features
43
+
44
+ - [x] Download songs/playlists from NCT
45
+ - [ ] Download songs/playlist from Zing MP3
46
+ - [ ] Read a file to get list of links to download
47
+ - [x] Visual progress bar for download
48
+ - [ ] Specify download folder
49
+ - [ ] Cache data
50
+
51
+ ## Contributing
52
+
53
+ 1. Fork it ( https://github.com/hieuk09/rmd/fork )
54
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
55
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
56
+ 4. Push to the branch (`git push origin my-new-feature`)
57
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/rmd ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rmd'
4
+ RMD::Main.start
@@ -0,0 +1,186 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://db.gamefaqs.com/portable/3ds/file/fire_emblem_awakening_shop.txt
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sun, 11 Jan 2015 03:50:11 GMT
23
+ Server:
24
+ - Apache
25
+ Last-Modified:
26
+ - Tue, 25 Nov 2014 20:35:34 GMT
27
+ Etag:
28
+ - '"2f86-508b4da5e8458"'
29
+ Accept-Ranges:
30
+ - bytes
31
+ Vary:
32
+ - Accept-Encoding
33
+ Content-Length:
34
+ - '2802'
35
+ Content-Type:
36
+ - text/plain; charset=ISO-8859-1
37
+ body:
38
+ encoding: UTF-8
39
+ string: "----------------------------------------------\r\n+Fire Emblem Awakening,
40
+ 3DS - Map Shops Guide+\r\n----------------------------------------------\r\n
41
+ \ \r\nVersion 1.0 \r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nIndex
42
+ \ \r\n1: Version History [HISTOR]\r\n2:
43
+ Introduction [INTRO1]\r\n3:Main Chapters [MAIN00]\r\nSouthtown
44
+ \ [MAIN01]\r\nWest of Yisstol [MAIN02]\r\nThe
45
+ Northroad [MAIN03]\r\nThe Longfort [MAIN04]\r\nArena
46
+ Ferox [MAIN05]\r\nBorder Pass [MAIN06]\r\nYisstol
47
+ \ [MAIN07]\r\nBreakneck Pass [MAIN08]\r\nBorder
48
+ Sands [MAIN09]\r\nPlegia Courtyard [MAIN10]\r\nThe
49
+ Midmire [MAIN11]\r\nBorder Wastes [MAIN12]\r\nCarrion
50
+ Isle [MAIN13]\r\nThe Searoad [MAIN14]\r\nValm
51
+ Harbor [MAIN15]\r\nThe Mila Tree [MAIN16]\r\nFort
52
+ Steiger [MAIN17]\r\nThe Demon's Ingle [MAIN18]\r\nValm
53
+ Approach [MAIN19]\r\nValm Castle [MAIN20]\r\nPlegia
54
+ Castle [MAIN21]\r\nTable Approach [MAIN22]\r\nThe
55
+ Dragon's Table [MAIN23]\r\nMount Prism [MAIN24]\r\nOrigin
56
+ Peak [MAIN25]\r\n4:Paraloue Chapters [PARA00]\r\nThe
57
+ Farfort [PARA01]\r\nThe Twins' Turf [PARA02]\r\nPeacful
58
+ Village [PARA03]\r\nThe Twin's Hideout [PARA04]\r\nSage
59
+ Hamlet [PARA05]\r\nGreat Gate [PARA06]\r\nMila
60
+ Shrine Ruins [PARA07]\r\nDualing Grounds [PARA08]\r\nVerant
61
+ Forest [PARA09]\r\nMercenary Fortress [PARA10]\r\nWyern
62
+ Valley [PARA11]\r\nThe Ruins of Time [PARA12]\r\nLaw's
63
+ End [PARA13]\r\nDesert Oasis [PARA14]\r\nKidnapper's
64
+ Keep [PARA15]\r\nManor of Lost Souls [PARA16]\r\nDivine
65
+ Dragon Grounds [PARA17]\r\nSea-king's Throne [PARA18]\r\nConqueror's
66
+ Whetstone [PARA19]\r\nMountain Village [PARA20]\r\nWarrior's
67
+ Tomb [PARA21]\r\nWellspring of Truth [PARA22]\r\nGarden
68
+ of Giants [PARA23]\r\n5:Credits/Legal/Contact Info [ENDING]\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nVersion
69
+ History [HISTOR]\r\n0.1:Made the Index and Legal Information\r\n1.0
70
+ Completed guide\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nIntroduction
71
+ \ [INTRO1]\r\nThis guide is to help those with wanting
72
+ to\r\nknow where items can be bought.Ctrl f will \r\nhelp you find a specific
73
+ shop.\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nMain Chapters [MAIN00]\r\n
74
+ \ [MAIN01]\r\n:Southtown :\r\nBronze Sword\r\nBronze
75
+ Lance\r\nBronze Axe \r\nBronze Bow \r\nFire \r\n: :\r\n
76
+ \ [MAIN02]\r\n:West of Yisstol:\r\nHeal
77
+ \ \r\nVulnerary \r\n: :\r\n [MAIN03]\r\n:The
78
+ Northroad:\r\nFire \r\nThunder \r\nWind \r\nFlux \r\n:
79
+ \ :\r\n\r\n [MAIN04]\r\n:The
80
+ Longfort :\r\nHeal \r\nVulnerary \r\nStrength Tonic\r\nDefense
81
+ Tonic \r\nReeking Box \r\n: :\r\n [MAIN05]\r\n:Arena
82
+ Ferox:\r\nIron Lance \r\nIron Bow \r\nThunder \r\n: :\r\n
83
+ \ [MAIN06]\r\n:Border Pass:\r\nIron Sword
84
+ \ \r\nIron Axe \r\nWind \r\n: :\r\n\r\n [MAIN07]\r\n:Yisstol
85
+ \ :\r\nHeal \r\nMend \r\nVulnerary \r\nMagic
86
+ Tonic \r\nResistance Tonic \r\n: :\r\n [MAIN08]\r\n:Breakneck
87
+ Pass:\r\nIron Sword \r\nJavelin \r\nHand Axe \r\nIron Bow
88
+ \ \r\nFire \r\n: :\r\n [MAIN09]\r\n:Border
89
+ Sands:\r\nMend \r\nConcoxtion \r\nSkill tonic \r\nSpeed tonic \r\nLuck
90
+ tonic \r\n: :\r\n [MAIN10]\r\n:Plegia
91
+ Courtyard:\r\nSteel Sword \r\nSteel Lance \r\nSteel Axe \r\nSteel
92
+ Bow \r\nFlux \r\n: :\r\n\r\n [MAIN11]\r\n:The
93
+ Midmire:\r\nIron Lance \r\nJavelin \r\nHand Axe \r\nIron Bow \r\n:
94
+ \ :\r\n\r\n [MAIN12]\r\n:Border
95
+ Wastes:\r\nIron Sword \r\nIron Bow \r\nFire \r\nThunder \r\nWind
96
+ \ \r\n: :\r\n [MAIN13]\r\n:Port
97
+ Ferox:\r\nMend \r\nRescue \r\nDragonstone\r\nBeaststone \r\nMaster
98
+ Seal\r\n: :\r\n\r\n [MAIN14]\r\n:Carrion
99
+ Isle:\r\nElFire \r\nElThunder \r\nElWind \r\nNosferatu \r\nReeking
100
+ Box \r\n: :\r\n [MAIN15]\r\n:The
101
+ Searoad:\r\nSteel Lance \r\nSilver Lance\r\nJavelin \r\nSteel Bow \r\nSilver
102
+ Bow \r\n: :\r\n [MAIN16]\r\n:Valm
103
+ Harbor:\r\nSteel Sword \r\nSilver Sword\r\nSteel Axe \r\nSilver Axe \r\nHand
104
+ Axe \r\n: :\r\n [MAIN17]\r\n:The
105
+ Mila Tree:\r\nHeal \r\nWard \r\nPure Water \r\nHP Tonic
106
+ \ \r\nSecond Seal \r\n: :\r\n [MAIN18]\r\n:Fort
107
+ Steiger:\r\nSilver Sword \r\nSilver Lance \r\nSilver Axe \r\nSilver Bow
108
+ \ \r\nArcfire \r\n: :\r\n [MAIN19]\r\n:The
109
+ Demon's Ingle:\r\nPhyic \r\nRecover \r\nWard \r\nDragonstone
110
+ \ \r\nBeaststone \r\n: :\r\n [MAIN20]\r\n:Valm
111
+ Castle Approach:\r\nSilver Sword \r\nKilling Edge \r\nSilver
112
+ Bow \r\nKiller Bow \r\nRuin \r\n: :\r\n
113
+ \ [MAIN21]\r\n:Valm Castle:\r\nSilver Lance\r\nKiller
114
+ Lance\r\nSilver Axe \r\nKiller Axe \r\n: :\r\n [MAIN22]\r\n:Plegia
115
+ Castle:\r\nJavelin \r\nHand Axe \r\nArcfire \r\nArcthunder
116
+ \ \r\nArcwind \r\n: :\r\n [MAIN23]\r\n:Table
117
+ Approach:\r\nHeal \r\nMend \r\nRescue \r\nWard
118
+ \ \r\nConcoction \r\n: :\r\n [MAIN24]\r\n:The
119
+ Dragon's Table:\r\nPhyic \r\nRecover \r\nDragonstone+
120
+ \ \r\nBeaststone+ \r\nElxir \r\n: :\r\n
121
+ \ [MAIN25]\r\n:Mount Prism:\r\nBolganone
122
+ \ \r\nThoron \r\nReexcalibur \r\nWaste \r\n: :\r\n [MAIN26]\r\n:Origin
123
+ Peak:\r\nBrave Sword \r\nBrave Lance \r\nBrave Axe \r\nBrave Bow\r\nReeking
124
+ Box\r\n: :\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nParaloue
125
+ Chapters [PARA00]\r\n [PARA01]\r\n:The
126
+ Farfort:\r\nIron Sword\r\nIron Lance\r\nIron Axe\r\nIron Bow\r\n: :\r\n
127
+ \ [PARA02]\r\n:The Twins' Turf:\r\nJavelin
128
+ \ \r\nHand Axe \r\nFire \r\nThunder \r\nWind
129
+ \ \r\n: :\r\n [PARA03]\r\n:Peacful
130
+ Village:\r\nHeal \r\nMend \r\nVulnerary \r\nConcoction\r\n:
131
+ \ :\r\n [PARA04]\r\n:The
132
+ Twin's Hideout:\r\nSteel Sword \r\nSteel Lance \r\nSteel Axe
133
+ \ \r\nSteel Bow \r\n: :\r\n [PARA05]\r\n:Sage
134
+ Hamlet:\r\nIron Sword \r\nSteel Sword \r\nSilver Sword\r\nKilling Edge\r\n:
135
+ \ :\r\n [PARA06]\r\n:Great Gate:\r\nHeal
136
+ \ \r\nRescue \r\nConcoction\r\nElixer \r\nSecond Seal\r\n: :\r\n
137
+ \ [PARA07]\r\n:Mila Shrine Ruins:\r\nHeal
138
+ \ \r\nMend \r\nPhyic \r\nRescue \r\nWard
139
+ \ \r\n: :\r\n [PARA08]\r\n:Dualing
140
+ Grounds:\r\nPhyic\r\nElixer\r\nHP Tonic\r\nLuck Tonic\r\nMaster Seal\r\n:
141
+ \ :\r\n [PARA09]\r\n:Verant
142
+ Forest:\r\nIron Lance\r\nSteel Lance\r\nSliver Lance\r\nJavelin\r\nKiller
143
+ Lance\r\n: :\r\n [PARA10]\r\n:Mercenary
144
+ Fortress:\r\nRecover\r\nElixer\r\nMagic Tonic \r\nResistance Tonic\r\nSecond
145
+ Seal\r\n: :\r\n [PARA11]\r\n:Wyern
146
+ Valley:\r\nIron Axe\r\nSteel Axe\r\nSliver Axe\r\nHand Axe\r\nKiller Axe\r\n:
147
+ \ :\r\n [PARA12]\r\n:The Ruins
148
+ of Time:\r\nHeal \r\nMend\r\nConcoction\r\nElixer\r\nMaster Seal\r\n:
149
+ \ :\r\n [PARA13]\r\n:Law's
150
+ End:\r\nBeaststone\r\nConcoction\r\nSkill tonic\r\nSpeed tonic\r\nMaster Seal\r\n:
151
+ \ :\r\n\r\n [PARA14]\r\n:Desert
152
+ Oasis:\r\nElfire \r\nElthunder \r\nElwind \r\nFlux \r\nNosferatu
153
+ \ \r\n: :\r\n [PARA15]\r\n:Kidnapper's
154
+ Keep:\r\nIron Bow\r\nSteel Bow\r\nSilver Bow\r\nKiller Bow\r\n: :\r\n
155
+ \ [PARA16]\r\n:Manor of Lost Souls:\r\nDragonstone\r\nConcoction\r\nStrength
156
+ Tonic\r\nDefense Tonic\r\nSecond Seal\r\n: :\r\n [PARA17]\r\n:Divine
157
+ Dragon Grounds:\r\nArcfire \r\nArcthunder \r\nArcwind \r\nNosferatu\r\nRuin\r\n:
158
+ \ :\r\n [PARA18]\r\n:Sea-king's
159
+ Throne:\r\nSilver Axe\r\nBrave Axe\r\nHammer\r\nDragonstone+ \r\nBeaststone+\r\n:
160
+ \ :\r\n [PARA19]\r\n:Conqueror's
161
+ Whetstone:\r\nSilver Lance\r\nBrave Lance\r\nBeast Killer\r\nBlessed Lance\r\nThoron\r\n:
162
+ \ :\r\n [PARA20]\r\n:Mountain
163
+ Village:\r\nSilver Bow\r\nBrave Bow\r\nBlessed Bow\r\nRexcalibur\r\nWaste\r\n:
164
+ \ :\r\n [PARA21]\r\n:Warrior's
165
+ Tomb:\r\nSliver Sword \r\nBrave Sword \r\nAmrorslayer \r\nWyrmslayer
166
+ \ \r\nBolganone \r\n: :\r\n [PARA22]\r\n:Wellspring
167
+ of Truth:\r\nPhyic \r\nRecover \r\nRescue \r\nWard
168
+ \ \r\nElixer \r\n: :\r\n [PARA23]\r\n:Garden
169
+ of Giants:\r\nLevin Sword\r\nNoble Rapier\r\nShort Spear\r\nShort Axe\r\nLongbow\r\n:
170
+ \ :\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nConclusion/Contact
171
+ Info/Legal [ENDING]\r\n+++++++++++++++++++++++++++++++++++++++++++++\r\nConclusion\r\n-----------------------------------------------------------------\r\nWell
172
+ felt like it took forever, again this was to help those find\r\nitems from
173
+ the shops because memorizing it is a pain.\r\n-----------------------------------------------------------------\r\nContact
174
+ Info\r\n-----------------------------------------------------------------\r\nIf
175
+ you have any questions or suggestions contact me at\r\noratigames@yahoo.com\r\n-----------------------------------------------------------------\r\nLegal
176
+ Stuff\r\n-----------------------------------------------------------------\r\nThis
177
+ may not be reproduced under any circumstances except for personal,\r\nprivate
178
+ use. It may not be placed on any web site or otherwise distributed\r\npublicly
179
+ without advance written permission. Use of this guide on any other \r\nwebsite
180
+ or as a part of any public display is strictly prohibited, and a \r\nviolation
181
+ of copyright. Do not copy or alter information slightly from this \r\nguide,
182
+ and do not present it as your own. The only sites allowed to host this \r\ndocument
183
+ are GameFAQs.com and its affiliates."
184
+ http_version:
185
+ recorded_at: Sun, 11 Jan 2015 03:50:27 GMT
186
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,8 @@
1
+ require 'thor'
2
+ require 'colorize'
3
+ require "rmd/version"
4
+ require 'rmd/processor'
5
+ require 'rmd/main'
6
+
7
+ module RMD
8
+ end
@@ -0,0 +1,51 @@
1
+ require 'open-uri'
2
+ require 'ruby-progressbar'
3
+
4
+ module RMD
5
+ class Downloader
6
+ attr_reader :link
7
+
8
+ def initialize(link)
9
+ @link = link
10
+ end
11
+
12
+ def download
13
+ puts file_name.green
14
+
15
+ progress_bar = ProgressBar.create(
16
+ starting_at: 0,
17
+ total: nil,
18
+ format: "%a %B %p%% %r KB/sec",
19
+ rate_scale: lambda { |rate| rate / 1024 }
20
+ )
21
+
22
+ content_length_proc = Proc.new { |content_length|
23
+ progress_bar.total = content_length
24
+ }
25
+
26
+ progress_proc = Proc.new { |bytes_transferred|
27
+ if progress_bar.total && progress_bar.total < bytes_transferred
28
+ progress_bar.total = nil
29
+ end
30
+ progress_bar.progress = bytes_transferred
31
+ }
32
+
33
+ open(link, "rb", content_length_proc: content_length_proc, progress_proc: progress_proc) do |page|
34
+ File.open(file_name, "wb") do |file|
35
+ file.write(page.read)
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.download(link)
41
+ new(link).download
42
+ end
43
+
44
+ private
45
+
46
+ def file_name
47
+ uri = URI.parse(link)
48
+ File.basename(uri.path)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,29 @@
1
+ require 'rmd/song_playlist_adapter'
2
+ require 'rmd/nct/song'
3
+ require 'rmd/nct/playlist'
4
+
5
+ module RMD
6
+ class Factory
7
+ attr_reader :link
8
+
9
+ def initialize(link)
10
+ @link = link
11
+ end
12
+
13
+ def build
14
+ case link
15
+ when /nhaccuatui/
16
+ case link
17
+ when /bai-hat/
18
+ RMD::SongPlaylistAdapter.new(RMD::NCT::Song.new(link))
19
+ when /playlist/
20
+ RMD::NCT::Playlist.new(link)
21
+ end
22
+ end
23
+ end
24
+
25
+ def self.build(link)
26
+ new(link).build
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ module RMD
2
+ class Main < Thor
3
+ desc 'download [LINK]', "Dowload your music from a specific link"
4
+ def download(link = nil)
5
+ if link == nil
6
+ invoke :help
7
+ else
8
+ RMD::Processor.process(link)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,31 @@
1
+ require 'mechanize'
2
+
3
+ module RMD
4
+ module NCT
5
+ module Getter
6
+ class Base
7
+ attr_reader :url, :data_link, :errors
8
+
9
+ def initialize(url)
10
+ @url = url
11
+ end
12
+
13
+ def fetch; end
14
+
15
+ private
16
+
17
+ def key
18
+ @key ||= uncached_key
19
+ end
20
+
21
+ def uncached_key; end
22
+ def new_link; end
23
+ def page; end
24
+
25
+ def agent
26
+ @agent ||= Mechanize.new
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end