32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/rmega/nodes/factory.rb', line 32
def build_from_url(url, session = Session.new)
public_handle, key = url.strip.split('!')[1, 2]
raise "Invalid url or missing file key" unless key
node = if url =~ FOLDER_URL_REGEXP
nodes_data = session.request({a: 'f', c: 1, r: 1}, {n: public_handle})
session.master_key = Utils.base64urldecode(key)
session.storage.nodes = nodes_data['f'].map do |data|
data["__n"] = public_handle
Nodes::Factory.build(session, data)
end
session.storage.nodes[0]
else
data = session.request(a: 'g', g: 1, p: public_handle)
Nodes::File.new(session, data)
end
node.instance_variable_set('@public_handle', public_handle)
node.instance_variable_set('@public_url', url)
return node
end
|