Module: Rmega::Nodes::Factory

Extended by:
Factory
Included in:
Factory
Defined in:
lib/rmega/nodes/factory.rb

Instance Method Summary collapse

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

Returns:

  • (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

#typesObject



36
37
38
# File 'lib/rmega/nodes/factory.rb', line 36

def types
  {file: 0, folder: 1, root: 2, inbox: 3, trash: 4}
end