papierkram_api_client 0.1.3 → 0.2.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile.lock +3 -3
  5. data/README.md +155 -55
  6. data/lib/papierkram_api/client.rb +92 -0
  7. data/lib/papierkram_api/v1/business_intelligence/base.rb +23 -0
  8. data/lib/papierkram_api/v1/business_intelligence/expenses_by_category.rb +98 -0
  9. data/lib/papierkram_api/v1/business_intelligence/smart_queries/expense_vouchers_for_month_in_year.rb +58 -0
  10. data/lib/papierkram_api/v1/endpoints/banking/bank_connections.rb +30 -0
  11. data/lib/papierkram_api/v1/endpoints/banking/transactions.rb +20 -0
  12. data/lib/papierkram_api/v1/endpoints/base.rb +77 -0
  13. data/lib/papierkram_api/v1/endpoints/contact/companies.rb +30 -0
  14. data/lib/papierkram_api/v1/endpoints/contact/companies_persons.rb +28 -0
  15. data/lib/papierkram_api/v1/endpoints/expense/vouchers.rb +45 -0
  16. data/lib/papierkram_api/v1/endpoints/income/estimates.rb +46 -0
  17. data/lib/papierkram_api/v1/endpoints/income/invoices.rb +46 -0
  18. data/lib/papierkram_api/v1/endpoints/income/propositions.rb +20 -0
  19. data/lib/papierkram_api/v1/endpoints/info.rb +14 -0
  20. data/lib/papierkram_api/v1/endpoints/projects.rb +26 -0
  21. data/lib/papierkram_api/v1/endpoints/tracker/tasks.rb +33 -0
  22. data/lib/papierkram_api/v1/endpoints/tracker/time_entries.rb +62 -0
  23. data/lib/papierkram_api/v1/helper/date_helper.rb +14 -0
  24. data/lib/{api → papierkram_api}/v1/helper/pdf_from_response.rb +1 -1
  25. data/lib/papierkram_api/v1/validators/expense_voucher.rb +105 -0
  26. data/lib/papierkram_api_client/version.rb +1 -1
  27. data/lib/papierkram_api_client.rb +21 -102
  28. metadata +22 -16
  29. data/lib/api/v1/banking/bank_connections.rb +0 -28
  30. data/lib/api/v1/banking/transactions.rb +0 -18
  31. data/lib/api/v1/base.rb +0 -75
  32. data/lib/api/v1/contact/companies.rb +0 -28
  33. data/lib/api/v1/contact/companies_persons.rb +0 -26
  34. data/lib/api/v1/expense/vouchers.rb +0 -43
  35. data/lib/api/v1/income/estimates.rb +0 -44
  36. data/lib/api/v1/income/invoices.rb +0 -44
  37. data/lib/api/v1/income/propositions.rb +0 -18
  38. data/lib/api/v1/info.rb +0 -12
  39. data/lib/api/v1/projects.rb +0 -24
  40. data/lib/api/v1/tracker/tasks.rb +0 -31
  41. data/lib/api/v1/tracker/time_entries.rb +0 -59
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Api
4
- module V1
5
- module Tracker
6
- # This class is responsible for all the API calls related to tracker tasks connections.
7
- class Tasks < Api::V1::Base
8
- def by(id:)
9
- get("#{@url_api_path}/tracker/tasks/#{id}")
10
- end
11
-
12
- def all(page: 1,
13
- page_size: 100,
14
- order_by: nil,
15
- order_direction: nil,
16
- project_id: nil,
17
- proposition_id: nil)
18
- query = {
19
- page: page,
20
- page_size: page_size
21
- }
22
- query[:order_by] = order_by if order_by
23
- query[:order_direction] = order_direction if order_direction
24
- query[:project_id] = project_id if project_id
25
- query[:proposition_id] = proposition_id if proposition_id
26
- get("#{@url_api_path}/tracker/tasks", query)
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Api
4
- module V1
5
- module Tracker
6
- # This class is responsible for all the API calls related to tracker time entries connections.
7
- class TimeEntries < Api::V1::Base
8
- def by(id:)
9
- get("#{@url_api_path}/tracker/time_entries/#{id}")
10
- end
11
-
12
- def all(page: 1, # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
13
- page_size: 100,
14
- order_by: nil,
15
- order_direction: nil,
16
- project_id: nil,
17
- task_id: nil,
18
- invoice_id: nil,
19
- user_id: nil,
20
- billing_state: nil,
21
- start_time_range_start: nil,
22
- start_time_range_end: nil)
23
- validate!(billing_state: billing_state,
24
- start_time_range_start: start_time_range_start,
25
- start_time_range_end: start_time_range_end)
26
-
27
- query = {
28
- page: page,
29
- page_size: page_size
30
- }
31
- query[:order_by] = order_by if order_by
32
- query[:order_direction] = order_direction if order_direction
33
- query[:project_id] = project_id if project_id
34
- query[:task_id] = task_id if task_id
35
- query[:invoice_id] = invoice_id if invoice_id
36
- query[:user_id] = user_id if user_id
37
- query[:billing_state] = billing_state if billing_state
38
- query[:start_time_range_start] = start_time_range_start if start_time_range_start
39
- query[:start_time_range_end] = start_time_range_end if start_time_range_end
40
- get("#{@url_api_path}/tracker/time_entries", query)
41
- end
42
-
43
- private
44
-
45
- def validate!(billing_state:, start_time_range_start:, start_time_range_end:)
46
- if billing_state && !%w[billed unbilled billable unbillable archived].include?(billing_state)
47
- raise ArgumentError, 'billing_state must be one of: "billed" "unbilled"" billable" "unbillable" "archived"'
48
- end
49
- if start_time_range_start && !start_time_range_start.is_a?(Time)
50
- raise ArgumentError, 'start_time_range_start must be a Time object'
51
- end
52
- return unless start_time_range_end && !start_time_range_end.is_a?(Time)
53
-
54
- raise ArgumentError, 'start_time_range_end must be a Time object'
55
- end
56
- end
57
- end
58
- end
59
- end