curl 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of curl might be problematic. Click here for more details.

Files changed (2) hide show
  1. data/lib/curl.rb +24 -12
  2. metadata +3 -3
@@ -33,14 +33,18 @@ class CURL
33
33
 
34
34
  def initialize(keys={})
35
35
  @cache = ( keys[:cache] ? keys[:cache] : false )
36
+ @cache_time = ( keys[:cache_time] ? keys[:cache_time] : 3600*24*1 ) # 1 day cache life
37
+ @connect_timeout = keys[:connect_timeout] || 6
38
+ @max_time = keys[:max_time] || 8
39
+ @retry = keys[:retry] || 1
36
40
  @cookies_enable = ( keys[:cookies_disable] ? false : true )
37
41
  @user_agent = AGENT_ALIASES["Google"]#AGENT_ALIASES[AGENT_ALIASES.keys[rand(6)]]
38
42
  FileUtils.makedirs("/tmp/curl/")
39
43
  @cookies_file = keys[:cookies] || "/tmp/curl/curl_#{rand}_#{rand}.jar"
40
- # @cookies_file = "/home/ruslan/curl.jar"
41
- #--header "Accept-Encoding: deflate"
42
- @setup_params = ' --header "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header "Accept-Language: en-us,en;q=0.5" --header "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" '
43
- @setup_params = ' --connect-timeout 6 --max-time 8 --retry 1 --location --compressed --silent -k '
44
+ # @cookies_file = "/home/ruslan/curl.jar"
45
+ #--header "Accept-Encoding: deflate"
46
+ # @setup_params = ' --header "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header "Accept-Language: en-us,en;q=0.5" --header "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" '
47
+ @setup_params = ' --connect-timeout #{@connect_timeout} --max-time #{@max_time} --retry #{@retry} --location --compressed --silent -k '
44
48
  # @setup_params = ' --location --silent '
45
49
  yield self if block_given?
46
50
  end
@@ -92,12 +96,16 @@ class CURL
92
96
  cache_path(url)+"/#{Digest::MD5.hexdigest(url)}.html"
93
97
  end
94
98
 
95
- def get(url, count=3, ref=nil, keys={})
99
+ def get(url, keys={})
100
+ ref = keys[:ref] ||= nil
101
+ count = keys[:count] ||= 3
102
+ encoding = keys[:encoding] ||= "utf-8"
103
+
96
104
  if @cache
97
105
  filename = cache_file(url)
98
- unless File.exists?(filename)
106
+ unless File.exists?(filename) && (File.exists?(filename) && File.ctime(filename) > Time.now-@cache_time)
99
107
  FileUtils.mkdir_p(cache_path(url))
100
- result = get_raw(url,count,ref) #+" --output \"#{filename}\" ")
108
+ result = get_raw(url, {:count=>count, :ref=>ref, :encoding=>encoding} ) #+" --output \"#{filename}\" ")
101
109
  puts "cache to file '#{filename}'" if @debug
102
110
  File.open(filename,"w"){|f| f.puts result}
103
111
  return result
@@ -106,13 +114,17 @@ class CURL
106
114
  return open(filename).read
107
115
  end
108
116
  else
109
- return get_raw(url,count,ref)
117
+ return get_raw(url, {:count=>count , :ref=>ref, :encoding=>encoding})
110
118
  end
111
119
 
112
120
  end
113
121
 
114
- def get_raw(url,count=3,ref=nil)
115
- cmd = "curl #{cookies_store} #{browser_type} #{@setup_params} #{ref} \"#{url}\" "
122
+ def get_raw(url, keys={})
123
+ ref = keys[:ref] ||= nil
124
+ count = keys[:count] ||= 3
125
+ encoding = keys[:encoding] ||= "utf-8"
126
+
127
+ cmd = "curl #{cookies_store} #{browser_type} #{@setup_params} #{ref} \"#{url}\" "
116
128
  if @debug
117
129
  puts cmd.red
118
130
  end
@@ -122,8 +134,8 @@ class CURL
122
134
  count -= 1
123
135
  result = self.get(url,count) if count > 0
124
136
  end
125
- result.clean
126
-
137
+ result.force_encoding(encoding)
138
+ ( encoding=="utf-8" ? result.clean : Iconv.new("UTF-8", "WINDOWS-1251").iconv(result) )
127
139
  end
128
140
 
129
141
  # формат данных для поста
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 6
9
- version: 0.0.6
8
+ - 7
9
+ version: 0.0.7
10
10
  platform: ruby
11
11
  authors:
12
12
  - tg0
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-30 00:00:00 +03:00
17
+ date: 2010-12-07 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency