stashboxr 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/stashboxr.rb +24 -10
  3. data/stashboxr.gemspec +4 -4
  4. metadata +3 -14
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/lib/stashboxr.rb CHANGED
@@ -44,6 +44,14 @@ class Stashboxr
44
44
  @@username
45
45
  end
46
46
 
47
+ def self.autosave=(pref)
48
+ @@autosave = (pref == true)
49
+ end
50
+
51
+ def self.autosave?
52
+ @@autosave rescue true
53
+ end
54
+
47
55
  # Search stashbox.org - the site has this advice for formatting searches:
48
56
  #
49
57
  # You can use any number of terms in your search, all of which will be required in the results. You can also use the following search types (using "type:*the_type*" format): archives, audio, code, documents, images, movies
@@ -78,30 +86,32 @@ class Stashboxr
78
86
  # Upload the file
79
87
  res = Agent.post('http://stashbox.org/upload.php',{
80
88
  :upload_type => "local_file",
81
- :wants_rss => 1,
82
89
  :file => open(local_file),
83
90
  :is_public => is_public
84
91
  })
85
- body = Nokogiri::XML(res.body)
86
92
 
87
- reason = body.search('//error').inner_text rescue nil
93
+ reason = res.search('//div[@class=\'error\']').inner_text
88
94
 
89
- if reason.nil?
90
- new(body.search('//url').inner_text)
95
+ if reason.empty?
96
+ new(res)
91
97
  else
92
98
  raise RuntimeError, "The upload wasn't allowed"<<((reason.nil?) ? "" : " because '#{reason}'")
93
99
  end
94
100
  end
95
101
 
96
102
  def initialize(url)
97
- if (url =~ /(?:http:\/\/)?(?:stashbox\.org)?(?:\/v)?\/?([0-9]+\/(.+))$/)
103
+
104
+ if (url.is_a? Mechanize::Page)
105
+ # We're being initialized with an information page (ie. an upload) make use of it!
106
+ refresh(url)
107
+ elsif (url =~ /(?:http:\/\/)?(?:stashbox\.org)?(?:\/v)?\/?([0-9]+\/(.+))$/)
98
108
  @stashboxid = $1
99
109
  @filename = $2
100
110
  else
101
111
  raise RuntimeError, "That isn't a valid stashbox URL"
102
112
  end
103
113
 
104
- @autosave = true
114
+ @autosave = Stashboxr.autosave?
105
115
  @saved = true
106
116
  end
107
117
 
@@ -208,13 +218,16 @@ class Stashboxr
208
218
  end
209
219
 
210
220
  # Grab metadata from stashbox.org
211
- def refresh
221
+ def refresh(doc = nil)
212
222
  # Get extended information
213
- doc = Agent.get "http://stashbox.org/v/"<<@stashboxid
223
+ doc ||= Agent.get "http://stashbox.org/v/"<<@stashboxid
214
224
 
215
225
  doc.search("//div[@class='subsection']").each do |sub|
216
226
  value = sub.search("div[@class='value']").inner_text.strip
217
227
  case sub.search("div[@class='label']").inner_text
228
+ when "Filename"
229
+ @filename = value
230
+ @stashboxid = URI.parse(sub.search("div[@class='value']/a")[0]['href']).path[1..-1]
218
231
  when "Size"
219
232
  @size = value[/^(\d+\.\d+)\ ([K|M]?)B$/,1].to_f * SIZES[$2]
220
233
  when "Uploaded On"
@@ -252,8 +265,9 @@ class Stashboxr
252
265
  private
253
266
  def parse_tags(new_tags)
254
267
  [new_tags].flatten.collect do |tag|
255
- tag.downcase.gsub(/[^a-z0-9_-]+/,"_")
268
+ tag = tag.downcase.gsub(/[^a-z0-9_-]+/,"_")
256
269
  tag = nil if tag.empty?
270
+ tag
257
271
  end.compact.uniq
258
272
  end
259
273
  end
data/stashboxr.gemspec CHANGED
@@ -1,11 +1,11 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{stashboxr}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["JP Hastings-Spital"]
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.homepage = %q{http://github.com/jphastings/StashboxR}
26
26
  s.rdoc_options = ["--charset=UTF-8"]
27
27
  s.require_paths = ["lib"]
28
- s.rubygems_version = %q{1.3.7}
28
+ s.rubygems_version = %q{1.3.6}
29
29
  s.summary = %q{A ruby api for the stashbox.org website}
30
30
  s.test_files = [
31
31
  "test/helper.rb",
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
37
37
  s.specification_version = 3
38
38
 
39
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
39
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
40
40
  s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
41
41
  s.add_development_dependency(%q<Shoulda>, [">= 0"])
42
42
  else
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stashboxr
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 1
9
- - 2
10
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
11
10
  platform: ruby
12
11
  authors:
13
12
  - JP Hastings-Spital
@@ -22,11 +21,9 @@ dependencies:
22
21
  name: mechanize
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ">="
28
26
  - !ruby/object:Gem::Version
29
- hash: 23
30
27
  segments:
31
28
  - 1
32
29
  - 0
@@ -38,11 +35,9 @@ dependencies:
38
35
  name: Shoulda
39
36
  prerelease: false
40
37
  requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
39
  - - ">="
44
40
  - !ruby/object:Gem::Version
45
- hash: 3
46
41
  segments:
47
42
  - 0
48
43
  version: "0"
@@ -62,8 +57,6 @@ files:
62
57
  - VERSION
63
58
  - lib/stashboxr.rb
64
59
  - stashboxr.gemspec
65
- - test/helper.rb
66
- - test/test_stashboxr.rb
67
60
  has_rdoc: true
68
61
  homepage: http://github.com/jphastings/StashboxR
69
62
  licenses: []
@@ -74,27 +67,23 @@ rdoc_options:
74
67
  require_paths:
75
68
  - lib
76
69
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
70
  requirements:
79
71
  - - ">="
80
72
  - !ruby/object:Gem::Version
81
- hash: 3
82
73
  segments:
83
74
  - 0
84
75
  version: "0"
85
76
  required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
77
  requirements:
88
78
  - - ">="
89
79
  - !ruby/object:Gem::Version
90
- hash: 3
91
80
  segments:
92
81
  - 0
93
82
  version: "0"
94
83
  requirements: []
95
84
 
96
85
  rubyforge_project:
97
- rubygems_version: 1.3.7
86
+ rubygems_version: 1.3.6
98
87
  signing_key:
99
88
  specification_version: 3
100
89
  summary: A ruby api for the stashbox.org website