Module: Rmega::Nodes::Factory
Instance Method Summary collapse
- #build(session, data) ⇒ Object
-
#build_from_url(session, url) ⇒ Object
TODO: support other node types than File.
- #mega_url?(url) ⇒ Boolean
- #type(number) ⇒ Object
- #types ⇒ Object
Instance Method Details
#build(session, data) ⇒ Object
13 14 15 16 17 |
# File 'lib/rmega/nodes/factory.rb', line 13 def build(session, data) type_name = type(data['t']) node_class = Nodes.const_get("#{type_name.to_s.capitalize}") node_class.new(session, data) end |
#build_from_url(session, url) ⇒ Object
TODO: support other node types than File
20 21 22 23 24 25 |
# File 'lib/rmega/nodes/factory.rb', line 20 def build_from_url(session, url) public_handle, key = url.strip.split('!')[1, 2] data = session.request(a: 'g', g: 1, p: public_handle) Nodes::File.new(session, data).tap { |n| n.public_url = url } end |
#mega_url?(url) ⇒ Boolean
27 28 29 |
# File 'lib/rmega/nodes/factory.rb', line 27 def mega_url?(url) !!(url.to_s =~ /^https:\/\/mega\.co\.nz\/#!.*$/i) end |
#type(number) ⇒ Object
31 32 33 34 |
# File 'lib/rmega/nodes/factory.rb', line 31 def type(number) founded_type = types.find { |k, v| number == v } founded_type.first if founded_type end |
#types ⇒ Object
36 37 38 |
# File 'lib/rmega/nodes/factory.rb', line 36 def types {file: 0, folder: 1, root: 2, inbox: 3, trash: 4} end |