Module: Veye::API::Project

Defined in:
lib/veye/api/project.rb

Constant Summary collapse

RESOURCE_PATH =
"/projects"
MAX_FILE_SIZE =

~ 500kB

500000

Class Method Summary collapse

Class Method Details

.check_file(filename) ⇒ Object

TODO: add throws



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/veye/api/project.rb', line 8

def self.check_file(filename)
  file_path = File.absolute_path(filename)

  unless File.exist?(file_path)
    printf("%s: Cant read file `%s`",
           "Error".color(:red),
           "#{filename}".color(:yellow))
    return nil
  end

  file_size = File.size(file_path)
  unless file_size != 0 and file_size < MAX_FILE_SIZE
    p "Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb"
    return nil
  end

  file_path
end

.delete_project(api_key, project_key) ⇒ Object



90
91
92
93
94
95
96
97
# File 'lib/veye/api/project.rb', line 90

def self.delete_project(api_key, project_key)
  project_api = Resource.new("#{RESOURCE_PATH}/#{project_key}")
  qparams = {:params => {:api_key => api_key}}

  project_api.resource.delete(qparams) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.get_licenses(api_key, project_key) ⇒ Object

TODO: add throw exceptions



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/veye/api/project.rb', line 100

def self.get_licenses(api_key, project_key)
  if project_key.nil? or project_key.empty?
    printf("%s: %s",
           "Error".color(:red),
           "Not valid project_key: `#{project_key}`")
    return
  end
  project_api = Resource.new("#{RESOURCE_PATH}/#{project_key}/licenses")
  qparams = {:params => {:api_key => api_key}}
  project_api.resource.get(qparams) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.get_list(api_key, org_name, team_name = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/veye/api/project.rb', line 27

def self.get_list(api_key, org_name, team_name = nil)
  project_api = Resource.new(RESOURCE_PATH)
  qparams = {:api_key => api_key}
  qparams[:orga_name] = org_name.to_s.strip unless org_name.to_s.empty?
  qparams[:team_name] = team_name.to_s.strip unless team_name.to_s.empty?

  project_api.resource.get({:params => qparams}) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.get_project(api_key, project_key) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/veye/api/project.rb', line 75

def self.get_project(api_key, project_key)
  if project_key.nil? or project_key.empty?
    printf("%s: %s",
           "Error".color(:red),
           "Not valid project_key: `#{project_key}`")
    return
  end

  project_api = Resource.new("#{RESOURCE_PATH}/#{project_key}")
  qparams = {:params => {:api_key => api_key}}
  project_api.resource.get(qparams) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.merge(api_key, parent_id, child_id) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/veye/api/project.rb', line 115

def self.merge(api_key, parent_id, child_id)
  if parent_id.to_s.empty? or child_id.to_s.empty?
    printf("api.project.merge: neither ParentID or ChildId can not be empty")
    return
  end

  project_api = Resource.new("#{RESOURCE_PATH}/#{parent_id}/merge/#{child_id}")
  qparams = {params: {api_key: api_key}}
  project_api.resource.get(qparams) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.unmerge(api_key, parent_id, child_id) ⇒ Object



128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/veye/api/project.rb', line 128

def self.unmerge(api_key, parent_id, child_id)
  if parent_id.to_s.empty? or child_id.to_s.empty?
    printf("api.project.unmerge: neither ParentID or ChildID can not be empty")
    return
  end

  project_api = Resource.new("#{RESOURCE_PATH}/#{parent_id}/unmerge/#{child_id}")
  qparams = {params: {api_key: api_key}}
  project_api.resource.get(qparams) do |response, request, result|
    JSONResponse.new(request, result, response)
  end
end

.update(api_key, project_id, filename) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/veye/api/project.rb', line 60

def self.update(api_key, project_id, filename)
  project_api = Resource.new("#{RESOURCE_PATH}/#{project_id}")
  file_path = check_file(filename)
  return if file_path.nil?

  file_obj = File.open(file_path, 'rb')
  upload_data = {
    :project_file   => file_obj,
    :api_key        => api_key
  }
  project_api.resource.post(upload_data) do |response, request, result, &block|
    JSONResponse.new(request, result, response)
  end
end

.upload(api_key, filename, org_name = nil, team_name = nil, temporary = false, public = true, name = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/veye/api/project.rb', line 38

def self.upload(api_key, filename, org_name = nil, team_name = nil, temporary = false, public =true, name = nil)
  Veye.logger.info("Uploading `#{filename}` under #{org_name}, temporary? #{temporary}, organization? #{public} ")
  project_api = Resource.new(RESOURCE_PATH)
  file_path = check_file(filename)
  return if file_path.nil?

  file_obj = File.open(file_path, 'rb')
  upload_data = {
    :upload   => file_obj,
    :api_key  => api_key
  }
  upload_data[:orga_name] = org_name.to_s.strip unless org_name.to_s.empty?
  upload_data[:team_name] = team_name.to_s.strip unless team_name.to_s.empty?
  upload_data[:temporary] = temporary
  upload_data[:visibility] = (public == true ? 'public' : 'private')
  upload_data[:name]      = name.to_s.strip unless name.to_s.strip.empty?

  project_api.resource.post(upload_data) do |response, request, result, &block|
    JSONResponse.new(request, result, response)
  end
end