tigre-client 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,6 @@ pkg/*
3
3
  .bundle
4
4
 
5
5
  test.rb
6
+ fake.xml
7
+ fake.cab
6
8
  *.log
data/Gemfile.lock CHANGED
@@ -1,18 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tigre-client (0.3.1)
4
+ tigre-client (0.3.6)
5
5
  faraday (~> 0.6.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- addressable (2.2.4)
10
+ addressable (2.2.5)
11
11
  diff-lcs (1.1.2)
12
- faraday (0.6.0)
12
+ faraday (0.6.1)
13
13
  addressable (~> 2.2.4)
14
14
  multipart-post (~> 1.1.0)
15
15
  rack (< 2, >= 1.1.0)
16
+ json (1.5.1)
16
17
  multipart-post (1.1.0)
17
18
  rack (1.2.2)
18
19
  rspec (2.5.0)
@@ -28,5 +29,6 @@ PLATFORMS
28
29
  ruby
29
30
 
30
31
  DEPENDENCIES
32
+ json
31
33
  rspec
32
34
  tigre-client!
data/lib/tigre-client.rb CHANGED
@@ -6,6 +6,7 @@ require 'tigre-client/common_params'
6
6
  require 'tigre-client/occurrence'
7
7
  require 'tigre-client/sample'
8
8
  require 'tigre-client/url'
9
+ require 'tigre-client/analysis'
9
10
 
10
11
  module Tigre
11
12
 
@@ -22,18 +23,8 @@ module Tigre
22
23
  builder.adapter :net_http
23
24
  end
24
25
  end
25
-
26
- # TODO: do we need two build_post_put ? can we just put
27
- # the multipart in the post_put?
28
- def build_post_put_connection
29
- @conn = Faraday.new(:url => "#{Tigre.server}") do |builder|
30
- # builder.request :multipart
31
- builder.request :url_encoded
32
- builder.adapter :net_http
33
- end
34
- end
35
-
36
- def build_file_post_put_connection
26
+
27
+ def build_post_connection
37
28
  @conn = Faraday.new(:url => "#{Tigre.server}") do |builder|
38
29
  builder.use Faraday::Request::MultipartWithFile
39
30
  builder.use Faraday::Request::Multipart
@@ -49,31 +40,34 @@ module Tigre
49
40
  end
50
41
 
51
42
  def post_connection(uri_string, data)
52
- build_post_put_connection
43
+ build_post_connection
53
44
  response = Tigre.conn.post do |req|
54
45
  req.url Tigre.endpoint + uri_string
55
46
  req.headers['API-TOKEN'] = Tigre.token
56
- req.body = data
47
+ req.body = data
57
48
  end
58
49
  [response.status, response.body]
59
50
  end
60
51
 
61
- def post_file_connection(uri_string, data)
62
- build_file_post_put_connection
63
- response = Tigre.conn.post do |req|
64
- req.url Tigre.endpoint + uri_string
65
- req.headers['API-TOKEN'] = Tigre.token
66
- req.body = data
67
- end
68
- [response.status, response.body]
69
- end
52
+ # TODO do we need a post_connection and a post_file_connection?
53
+ # def post_file_connection(uri_string, data)
54
+ # build_post_connection
55
+ #
56
+ # response = Tigre.conn.post do |req|
57
+ # req.url Tigre.endpoint + uri_string
58
+ # req.headers['API-TOKEN'] = Tigre.token
59
+ # req.body = data
60
+ # end
61
+ # [response.status, response.body]
62
+ # end
70
63
 
71
64
  def put_connection(uri_string, data)
72
- build_post_put_connection
65
+ build_post_connection
66
+
73
67
  response = Tigre.conn.put do |req|
74
68
  req.url Tigre.endpoint + uri_string
75
69
  req.headers['API-TOKEN'] = Tigre.token
76
- req.body = data
70
+ req.body = data
77
71
  end
78
72
  [response.status, response.body]
79
73
  end
@@ -0,0 +1,40 @@
1
+ module Tigre
2
+ class Analysis
3
+
4
+ # required
5
+ # analysis_id => String
6
+ # params_hash => Hash
7
+ # :dbts => Hash {:key1 => value, :key2 => value} where the key is what the name of the
8
+ # attribute is and the value should be a boolean
9
+ # :mutex_name_list => String (comma seperated) => I.E 'foo,bar,baz'
10
+ # :mutex_name_list => Array => ['foo', 'bar', 'baz']
11
+ def self.update(analysis_id, params_hash)
12
+ if analysis_id == '' || params_hash.empty?
13
+ raise "Missing analysis_id parameter or params_hash is empty"
14
+ end
15
+
16
+ update_data = {}
17
+ if params_hash[:mutex_name_list]
18
+ params_hash[:mutex_name_list] = package_array_list(params_hash[:mutex_name_list])
19
+ end
20
+ update_data["metadatas"] = params_hash
21
+
22
+ Tigre.put_connection("/analysis/#{analysis_id}", update_data)
23
+ end
24
+
25
+ # required
26
+ # analysis_id => String
27
+ # file_location => String path to the file
28
+ # file_type => String, the type of the file
29
+ def self.add_file(analysis_id, file_location, file_type)
30
+ if analysis_id == '' || file_location.empty? || file_type.empty?
31
+ raise "Missing analysis_id, file_location, or file_type parameter"
32
+ end
33
+
34
+ update_data = {:file => File.new(file_location), :file_type => file_type}
35
+
36
+ Tigre.put_connection("/analysis/#{analysis_id}/upload", update_data)
37
+ end
38
+
39
+ end
40
+ end
@@ -29,5 +29,10 @@ module Tigre
29
29
  end
30
30
  end
31
31
 
32
+ def get_logic_param(logic=nil)
33
+ return 'any' unless logic
34
+ logic.to_s
35
+ end
36
+
32
37
  end
33
38
  end
@@ -19,7 +19,7 @@ module Tigre
19
19
  options[:tags] = package_array_list(options[:tags]) if options[:tags]
20
20
 
21
21
  post_data = {:file => File.new(file_location), :md5 => md5}
22
- Tigre.post_file_connection('/samples', post_data.merge(options))
22
+ Tigre.post_connection('/samples', post_data.merge(options))
23
23
  end
24
24
 
25
25
  # optional params
@@ -260,7 +260,61 @@ module Tigre
260
260
  hash[:digest] = hash[:digest] || 'md5'
261
261
  hash[:samples] = package_array_list(hash[:samples])
262
262
  hash[:type] = 'compressor'
263
- Tigre.post_file_connection('/samples_for_compression', hash)
263
+ Tigre.post_connection('/samples_for_compression', hash)
264
+ end
265
+
266
+ # required
267
+ # digest_hash => Hash
268
+ # :digest => String, The digest type
269
+ # :value => String, The digest value
270
+ # optional params
271
+ # params_hash => Hash
272
+ # :dbts => Hash {:key1 => value, :key2 => value} where the key is what the name of the
273
+ # attribute is and the value should be a boolean
274
+ # :mutex_name_list => String (comma seperated) => I.E 'foo,bar,baz'
275
+ # :mutex_name_list => Array => ['foo', 'bar', 'baz']
276
+ def self.add_analysis(digest_hash, params_hash={})
277
+ unless digest_hash[:digest] && digest_hash[:value]
278
+ raise 'Missing parameter :digest or :value'
279
+ end
280
+
281
+ if params_hash
282
+ update_data = {}
283
+ if params_hash[:mutex_name_list]
284
+ params_hash[:mutex_name_list] = package_array_list(params_hash[:mutex_name_list])
285
+ end
286
+
287
+ update_data["metadatas"] = params_hash
288
+ end
289
+
290
+ Tigre.put_connection("/samples/#{digest_hash[:digest]}/value/#{digest_hash[:value]}/analysis", update_data)
291
+ end
292
+
293
+ # optional params
294
+ # options => Hash
295
+ # :after => Ruby DateTime object OR Integer (epoch time)
296
+ # :before => Ruby DateTime object OR Integer (epoch time)
297
+ def self.count(options={})
298
+ common_params(options)
299
+ Tigre.get_connection("/samples/count?after=#{@after}&before=#{@before}")
300
+ end
301
+
302
+ # required params
303
+ # tags => String => I.E 'foo'
304
+ # tags => String (comma seperated) => I.E 'foo,bar,baz'
305
+ # tags => Array => ['foo', 'bar', 'baz']
306
+ # optional params
307
+ # options => Hash
308
+ # :after => Ruby DateTime object OR Integer (epoch time)
309
+ # :before => Ruby DateTime object OR Integer (epoch time)
310
+ def self.tagged_count(tags, options={})
311
+ if tags == ''
312
+ raise "Missing tags parameter"
313
+ end
314
+
315
+ tags = package_array_list(tags)
316
+ common_params(options)
317
+ Tigre.get_connection("/samples/tagged_with?tags=#{tags}&after=#{@after}&before=#{@before}")
264
318
  end
265
319
 
266
320
  end
@@ -0,0 +1,5 @@
1
+ module Tigre
2
+ class Scan
3
+
4
+ end
5
+ end
@@ -125,15 +125,6 @@ module Tigre
125
125
  raise ArguementError, "Missing domain parameter"
126
126
  end
127
127
 
128
- # if options[:after] && options[:after].is_a?(Time)
129
- # options[:after] = options[:after].to_i
130
- # end
131
- # if options[:before] && options[:before].is_a?(Time)
132
- # options[:before] = options[:before].to_i
133
- # end
134
- #
135
- # options[:page] ||= 0
136
- # options[:per] ||= 50
137
128
  common_params(options)
138
129
  Tigre.get_connection("/urls/domains?domain=#{domain}&after=#{@after}&before=#{@before}&page=#{@page}&per=#{@per}")
139
130
  end
@@ -155,7 +146,8 @@ module Tigre
155
146
 
156
147
  tags = package_array_list(tags)
157
148
  common_params(options)
158
- Tigre.get_connection("/urls/tagged_with?tags=#{tags}&after=#{@after}&before=#{@before}&page=#{@page}&per=#{@per}")
149
+ logic = get_logic_param(options[:logic])
150
+ Tigre.get_connection("/urls/tagged_with?tags=#{tags}&logic=#{logic}&after=#{@after}&before=#{@before}&page=#{@page}&per=#{@per}")
159
151
  end
160
152
 
161
153
  # required params
@@ -170,7 +162,7 @@ module Tigre
170
162
  end
171
163
 
172
164
  update_data = {"tag_list" => package_array_list(hash[:tag_list])}
173
- Tigre.put_connection("/urls/#{hash[:digest]}/value/#{hash[:value]}/remove_tags", update_data)
165
+ Tigre.put_connection("/urls/#{hash[:digest]}/value/#{hash[:value]}/remove_tags", update_data)
174
166
  end
175
167
 
176
168
  # required params
@@ -204,6 +196,60 @@ module Tigre
204
196
  Tigre.get_connection("/urls/not_tagged?after=#{@after}&before=#{@before}&page=#{@page}&per=#{@per}")
205
197
  end
206
198
 
199
+ # required
200
+ # digest_hash => Hash
201
+ # :digest => String, The digest type
202
+ # :value => String, The digest value
203
+ # optional params
204
+ # params_hash => Hash
205
+ # :dbts => Hash {:key1 => value, :key2 => value} where the key is what the name of the
206
+ # attribute is and the value should be a boolean
207
+ # :mutex_name_list => String (comma seperated) => I.E 'foo,bar,baz'
208
+ # :mutex_name_list => Array => ['foo', 'bar', 'baz']
209
+ def self.add_analysis(digest_hash, params_hash={})
210
+ unless digest_hash[:digest] && digest_hash[:value]
211
+ raise 'Missing parameter :digest or :value'
212
+ end
213
+
214
+ if params_hash
215
+ update_data = {}
216
+ if params_hash[:mutex_name_list]
217
+ params_hash[:mutex_name_list] = package_array_list(params_hash[:mutex_name_list])
218
+ end
219
+
220
+ update_data["metadatas"] = params_hash
221
+ end
222
+
223
+ Tigre.put_connection("/urls/#{digest_hash[:digest]}/value/#{digest_hash[:value]}/analysis", update_data)
224
+ end
225
+
226
+ # optional params
227
+ # options => Hash
228
+ # :after => Ruby DateTime object OR Integer (epoch time)
229
+ # :before => Ruby DateTime object OR Integer (epoch time)
230
+ def self.count(options={})
231
+ common_params(options)
232
+ Tigre.get_connection("/urls/count?after=#{@after}&before=#{@before}")
233
+ end
234
+
235
+ # required params
236
+ # tags => String => I.E 'foo'
237
+ # tags => String (comma seperated) => I.E 'foo,bar,baz'
238
+ # tags => Array => ['foo', 'bar', 'baz']
239
+ # optional params
240
+ # options => Hash
241
+ # :after => Ruby DateTime object OR Integer (epoch time)
242
+ # :before => Ruby DateTime object OR Integer (epoch time)
243
+ def self.tagged_count(tags, options={})
244
+ if tags == ''
245
+ raise "Missing tags parameter"
246
+ end
247
+
248
+ tags = package_array_list(tags)
249
+ common_params(options)
250
+ Tigre.get_connection("/urls/tagged_with?tags=#{tags}&after=#{@after}&before=#{@before}")
251
+ end
252
+
207
253
  end
208
254
 
209
255
  end
@@ -1,5 +1,5 @@
1
1
  module Tigre
2
2
  module Client
3
- VERSION = "0.3.6"
3
+ VERSION = "0.3.7"
4
4
  end
5
5
  end
data/tigre-client.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.required_ruby_version = '>= 1.9.2'
23
23
 
24
24
  s.add_development_dependency "rspec"
25
+ s.add_development_dependency "json"
25
26
 
26
27
  s.add_dependency('faraday', '~> 0.6.0')
27
28
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: tigre-client
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.6
5
+ version: 0.3.7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Marcio Castilho
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-05-02 00:00:00 -04:00
14
+ date: 2011-05-04 00:00:00 -04:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -26,16 +26,27 @@ dependencies:
26
26
  type: :development
27
27
  version_requirements: *id001
28
28
  - !ruby/object:Gem::Dependency
29
- name: faraday
29
+ name: json
30
30
  prerelease: false
31
31
  requirement: &id002 !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
37
+ type: :development
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
40
+ name: faraday
41
+ prerelease: false
42
+ requirement: &id003 !ruby/object:Gem::Requirement
32
43
  none: false
33
44
  requirements:
34
45
  - - ~>
35
46
  - !ruby/object:Gem::Version
36
47
  version: 0.6.0
37
48
  type: :runtime
38
- version_requirements: *id002
49
+ version_requirements: *id003
39
50
  description: Tigre Client API Library
40
51
  email:
41
52
  - marcioc@sunbelt-software.com
@@ -53,10 +64,12 @@ files:
53
64
  - Gemfile.lock
54
65
  - Rakefile
55
66
  - lib/tigre-client.rb
67
+ - lib/tigre-client/analysis.rb
56
68
  - lib/tigre-client/common_params.rb
57
69
  - lib/tigre-client/multipart_with_file.rb
58
70
  - lib/tigre-client/occurrence.rb
59
71
  - lib/tigre-client/sample.rb
72
+ - lib/tigre-client/scan.rb
60
73
  - lib/tigre-client/url.rb
61
74
  - lib/tigre-client/version.rb
62
75
  - tigre-client.gemspec