imagevenue 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/image_venue +2 -105
- data/lib/image_venue.rb +39 -35
- data/lib/image_venue/cli.rb +125 -0
- data/lib/image_venue/{authenticate.rb → connection.rb} +81 -19
- data/lib/image_venue/directory.rb +106 -169
- data/lib/image_venue/file.rb +253 -71
- data/lib/image_venue/net_http_post_extensions.rb +5 -18
- metadata +4 -5
- data/lib/image_venue/upload.rb +0 -137
- data/lib/image_venue/upload_file.rb +0 -84
@@ -1,28 +1,23 @@
|
|
1
1
|
module ImageVenue
|
2
2
|
class Directory
|
3
3
|
class << self
|
4
|
-
|
5
|
-
@list_uri ||= URI.parse(ImageVenue.base_url + '/view_dir.php')
|
6
|
-
end
|
4
|
+
attr_accessor :debug
|
7
5
|
|
8
|
-
def
|
9
|
-
|
6
|
+
def debug?
|
7
|
+
(ImageVenue.debug? or self.debug) ? true : false
|
10
8
|
end
|
11
9
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def files_format_website
|
21
|
-
@files_format_website ||= 'webpage'
|
10
|
+
def puts_debug(*args)
|
11
|
+
if self.debug?
|
12
|
+
puts(*args)
|
13
|
+
return true
|
14
|
+
else
|
15
|
+
return false
|
16
|
+
end
|
22
17
|
end
|
23
18
|
|
24
|
-
def
|
25
|
-
@
|
19
|
+
def list_uri
|
20
|
+
@list_uri ||= URI.parse(ImageVenue.base_url + '/view_dir.php')
|
26
21
|
end
|
27
22
|
|
28
23
|
def select_uri
|
@@ -49,218 +44,160 @@ module ImageVenue
|
|
49
44
|
@delete_directory_key ||= 'delete_dir[]'
|
50
45
|
end
|
51
46
|
|
52
|
-
def
|
53
|
-
|
47
|
+
def create_params(directory_name)
|
48
|
+
{
|
49
|
+
self.create_directory_key => directory_name
|
50
|
+
}
|
54
51
|
end
|
55
|
-
end
|
56
|
-
|
57
|
-
attr_accessor :directories
|
58
|
-
attr_accessor :directories_files
|
59
|
-
attr_accessor :selected_directory
|
60
|
-
attr_accessor :debug
|
61
52
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
self.selected_directory = nil
|
68
|
-
return nil
|
69
|
-
end
|
70
|
-
|
71
|
-
def debug?
|
72
|
-
(ImageVenue.debug or self.debug) ? true : false
|
73
|
-
end
|
53
|
+
def delete_params(directory_name)
|
54
|
+
{
|
55
|
+
self.delete_directory_key => directory_name
|
56
|
+
}
|
57
|
+
end
|
74
58
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
else
|
80
|
-
return false
|
59
|
+
def select_params(directory_name)
|
60
|
+
{
|
61
|
+
self.select_directory_key => directory_name
|
62
|
+
}
|
81
63
|
end
|
82
|
-
end
|
83
64
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
request =
|
88
|
-
|
89
|
-
response = Net::HTTP.start(self.class.list_uri.host, self.class.list_uri.port) do |http|
|
65
|
+
def list(connection=nil)
|
66
|
+
self.puts_debug "Trying to fetch directories ..."
|
67
|
+
request = Net::HTTP::Get.new(self.list_uri.path)
|
68
|
+
request.header['cookie'] = [connection.cookie_as_string]
|
69
|
+
response = Net::HTTP.start(self.list_uri.host, self.list_uri.port) do |http|
|
90
70
|
http.request(request)
|
91
71
|
end
|
92
72
|
if response.is_a?(Net::HTTPSuccess)
|
73
|
+
directories = []
|
93
74
|
hpricot = Hpricot(response.body)
|
94
|
-
|
95
|
-
|
96
|
-
|
75
|
+
form = hpricot.search('form:first').first || Hpricot::Elem.new('')
|
76
|
+
form.search('input[@type="radio"]').each do |input|
|
77
|
+
directories << self.new(connection, input['value'], false)
|
78
|
+
end
|
79
|
+
self.puts_debug "Directories successfully fetched!"
|
80
|
+
return directories
|
97
81
|
else
|
98
|
-
puts_debug "Directories fetch failed!"
|
82
|
+
self.puts_debug "Directories fetch failed!"
|
99
83
|
return false
|
100
84
|
end
|
101
|
-
else
|
102
|
-
puts_debug "Directories from cache!"
|
103
|
-
return self.directories
|
104
85
|
end
|
105
86
|
end
|
106
87
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
if response.is_a?(Net::HTTPSuccess)
|
117
|
-
self.directories_files[directory] = ImageVenue::File.parse_forum_codes(response.body, directory)
|
118
|
-
puts_debug "Files successfully fetched!"
|
119
|
-
return self.directories_files[directory]
|
120
|
-
else
|
121
|
-
puts_debug "Files fetch failed!"
|
122
|
-
return false
|
123
|
-
end
|
124
|
-
else
|
125
|
-
puts_debug "Files from cache for directory: '#{directory}'"
|
126
|
-
return self.directories_files[directory]
|
127
|
-
end
|
88
|
+
attr_accessor :connection
|
89
|
+
attr_accessor :debug
|
90
|
+
attr_accessor :name
|
91
|
+
|
92
|
+
def initialize(connection, name, is_new=true)
|
93
|
+
self.connection = connection
|
94
|
+
self.name = name
|
95
|
+
@is_new = is_new
|
96
|
+
return nil
|
128
97
|
end
|
129
98
|
|
130
|
-
def
|
131
|
-
|
132
|
-
self.class.files_format_key => self.class.files_format_forum,
|
133
|
-
self.class.files_directory_key => directory
|
134
|
-
}
|
99
|
+
def debug?
|
100
|
+
(self.class.debug? or self.debug) ? true : false
|
135
101
|
end
|
136
102
|
|
137
|
-
def
|
138
|
-
if
|
139
|
-
|
140
|
-
|
141
|
-
request.form_data = self.select_params(directory)
|
142
|
-
request.header['cookie'] = [ImageVenue.authenticate.cookie_as_string]
|
143
|
-
response = Net::HTTP.start(self.class.select_uri.host, self.class.select_uri.port) do |http|
|
144
|
-
http.request(request)
|
145
|
-
end
|
146
|
-
if response.is_a?(Net::HTTPFound) and not (response.header['Set-Cookie'].nil? or response.header['Set-Cookie'].empty?)
|
147
|
-
self.selected_directory = directory
|
148
|
-
ImageVenue.authenticate.cookie[self.class.cookie_directory_key] = directory
|
149
|
-
puts_debug "Directory successfully selected!"
|
150
|
-
return true
|
151
|
-
else
|
152
|
-
puts_debug "Directory select failed!"
|
153
|
-
return false
|
154
|
-
end
|
103
|
+
def puts_debug(*args)
|
104
|
+
if self.debug?
|
105
|
+
puts(*args)
|
106
|
+
return true
|
155
107
|
else
|
156
|
-
|
157
|
-
return nil
|
108
|
+
return false
|
158
109
|
end
|
159
110
|
end
|
160
111
|
|
161
|
-
def
|
162
|
-
|
163
|
-
self.class.select_directory_key => directory
|
164
|
-
}
|
112
|
+
def is_new?
|
113
|
+
@is_new
|
165
114
|
end
|
166
115
|
|
167
|
-
def
|
168
|
-
|
169
|
-
puts_debug "Trying to create directory: '#{
|
116
|
+
def save(force=false, reload=false)
|
117
|
+
if force or self.connection.directories(reload).find {|dir| dir.name == self.name }.nil?
|
118
|
+
self.puts_debug "Trying to create directory: '#{self.name}'"
|
170
119
|
request = Net::HTTP::Post.new(self.class.create_uri.path)
|
171
|
-
request.form_data = self.create_params(
|
172
|
-
request.header['cookie'] = [
|
120
|
+
request.form_data = self.class.create_params(self.name)
|
121
|
+
request.header['cookie'] = [self.connection.cookie_as_string]
|
173
122
|
response = Net::HTTP.start(self.class.create_uri.host, self.class.create_uri.port) do |http|
|
174
123
|
http.request(request)
|
175
124
|
end
|
176
125
|
if response.is_a?(Net::HTTPSuccess) and not (response.header['Set-Cookie'].nil? or response.header['Set-Cookie'].empty?)
|
177
|
-
self.selected_directory =
|
178
|
-
self.
|
179
|
-
|
180
|
-
puts_debug "Directory successfully created!"
|
126
|
+
self.connection.selected_directory = self.name
|
127
|
+
self.puts_debug "Directory successfully created and selected!"
|
128
|
+
@is_new = false
|
181
129
|
return true
|
182
130
|
else
|
183
|
-
puts_debug "Directory create failed!"
|
131
|
+
self.puts_debug "Directory create failed!"
|
184
132
|
return false
|
185
133
|
end
|
186
134
|
else
|
187
|
-
puts_debug "Directory already exists: '#{
|
135
|
+
self.puts_debug "Directory already exists: '#{self.name}'"
|
188
136
|
return nil
|
189
137
|
end
|
190
138
|
end
|
191
139
|
|
192
|
-
def
|
193
|
-
{
|
194
|
-
self.
|
195
|
-
}
|
196
|
-
end
|
197
|
-
|
198
|
-
def select_or_create(directory, reload=false, reselect=false)
|
199
|
-
if self.list(reload).include?(directory)
|
200
|
-
return self.select(directory, reselect)
|
201
|
-
else
|
202
|
-
return self.create(directory, false) # reload)
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def delete(directory, reload=false)
|
207
|
-
if self.list(reload).include?(directory)
|
208
|
-
puts_debug "Trying to delete directory: '#{directory}'"
|
140
|
+
def destroy(force=false, reload=false)
|
141
|
+
if force or not self.connection.directories(reload).find {|dir| dir.name == self.name }.nil?
|
142
|
+
self.puts_debug "Trying to delete directory: '#{self.name}'"
|
209
143
|
request = Net::HTTP::Post.new(self.class.delete_uri.path)
|
210
|
-
request.form_data = self.delete_params(
|
211
|
-
request.header['cookie'] = [
|
144
|
+
request.form_data = self.class.delete_params(self.name)
|
145
|
+
request.header['cookie'] = [self.connection.cookie_as_string]
|
212
146
|
response = Net::HTTP.start(self.class.delete_uri.host, self.class.delete_uri.port) do |http|
|
213
147
|
http.request(request)
|
214
148
|
end
|
215
149
|
if response.is_a?(Net::HTTPSuccess)
|
216
|
-
if
|
217
|
-
self.selected_directory = nil
|
218
|
-
ImageVenue.authenticate.cookie.delete(self.class.cookie_directory_key)
|
150
|
+
if self.connection.selected_directory == self.name
|
151
|
+
self.connection.selected_directory = nil
|
219
152
|
end
|
220
|
-
self.
|
221
|
-
|
222
|
-
puts_debug "Directory successfully deleted!"
|
153
|
+
self.puts_debug "Directory successfully deleted!"
|
154
|
+
@is_new = true
|
223
155
|
return true
|
224
156
|
else
|
225
|
-
puts_debug "Directory delete failed!"
|
157
|
+
self.puts_debug "Directory delete failed!"
|
226
158
|
return false
|
227
159
|
end
|
228
160
|
else
|
229
|
-
puts_debug "Directory does not exist: '#{
|
161
|
+
self.puts_debug "Directory does not exist: '#{self.name}'"
|
230
162
|
return nil
|
231
163
|
end
|
232
164
|
end
|
233
165
|
|
234
|
-
def
|
235
|
-
|
236
|
-
self.
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
166
|
+
def select(reselect=false)
|
167
|
+
if self.connection.selected_directory != self.name or reselect
|
168
|
+
self.puts_debug "Trying to select directory: '#{self.name}'"
|
169
|
+
request = Net::HTTP::Post.new(self.class.select_uri.path)
|
170
|
+
request.form_data = self.class.select_params(self.name)
|
171
|
+
request.header['cookie'] = [self.connection.cookie_as_string]
|
172
|
+
response = Net::HTTP.start(self.class.select_uri.host, self.class.select_uri.port) do |http|
|
173
|
+
http.request(request)
|
174
|
+
end
|
175
|
+
if response.is_a?(Net::HTTPFound) and not (response.header['Set-Cookie'].nil? or response.header['Set-Cookie'].empty?)
|
176
|
+
self.connection.selected_directory = self.name
|
177
|
+
self.puts_debug "Directory successfully selected!"
|
178
|
+
return true
|
179
|
+
else
|
180
|
+
self.puts_debug "Directory select failed!"
|
181
|
+
return false
|
182
|
+
end
|
248
183
|
else
|
249
|
-
puts_debug "
|
250
|
-
return
|
184
|
+
self.puts_debug "Directory already selected."
|
185
|
+
return nil
|
251
186
|
end
|
252
187
|
end
|
253
188
|
|
254
|
-
def
|
255
|
-
if
|
256
|
-
|
257
|
-
self.directories_files = {}
|
258
|
-
puts_debug "Directories cache cleared!"
|
189
|
+
def files(reload=false)
|
190
|
+
if reload or @files.nil?
|
191
|
+
@files = ImageVenue::File.list(self)
|
259
192
|
else
|
260
|
-
self.
|
261
|
-
puts_debug "Directory's `#{directory}` cache cleared!"
|
193
|
+
self.puts_debug "Files from cache for directory: '#{self.name}'"
|
262
194
|
end
|
263
|
-
return
|
195
|
+
return @files
|
196
|
+
end
|
197
|
+
|
198
|
+
def clear_cache
|
199
|
+
@files = nil
|
200
|
+
self.puts_debug "Directory's cache cleared."
|
264
201
|
end
|
265
202
|
end
|
266
203
|
end
|
data/lib/image_venue/file.rb
CHANGED
@@ -1,25 +1,115 @@
|
|
1
1
|
module ImageVenue
|
2
2
|
class File
|
3
3
|
class << self
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
file = self.new(image_url, ImageVenue.directory.selected)
|
9
|
-
return file
|
4
|
+
attr_accessor :debug
|
5
|
+
|
6
|
+
def debug?
|
7
|
+
(ImageVenue.debug? or self.debug) ? true : false
|
10
8
|
end
|
11
9
|
|
12
|
-
def
|
10
|
+
def puts_debug(*args)
|
11
|
+
if self.debug?
|
12
|
+
puts(*args)
|
13
|
+
return true
|
14
|
+
else
|
15
|
+
return false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_forum_codes(directory, response_body)
|
13
20
|
files = []
|
21
|
+
self.puts_debug "Parsing Forum-Codes ..."
|
14
22
|
hpricot = Hpricot(response_body)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
files.
|
23
|
+
urls = hpricot.search('p:last').last.inner_text.scan(/\[URL=(.+?)\]/i).flatten
|
24
|
+
urls.each do |url|
|
25
|
+
self.puts_debug "Found URL: `#{url}`"
|
26
|
+
files << self.new(directory, nil, nil, url, false)
|
19
27
|
end
|
20
28
|
return files
|
21
29
|
end
|
22
30
|
|
31
|
+
def list_uri
|
32
|
+
@list_uri ||= URI.parse(ImageVenue.base_url + '/process_get_dir_codes.php')
|
33
|
+
end
|
34
|
+
|
35
|
+
def list_format_key
|
36
|
+
@list_format_key ||= 'poster'
|
37
|
+
end
|
38
|
+
|
39
|
+
def list_format_forum
|
40
|
+
@list_format_forum ||= 'forum'
|
41
|
+
end
|
42
|
+
|
43
|
+
def list_format_website
|
44
|
+
@list_format_website ||= 'webpage'
|
45
|
+
end
|
46
|
+
|
47
|
+
def list_directory_key
|
48
|
+
@list_directory_key ||= 'dir'
|
49
|
+
end
|
50
|
+
|
51
|
+
def upload_uri
|
52
|
+
@upload_uri ||= URI.parse(ImageVenue.base_url + '/upload.php')
|
53
|
+
end
|
54
|
+
|
55
|
+
def upload_action_key
|
56
|
+
@upload_action_key ||= 'action'
|
57
|
+
end
|
58
|
+
|
59
|
+
def upload_user_key
|
60
|
+
@upload_user_key ||= 'user_id'
|
61
|
+
end
|
62
|
+
|
63
|
+
def upload_file_key
|
64
|
+
@upload_file_key ||= 'userfile[]'
|
65
|
+
end
|
66
|
+
|
67
|
+
def upload_directory_key
|
68
|
+
@upload_directory_key ||= 'upload_dir'
|
69
|
+
end
|
70
|
+
|
71
|
+
def upload_content_key
|
72
|
+
@upload_content_key ||= 'imgcontent'
|
73
|
+
end
|
74
|
+
|
75
|
+
def upload_content_safe
|
76
|
+
@upload_content_safe ||= 'safe'
|
77
|
+
end
|
78
|
+
alias :upload_content_family :upload_content_safe
|
79
|
+
|
80
|
+
def upload_content_notsafe
|
81
|
+
@upload_content_notsafe ||= 'notsafe'
|
82
|
+
end
|
83
|
+
alias :upload_content_adult :upload_content_notsafe
|
84
|
+
|
85
|
+
def upload_interlink_key
|
86
|
+
@upload_interlink_key ||= 'interlinkimage'
|
87
|
+
end
|
88
|
+
|
89
|
+
def upload_interlink_yes
|
90
|
+
@upload__interlink_yes ||= 'interlinkyes'
|
91
|
+
end
|
92
|
+
|
93
|
+
def upload_interlink_no
|
94
|
+
@upload__interlink_no ||= 'interlinkno'
|
95
|
+
end
|
96
|
+
|
97
|
+
def upload_resize_key
|
98
|
+
@upload_resize_key ||= 'img_resize'
|
99
|
+
end
|
100
|
+
|
101
|
+
def upload_maximum_files
|
102
|
+
@upload_maximum_files ||= 10
|
103
|
+
end
|
104
|
+
|
105
|
+
def upload_maximum_size
|
106
|
+
@upload_maximum_size ||= 3 * 1024 * 1024 # 3 MByte
|
107
|
+
end
|
108
|
+
|
109
|
+
def upload_image_types
|
110
|
+
@upload_image_types ||= ['jpeg', 'jpg']
|
111
|
+
end
|
112
|
+
|
23
113
|
def delete_uri
|
24
114
|
@delete_uri ||= URI.parse(ImageVenue.base_url + '/manage_files.php')
|
25
115
|
end
|
@@ -36,23 +126,75 @@ module ImageVenue
|
|
36
126
|
@delete_submit_value ||= 'Delete'
|
37
127
|
end
|
38
128
|
|
39
|
-
def
|
40
|
-
|
129
|
+
def upload_file_params(file)
|
130
|
+
{
|
131
|
+
self.upload_file_key => file
|
132
|
+
}
|
133
|
+
end
|
134
|
+
|
135
|
+
def upload_form_params(directory, content_safe=false, interlink=false, resize=nil)
|
136
|
+
return {
|
137
|
+
self.upload_action_key => '1',
|
138
|
+
self.upload_directory_key => directory.name,
|
139
|
+
self.upload_user_key => directory.connection.cookie[directory.connection.class.cookie_user_key],
|
140
|
+
self.upload_content_key => (content_safe) ? self.upload_content_safe : self.upload_content_notsafe,
|
141
|
+
self.upload_interlink_key => (interlink) ? self.upload_interlink_yes : self.upload_interlink_no,
|
142
|
+
self.upload_resize_key => resize || ''
|
143
|
+
}
|
144
|
+
end
|
145
|
+
|
146
|
+
def delete_params(file_name)
|
147
|
+
{
|
148
|
+
self.delete_submit_key => self.delete_submit_value,
|
149
|
+
self.delete_file_key => file_name
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
def list(directory)
|
154
|
+
self.puts_debug "Trying to fetch files from directory: '#{directory.name}' ..."
|
155
|
+
request = Net::HTTP::Post.new(self.list_uri.path)
|
156
|
+
request.form_data = self.find_params(directory.name)
|
157
|
+
request.header['cookie'] = [directory.connection.cookie_as_string]
|
158
|
+
response = Net::HTTP.start(self.list_uri.host, self.list_uri.port) do |http|
|
159
|
+
http.request(request)
|
160
|
+
end
|
161
|
+
if response.is_a?(Net::HTTPSuccess)
|
162
|
+
files = self.parse_forum_codes(directory, response.body)
|
163
|
+
self.puts_debug "Files successfully fetched!"
|
164
|
+
return files
|
165
|
+
else
|
166
|
+
self.puts_debug "Files fetch failed!"
|
167
|
+
return false
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def find_params(directory_name)
|
172
|
+
{
|
173
|
+
self.list_format_key => self.list_format_forum,
|
174
|
+
self.list_directory_key => directory_name
|
175
|
+
}
|
41
176
|
end
|
42
177
|
end
|
43
178
|
|
44
|
-
attr_accessor :
|
45
|
-
attr_accessor :image_url
|
179
|
+
attr_accessor :content_type
|
46
180
|
attr_accessor :debug
|
181
|
+
attr_accessor :directory
|
182
|
+
attr_accessor :io
|
183
|
+
attr_accessor :name
|
184
|
+
attr_accessor :url
|
47
185
|
|
48
|
-
def initialize(
|
186
|
+
def initialize(directory, name=nil, io=nil, url=nil, is_new=true)
|
187
|
+
self.content_type = 'image/jpeg'
|
49
188
|
self.directory = directory
|
50
|
-
self.
|
189
|
+
self.name = name
|
190
|
+
self.io = io
|
191
|
+
self.url = url
|
192
|
+
@is_new = is_new
|
51
193
|
return nil
|
52
194
|
end
|
53
195
|
|
54
196
|
def debug?
|
55
|
-
(
|
197
|
+
(self.class.debug? or self.debug) ? true : false
|
56
198
|
end
|
57
199
|
|
58
200
|
def puts_debug(*args)
|
@@ -64,90 +206,130 @@ module ImageVenue
|
|
64
206
|
end
|
65
207
|
end
|
66
208
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
209
|
+
def is_new?
|
210
|
+
@is_new
|
211
|
+
end
|
212
|
+
|
213
|
+
def save(reselect=false, content_safe=false, interlink=false, resize=nil)
|
214
|
+
self.directory.select(reselect)
|
215
|
+
self.puts_debug "Trying to upload file `#{self.name}` to directory `#{self.directory.name}` ..."
|
216
|
+
request = Net::HTTP::Post.new(self.class.upload_uri.path)
|
217
|
+
request.set_multipart_data(self.class.upload_file_params(self), self.class.upload_form_params(self.directory, content_safe, interlink, resize))
|
218
|
+
request.header['cookie'] = [self.directory.connection.cookie_as_string]
|
219
|
+
response = Net::HTTP.start(self.class.upload_uri.host, self.class.upload_uri.port) do |http|
|
220
|
+
http.request(request)
|
221
|
+
end
|
222
|
+
if response.is_a?(Net::HTTPSuccess)
|
223
|
+
self.url = Hpricot(response.body).search('textarea').first.inner_text.strip
|
224
|
+
self.puts_debug "File successfully uploaded!"
|
225
|
+
@is_new = false
|
226
|
+
return true
|
227
|
+
else
|
228
|
+
self.puts_debug "File upload failed!"
|
229
|
+
return false
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def destroy()
|
234
|
+
self.puts_debug "Trying to delete file `#{self.name}` from directory `#{self.directory.name}` ..."
|
235
|
+
request = Net::HTTP::Post.new(self.class.delete_uri.path)
|
236
|
+
request.form_data = self.class.delete_params(self.name)
|
237
|
+
self.directory.connection.view_directory = self.directory.name
|
238
|
+
request.header['cookie'] = [self.directory.connection.cookie_as_string]
|
239
|
+
response = Net::HTTP.start(self.class.delete_uri.host, self.class.delete_uri.port) do |http|
|
240
|
+
http.request(request)
|
241
|
+
end
|
242
|
+
self.directory.connection.view_directory = nil
|
243
|
+
if response.is_a?(Net::HTTPSuccess)
|
244
|
+
self.puts_debug "File `#{self.name}` successfully deleted!"
|
245
|
+
@is_new = true
|
246
|
+
return true
|
247
|
+
else
|
248
|
+
self.puts_debug "File `#{self.name}` delete failed!"
|
249
|
+
return false
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
def name
|
254
|
+
@name ||= $1 if self.url =~ /image=(.+)$/
|
255
|
+
@name
|
256
|
+
end
|
257
|
+
|
258
|
+
def base_name
|
259
|
+
@base_name ||= Kernel::File.basename(self.name)
|
260
|
+
end
|
261
|
+
|
262
|
+
def real_name
|
263
|
+
@real_name ||= $1+$2 if self.name =~ /^\d+_(.*)_\d+_\d+\w{2}(\.\w{2,3})$/
|
264
|
+
end
|
265
|
+
|
266
|
+
def large_io(reload=false)
|
267
|
+
if @large_io.nil? or reload
|
268
|
+
self.puts_debug "Trying to fetch large image data from `#{self.url}` ..."
|
269
|
+
self.large_url(false)
|
270
|
+
@large_io = open(@large_url)
|
271
|
+
self.puts_debug "Image data successfully fetched!"
|
75
272
|
else
|
76
|
-
|
273
|
+
@large_io.rewind
|
274
|
+
self.puts_debug "Image data from cache!"
|
77
275
|
end
|
78
|
-
return @
|
276
|
+
return @large_io
|
277
|
+
end
|
278
|
+
|
279
|
+
def large_url(reload=false)
|
280
|
+
if reload or @large_url.nil?
|
281
|
+
self.puts_debug "Trying to fetch large image URL from `#{self.url}` ..."
|
282
|
+
html = open(self.url)
|
283
|
+
img = Hpricot(html).search('img[@id="thepic"]:first').first
|
284
|
+
uri = URI.parse(self.url)
|
285
|
+
uri.path = '/' + img.attributes.find {|key, value| key =~ /^src$/i}.last
|
286
|
+
@large_url = uri.to_s
|
287
|
+
self.puts_debug "Large image URL successfully fetched!"
|
288
|
+
else
|
289
|
+
self.puts_debug "Large image URL from cache!"
|
290
|
+
end
|
291
|
+
return @large_url
|
79
292
|
end
|
80
293
|
|
81
294
|
def thumbnail_io
|
82
295
|
if @thumbnail_io.nil?
|
83
|
-
puts_debug "Trying to fetch thumbnail data ..."
|
296
|
+
self.puts_debug "Trying to fetch thumbnail data ..."
|
84
297
|
@thumbnail_io = open(self.thumbnail_url)
|
85
|
-
puts_debug "Thumbnail data successfully fetched!"
|
298
|
+
self.puts_debug "Thumbnail data successfully fetched!"
|
86
299
|
else
|
87
|
-
puts_debug "Thumbnail data from cache!"
|
300
|
+
self.puts_debug "Thumbnail data from cache!"
|
88
301
|
end
|
89
302
|
return @thumbnail_io
|
90
303
|
end
|
91
304
|
|
92
305
|
def thumbnail_url
|
93
|
-
if @thumbnail_url.nil? and self.
|
94
|
-
@thumbnail_url = self.
|
306
|
+
if @thumbnail_url.nil? and self.url =~ /_(\d+)lo/
|
307
|
+
@thumbnail_url = self.url.gsub('img.php?image=', "loc#{$1}/th_")
|
95
308
|
end
|
96
309
|
return @thumbnail_url
|
97
310
|
end
|
98
311
|
|
99
312
|
def thumbnail_for_board_upper
|
100
|
-
@thumbnail_for_board_upper ||= "[URL=#{self.
|
313
|
+
@thumbnail_for_board_upper ||= "[URL=#{self.url}][IMG]#{self.thumbnail_url}[/IMG][/URL]"
|
101
314
|
end
|
102
315
|
|
103
316
|
def thumbnail_for_board_lower
|
104
|
-
@thumbnail_for_board_lower ||= "[url=#{self.
|
317
|
+
@thumbnail_for_board_lower ||= "[url=#{self.url}][img]#{self.thumbnail_url}[/img][/url]"
|
105
318
|
end
|
106
319
|
|
107
320
|
def thumbnail_for_website
|
108
|
-
@thumbnail_for_website ||= "<a href=\"#{self.
|
109
|
-
end
|
110
|
-
|
111
|
-
def basename
|
112
|
-
@basename ||= $1 if self.image_url =~ /image=(.+)$/
|
321
|
+
@thumbnail_for_website ||= "<a href=\"#{self.url}\" target=_blank><img src=\"#{self.thumbnail_url}\" border=\"0\"></a>"
|
113
322
|
end
|
114
323
|
|
115
|
-
def
|
116
|
-
@
|
324
|
+
def clear_cache
|
325
|
+
@large_io = nil
|
326
|
+
@large_url = nil
|
117
327
|
@thumbnail_io = nil
|
118
328
|
@thumbnail_url = nil
|
119
329
|
@thumbnail_for_board_upper = nil
|
120
330
|
@thumbnail_for_board_lower = nil
|
121
331
|
@thumbnail_for_website = nil
|
122
|
-
|
123
|
-
puts_debug "File's `#{self.basename}` cache cleared!"
|
124
|
-
return true
|
125
|
-
end
|
126
|
-
|
127
|
-
def delete
|
128
|
-
puts_debug "Trying to delete file `#{self.basename}` from directory `#{self.directory}` ..."
|
129
|
-
request = Net::HTTP::Post.new(self.class.delete_uri.path)
|
130
|
-
request.form_data = self.delete_params
|
131
|
-
ImageVenue.authenticate.cookie[self.class.cookie_view_directory] = self.directory
|
132
|
-
request.header['cookie'] = [ImageVenue.authenticate.cookie_as_string]
|
133
|
-
response = Net::HTTP.start(self.class.delete_uri.host, self.class.delete_uri.port) do |http|
|
134
|
-
http.request(request)
|
135
|
-
end
|
136
|
-
ImageVenue.authenticate.cookie.delete(self.class.cookie_view_directory)
|
137
|
-
if response.is_a?(Net::HTTPSuccess)
|
138
|
-
puts_debug "File `#{self.basename}` successfully deleted!"
|
139
|
-
return true
|
140
|
-
else
|
141
|
-
puts_debug "File `#{self.basename}` delete failed!"
|
142
|
-
return false
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def delete_params
|
147
|
-
{
|
148
|
-
self.class.delete_submit_key => self.class.delete_submit_value,
|
149
|
-
self.class.delete_file_key => self.basename
|
150
|
-
}
|
332
|
+
self.puts_debug "File's cache cleared."
|
151
333
|
end
|
152
334
|
end
|
153
335
|
end
|