caseblocks_bucket_extractor 0.0.4 → 0.0.5

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.
@@ -11,55 +11,56 @@ opts = Slop.parse do
11
11
 
12
12
  on 'casetype=', 'Case Type Name'
13
13
  on 'bucket=', 'Bucket Slug'
14
- on 'username=', 'Username'
15
- on 'password=', 'Password'
14
+ on 'url=', 'url to download from (default https://login.caseblocks.com)'
15
+ on 'token=', 'Authentication token for caseblocks api'
16
+ on 'relation_type=', 'Relation name to download, ie the name of the 1 to many (default domain)'
17
+ on 'path=', 'Path to safe file in'
18
+ on 'timeout=', "minutes to wait for download to complete (default 180)"
16
19
  on 'f', 'forcequotes', 'Force quotation marks'
17
- on 'l', 'local', "Download from localhost"
18
20
  end
19
21
 
20
- if opts[:casetype] && opts[:bucket]
22
+ if opts[:casetype] && opts[:bucket] && opts[:path] && opts[:token]
21
23
 
22
24
  # Bucket Downloader
23
25
  puts " == Bucket Downloader == "
24
26
 
25
27
  bucket_name = opts[:bucket]
26
28
  case_type = opts[:casetype]
29
+ retry_limit = (opts[:timeout] || 180).to_i
30
+ relation_type = opts[:relation_type] || "domain"
31
+ url = opts[:url] || "https://login.caseblocks.com"
27
32
 
28
- puts "Downloading bucket: #{bucket_name}"
33
+ puts "Downloading bucket: #{bucket_name} from #{case_type}"
29
34
 
30
- #Create instance of CaseblocksBucketExtractor passing URL, email and password with optional download_options i.e. {:retry_limit => 5,:time_between_retries => 5}
31
35
  puts "Creating Bucket Extractor... "
32
- if opts[:local]
33
- puts "http://localhost:3001"
34
- bucket_extractor = CaseblocksBucketExtractor.new("http://localhost:3000", opts[:username], opts[:password], {:retry_limit => 12,:time_between_retries => 10})
35
- else
36
- bucket_extractor = CaseblocksBucketExtractor.new("https://login.caseblocks.com", opts[:username], opts[:password], {:retry_limit => 5,:time_between_retries => 5})
37
- end
38
-
39
- #Setup file options array. :name -> will find extracted CSV file containing value, :path -> local file path to save file to
36
+ bucket_extractor = CaseblocksBucketExtractor.new(url, opts[:token], {:retry_limit => retry_limit,:time_between_retries => 60})
40
37
 
41
- file_path = File.expand_path("..", __FILE__) + "/"+ DateTime.now.strftime("%y-%m-%d-%M-%H") + "_" + bucket_name + ".csv"
38
+ file_path = opts[:path] + "/"+ DateTime.now.strftime("%y-%m-%d-%M-%H") + "_" + bucket_name + ".csv"
42
39
 
43
- file_options = [{:path => file_path, :name => "domain.csv"}]
40
+ file_options = [{:path => file_path, :name => "#{relation_type}.csv"}]
44
41
 
45
42
  puts "Downloading to #{file_path}"
46
43
 
47
44
  #Begin download specifying Case Type Name, bucket slug and the file options defined above
48
- bucket_extractor.download(case_type, bucket_name, file_options)
45
+ begin
46
+ bucket_extractor.download(case_type, bucket_name, file_options)
49
47
 
50
- if opts[:forcequotes]
51
- puts "Forcing fields to have quotes"
48
+ if opts[:forcequotes]
49
+ puts "Forcing fields to have quotes"
52
50
 
53
- CSV.open("#{file_path[0..-5]}.tmp", "w+", :force_quotes => true) do |tmp_csv|
54
- puts "file_path: #{file_path}"
55
- CSV.open(file_path, "r").each do |row|
56
- tmp_csv << row
51
+ CSV.open("#{file_path[0..-5]}.tmp", "w+", :force_quotes => true) do |tmp_csv|
52
+ puts "file_path: #{file_path}"
53
+ CSV.open(file_path, "r").each do |row|
54
+ tmp_csv << row
55
+ end
57
56
  end
57
+ FileUtils.mv("#{file_path[0..-5]}.tmp", file_path)
58
58
  end
59
- FileUtils.mv("#{file_path[0..-5]}.tmp", file_path)
59
+
60
+ puts "End Bucket Downloader"
61
+ rescue => e
62
+ puts "Download has not completed successully: #{e.message}"
60
63
  end
61
-
62
- puts "End Bucket Downloader"
63
64
  else
64
65
  puts opts
65
66
  end
@@ -12,18 +12,12 @@ class CaseblocksBucketExtractor
12
12
  headers "Accept" => "application/json"
13
13
  headers "Content-Type" => "application/json"
14
14
 
15
- def initialize(url, email, password, download_options={:retry_limit => 60,:time_between_retries => 60})
15
+ def initialize(url, auth_token, download_options={:retry_limit => 60,:time_between_retries => 60})
16
16
  self.class.base_uri url
17
17
 
18
- result = self.class.post("/tokens", :body => {email: email, password: password}.to_json)
19
-
20
- if result["message"]
21
- puts "unable to generate token"
22
- raise
23
- else
24
- @auth_token = result["token"] if result
25
- self.class.default_params("auth_token" => @auth_token)
26
- end
18
+ puts url
19
+ @auth_token = auth_token
20
+ self.class.default_params("auth_token" => @auth_token)
27
21
 
28
22
  @retry_limit = download_options[:retry_limit]
29
23
  @time_between_retries = download_options[:time_between_retries]
@@ -32,14 +26,15 @@ class CaseblocksBucketExtractor
32
26
  def download(case_type_name, bucket_slug, file_options)
33
27
  response = self.class.get("/case_blocks/#{URI::encode(case_type_name)}/buckets/#{bucket_slug}/schedule_download_job")
34
28
  job_url = get_job_url(response.body)
35
- return if job_url.nil?
29
+
30
+ raise response.headers["status"] unless response.headers["status"].start_with?("200")
36
31
 
37
32
  result = start_polling(job_url)
38
33
 
39
34
  if !result.nil? && result["job"]["status"] == "complete"
40
35
  create_files(file_options,result)
41
36
  else
42
- puts "!!!!! Job - #{job_url} did not complete. !!!!!!"
37
+ raise "!!!!! Job - #{job_url} did not complete. !!!!!!"
43
38
  end
44
39
  end
45
40
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caseblocks_bucket_extractor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: