Class: Unitylock::Client::Main

Inherits:
Object
  • Object
show all
Defined in:
lib/unitylock/client/main.rb

Instance Method Summary collapse

Constructor Details

#initialize(urlbase) ⇒ Main

Returns a new instance of Main.



8
9
10
11
12
13
14
# File 'lib/unitylock/client/main.rb', line 8

def initialize(urlbase)
  @conn = Faraday.new(:url => urlbase) do |faraday|
    faraday.request  :url_encoded
    # faraday.response :logger
    faraday.adapter  Faraday.default_adapter
  end
end

Instance Method Details

#delete_allObject



36
37
38
39
# File 'lib/unitylock/client/main.rb', line 36

def delete_all
  files = JSON.parse(search.body).collect {|it| it['file']}
  deletes(files)
end

#deletes(files) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/unitylock/client/main.rb', line 28

def deletes(files)
  @conn.delete do |req|
    req.url '/files'
    req.headers['Content-Type'] = 'application/json'
    req.body = JSON.generate(files)
  end
end

#locks(user:, files:) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/unitylock/client/main.rb', line 41

def locks(user:, files:)
  # TODO: requests at once
  results = []
  files.each do |file|
    results << @conn.put do |req|
      req.url "/user/#{user}/lock"
      req.headers['Content-Type'] = 'application/json'
      req.body = JSON.generate({file: file})
    end.body
  end
  results
end

#searchObject



16
17
18
# File 'lib/unitylock/client/main.rb', line 16

def search
  @conn.get '/files'
end

#sync(dir: '.', force: false, includes: /\.(unity|prefab)$/, excludes: /^$/) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/unitylock/client/main.rb', line 67

def sync(dir: '.', force: false, includes: /\.(unity|prefab)$/, excludes: /^$/)
  files = Find.find(dir).select{|it| it =~ includes}.select{|it| it !~ excludes}

  puts "touched:"
  puts files

  touches(files)
  touched_files = JSON.parse(search.body).collect {|it| it['file']}

  if force
    remove_files = touched_files.select{|it| !files.include?(it) }

    puts "removed:"
    puts remove_files

    deletes(remove_files)
    return (touched_files - remove_files)
  end

  return touched_files
end

#touches(files) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/unitylock/client/main.rb', line 20

def touches(files)
  @conn.post do |req|
    req.url '/files'
    req.headers['Content-Type'] = 'application/json'
    req.body = JSON.generate(files)
  end
end

#unlocks(user:, files:) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/unitylock/client/main.rb', line 54

def unlocks(user:, files:)
  # TODO: requests at once
  results = []
  files.each do |file|
    results << @conn.put do |req|
      req.url "/user/#{user}/unlock"
      req.headers['Content-Type'] = 'application/json'
      req.body = JSON.generate({file: file})
    end.body
  end
  results
end