blobs 0.2.5 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d12169aaa7aaf23ec941b9014ac639457b33e307
4
- data.tar.gz: 4608a496c30c7d94771828030ecc066279fb1b8d
3
+ metadata.gz: a9f2cd95af697c75032b66c4b5f60e7103ada354
4
+ data.tar.gz: 6e21d7194171750e2c059c654ece609d7dcc32ed
5
5
  SHA512:
6
- metadata.gz: c2afbdac3858b631be282f5cef4372e7c00c06e1782fbc4cf00eb699552db4b44e5e11a4fceeeb2e22ed21bb50e076df55e71c0eb8ceb31d5019c594d007d6cd
7
- data.tar.gz: 0cb9a8525e0b5217c90dd1c0bebc9f8cd65b1b670ffe2e0c6af13315857eb37956a320324d403c784d29175f9aad535ad9a496cea032d0ebd68db36d68268a31
6
+ metadata.gz: ccbdbf0cc19719fb53305bcbc9019313e44066c07632373e72e85271be4250cd53f2451082372e43726749092c1ac9b01f61db746cf969080a30d5a19042c1fc
7
+ data.tar.gz: 1d0be765842755f575ec0619162adeab18c827d57c402f9e854f68ba8691030c657bab2f520e033bacb9be2e0ef16efbe5aedadfda4d16c1f81d63dc84071ae1
data/blobs.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "bundler", "~> 1.14"
24
+ spec.add_dependency "bundler", "~> 1.15"
25
25
  spec.add_dependency "rake", "~> 10.0"
26
26
  spec.add_dependency "httparty", "~> 0.13.7"
27
27
  end
data/lib/blobs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Blobs
2
- VERSION = "0.2.5"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/blobs.rb CHANGED
@@ -7,9 +7,6 @@ require 'cgi'
7
7
  require 'yaml'
8
8
  require 'securerandom'
9
9
 
10
- # ENV['BLOB_STORE_API_BASE_URL'] = 'http://45.76.84.129'
11
- # ENV['MASTER_KEY'] = '6CU3xfUOtvvVBRPPOe5ShlCOAZ0Ht5k9'
12
-
13
10
  module Blobs
14
11
  DEBUG = false
15
12
 
@@ -31,17 +28,28 @@ module Blobs
31
28
 
32
29
  def login(email, password)
33
30
  auth = { username: email, password: password }
34
- response = HTTParty.post("#{base_url}/auth?access_token=#{master_token}",
31
+ response = HTTParty.post("#{base_url}/auth",
35
32
  basic_auth: auth)
36
33
  if response.code == 201 and response.parsed_response
37
34
  log "#{response.parsed_response.inspect}"
38
35
  self.current_user = response.parsed_response['user']
39
36
  self.token = response.parsed_response['token']
40
37
  encryption_key
41
- self.token
42
- else
43
- nil
38
+ return self.token
39
+ end
40
+ nil
41
+ end
42
+
43
+ def create_user(email, password)
44
+ raise "You need to set the master key to create users!" unless master_token
45
+ user = { email: email, password: password }
46
+ response = HTTParty.post("#{base_url}/users?access_token=#{master_token}",
47
+ body: user)
48
+ log "#{response.parsed_response.inspect}"
49
+ if response.code == 201 and response.parsed_response and response.parsed_response['email']
50
+ return response.parsed_response
44
51
  end
52
+ nil
45
53
  end
46
54
 
47
55
  def all(key = nil)
@@ -55,7 +63,8 @@ module Blobs
55
63
  id: blob['id'],
56
64
  created_at: blob['createdAt'],
57
65
  json: (blob['json'] ? (JSON.parse(decrypt(blob['json'])) rescue nil) : nil),
58
- key: blob['key']
66
+ key: blob['key'],
67
+ file: blob['file'] ? blob['file'] : false
59
68
  }
60
69
  end
61
70
  end
@@ -68,12 +77,12 @@ module Blobs
68
77
  response.parsed_response ? JSON.parse(decrypt(response.parsed_response['json'])) : nil
69
78
  end
70
79
 
71
- def create(json, key = 'default')
80
+ def create(json, key = 'default', is_file = false)
72
81
  raise 'No access token!' unless self.token
73
82
  raise "No json hash!" unless json
74
83
  raise "No key!" unless key
75
84
  response = HTTParty.post("#{base_url}/blobs?access_token=#{self.token}",
76
- { body: { json: encrypt(json.to_json), key: sha256(key) } })
85
+ { body: { json: encrypt(json.to_json), key: sha256(key), isFile: is_file } })
77
86
  log "Blob created: #{response.parsed_response.inspect}"
78
87
  response.parsed_response
79
88
  end
@@ -106,6 +115,44 @@ module Blobs
106
115
  export_file
107
116
  end
108
117
 
118
+ def file_to_json(file_path)
119
+ encoded_string = Base64.encode64(File.open(file_path, 'rb').read)
120
+ { file: encoded_string, file_name: file_path.split('/').last,
121
+ file_size: File.size(file_path) }
122
+ end
123
+
124
+ def file_from_json(file_json, path = '/tmp', blob_id = nil)
125
+ if file_json and file_json['file'] and file_json['file_name']
126
+ decoded_string = Base64.decode64(file_json['file'])
127
+ blob_file_path = "#{path}/#{blob_id ? "#{blob_id}-" : ''}#{file_json['file_name']}"
128
+ File.open(blob_file_path, 'wb') do |f|
129
+ f.write(decoded_string)
130
+ f.close
131
+ end
132
+ blob_file_path
133
+ end
134
+ end
135
+
136
+ def add_file(file_path, key = 'default')
137
+ raise 'No file path given!' unless file_path
138
+ raise "File doesn't exist!" unless File.file?(file_path)
139
+ resp = create(file_to_json(file_path), key, true)
140
+ resp ? resp['id'] : nil
141
+ end
142
+
143
+ def update_file(blob_id, file_path, key = 'default')
144
+ raise 'No file path given!' unless file_path
145
+ raise "File doesn't exist!" unless File.file?(file_path)
146
+ update(blob_id, file_to_json(file_path), key)
147
+ end
148
+
149
+ def get_file(blob_id, path = '/tmp')
150
+ if (blob = find(blob_id))
151
+ return file_from_json(blob, path, blob_id) if blob['file'] and blob['file_name']
152
+ end
153
+ nil
154
+ end
155
+
109
156
  private
110
157
  def sha256(str)
111
158
  Base64.encode64(Digest::SHA256.digest(str)).strip
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Kiessler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '1.15'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '1.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement