doorloop 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Expenses
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('expenses', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('expenses', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("expenses/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("expenses/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("expenses/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rest-client'
4
+ require 'json'
5
+
6
+ module DoorLoop
7
+ class Files
8
+ MAX_FILE_SIZE = 50 * 1024 * 1024 # 50 MB
9
+
10
+ def initialize(client)
11
+ @client = client
12
+ @logger = client.logger
13
+ end
14
+
15
+ def list(options = {})
16
+ @client.get('files', options)
17
+ end
18
+
19
+ def retrieve(id)
20
+ @client.get("files/#{id}")
21
+ end
22
+
23
+ def update(id, params)
24
+ @client.put("files/#{id}", params)
25
+ end
26
+
27
+ def delete(id)
28
+ @client.delete("files/#{id}")
29
+ end
30
+
31
+ def upload(file_path, params)
32
+ unless params[:name] && params[:resourceType] && params[:resourceId]
33
+ @logger.error("name, resourceType and resourceId are required parameters")
34
+ return nil
35
+ end
36
+
37
+ file_size = File.size(file_path)
38
+ if file_size > MAX_FILE_SIZE
39
+ @logger.error("File size exceeds the 50MB limit")
40
+ return nil
41
+ end
42
+
43
+ payload = {
44
+ multipart: true,
45
+ file: File.new(file_path, 'rb'),
46
+ name: params[:name],
47
+ resourceId: params[:resourceId],
48
+ resourceType: params[:resourceType],
49
+ notes: params[:notes],
50
+ tags: params[:tags],
51
+ size: params[:size] || file_size,
52
+ mimeType: params[:mimeType],
53
+ createdBy: params[:createdBy],
54
+ createdAt: params[:createdAt]
55
+ }.compact
56
+
57
+ begin
58
+ response = @client.post('files', payload)
59
+ rescue RestClient::ExceptionWithResponse => e
60
+ @logger.error("File upload failed: #{e.response}")
61
+ @client.error_handler.handle(e)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class LeaseCharges
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('lease-charges', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('lease-charges', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("lease-charges/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("lease-charges/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("lease-charges/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class LeaseCredits
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('lease-credits', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('lease-credits', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("lease-credits/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("lease-credits/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("lease-credits/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class LeasePayments
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('lease-payments', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('lease-payments', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("lease-payments/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("lease-payments/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("lease-payments/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class LeaseReturnedPayments
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('lease-reversed-payments', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('lease-reversed-payments', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("lease-reversed-payments/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("lease-reversed-payments/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("lease-reversed-payments/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Leases
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('leases', options)
11
+ end
12
+
13
+ def retrieve(id)
14
+ @client.get("leases/#{id}")
15
+ end
16
+
17
+ def move_in_tenant(params)
18
+ @client.post('leases/move-in', params)
19
+ end
20
+
21
+ def move_out_tenant(params)
22
+ @client.post('leases/move-out', params)
23
+ end
24
+
25
+ def tenants
26
+ @client.get('leases/tenants')
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Notes
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('notes', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('notes', params)
15
+ end
16
+
17
+ def retrieve(task_id)
18
+ @client.get("notes/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("notes/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("notes/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Owners
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('owners', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('owners', params)
15
+ end
16
+
17
+ def retrieve(task_id)
18
+ @client.get("owners/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("owners/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("owners/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Portfolios
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('property-groups', options)
11
+ end
12
+
13
+ def retrieve(id)
14
+ @client.get("property-groups/#{id}")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Properties
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('properties', options)
11
+ end
12
+
13
+ def retrieve(id)
14
+ @client.get("properties/#{id}")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Reports
5
+ def initialize(client)
6
+ @client = client
7
+ @logger = client.logger
8
+ end
9
+
10
+ def rent_roll(options = {})
11
+ @client.get('reports/rent-roll', options)
12
+ end
13
+
14
+ def profit_loss_summary(options = {})
15
+ unless options[:filter_accountingMethod]
16
+ @logger.error("filter_accountingMethod is required (CASH / ACCRUAL)")
17
+ return nil
18
+ end
19
+
20
+ @client.get('reports/profit-and-loss-summary', options)
21
+ end
22
+
23
+ def cash_flow_statement(options = {})
24
+ unless options[:filter_accountingMethod]
25
+ @logger.error("filter_accountingMethod is required (CASH / ACCRUAL)")
26
+ return nil
27
+ end
28
+
29
+ @client.get('reports/cash-flow-statement', options)
30
+ end
31
+
32
+ def balance_sheet_summary(options = {})
33
+ unless options[:filter_accountingMethod]
34
+ @logger.error("filter_accountingMethod is required (CASH / ACCRUAL)")
35
+ return nil
36
+ end
37
+
38
+ @client.get('reports/balance-sheet-summary', options)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Tasks
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('tasks', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('tasks', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("tasks/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("tasks/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("tasks/#{id}")
27
+ end
28
+
29
+ def post_update(params)
30
+ @client.post('tasks/update', params)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Tenants
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def retrieve(id)
10
+ @client.get("tenants/#{id}")
11
+ end
12
+
13
+ def list(options = {})
14
+ @client.get('tenants', options)
15
+ end
16
+
17
+ def create(params)
18
+ @client.post('tenants', params)
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("tenants/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("tenants/#{id}")
27
+ end
28
+
29
+ end
30
+ end
31
+
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Units
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('units', options)
11
+ end
12
+
13
+ def retrieve(id)
14
+ @client.get("units/#{id}")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Users
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def get_current_user
10
+ @client.get('users/me')
11
+ end
12
+
13
+ def list(options = {})
14
+ @client.get('users', options)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("users/#{id}")
19
+ end
20
+
21
+ end
22
+ end
23
+
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class VendorBills
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('vendor-bills', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('vendor-bills', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("vendor-bills/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("vendor-bills/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("vendor-bills/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class VendorCredits
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('vendor-credits', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('vendor-credits', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("vendor-credits/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("vendor-credits/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("vendor-credits/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DoorLoop
4
+ class Vendors
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def list(options = {})
10
+ @client.get('vendors', options)
11
+ end
12
+
13
+ def create(params)
14
+ @client.post('vendors', params)
15
+ end
16
+
17
+ def retrieve(id)
18
+ @client.get("vendors/#{id}")
19
+ end
20
+
21
+ def update(id, params)
22
+ @client.put("vendors/#{id}", params)
23
+ end
24
+
25
+ def delete(id)
26
+ @client.delete("vendors/#{id}")
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module Doorloop
2
+ VERSION = "0.1.0"
3
+ end
data/lib/doorloop.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'doorloop/version'
4
+ require_relative 'doorloop/client'
5
+
6
+ module DoorLoop
7
+ class Error < StandardError; end
8
+ class UnauthorizedError < Error; end
9
+ class ForbiddenError < Error; end
10
+ class NotFoundError < Error; end
11
+ class TooManyRequestsError < Error; end
12
+ class InvalidResponseError < Error; end
13
+ end