Class: Lingohub::Models::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/lingohub/models/project.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, link) ⇒ Project

Returns a new instance of Project.



23
24
25
26
# File 'lib/lingohub/models/project.rb', line 23

def initialize(client, link)
  @client = client
  @link = link
end

Class Method Details

.lazy_attr_accessor(*params) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/lingohub/models/project.rb', line 6

def self.lazy_attr_accessor(*params)
  params.each do |sym|
    define_method(sym) do
      unless defined? @fetched
        fetch
      end
      self.instance_variable_get("@#{sym}")
    end
    define_method("#{sym}=") do |value|
      self.instance_variable_set("@#{sym}", value)
    end
  end
end

Instance Method Details

#download_resource(directory, filename, locale_as_filter = nil) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/lingohub/models/project.rb', line 41

def download_resource(directory, filename, locale_as_filter = nil)
  raise "Project does not contain that file." unless self.resources.has_key?(filename)
  resource = self.resources[filename]

  if locale_as_filter.nil? || resource_has_locale(resource, locale_as_filter)
    save_to_file(File.join(directory, filename), resource.content)
    true
  else
    false
  end
end

#pull_search_results(directory, filename, query, locale = nil) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/lingohub/models/project.rb', line 61

def pull_search_results(directory, filename, query, locale = nil)
  parameters = { :filename => filename, :query => query }
  parameters.merge!({ :iso2_slug => locale }) unless locale.nil? or locale.strip.empty?

  content = @client.get(search_url, parameters)
  save_to_file(File.join(directory, filename), content)
end

#resourcesObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/lingohub/models/project.rb', line 28

def resources
  unless defined? @resources
    @resources = { }
    response = @client.get(self.resources_url)
    resource_hash = JSON.parse(response)
    members = resource_hash["members"]
    members.each do |member|
      @resources[member["name"]] = Lingohub::Models::Resource.new(@client, member["project_locale"], member["links"][0]["href"])
    end
  end
  @resources
end

#upload_resource(path, locale, strategy_parameters = {}) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/lingohub/models/project.rb', line 53

def upload_resource(path, locale, strategy_parameters = {})
  raise "Path #{path} does not exists" unless File.exists?(path)
  request = { :file => File.new(path, "rb") }
  request.merge!({ :iso2_slug => locale }) if locale
  request.merge!(strategy_parameters)
  @client.post(self.resources_url, request)
end