sourcescrub 0.0.5 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8afd87f86978b44cc34f969d64732c9599feb55d374e30a6b8744df9cac9d59d
4
- data.tar.gz: f23474e047b16466cd1c70c86bc93d2e773f633f31acbd4100110ac10ee1f2e0
3
+ metadata.gz: 4980e44a9b4c4a87dec3bd316dc8de553db7a6d51290660ecf6c186ad28b4b6f
4
+ data.tar.gz: 8f919568a28e03bfa1256e1582581d4631b89b8d51395e6468e5d546683d5155
5
5
  SHA512:
6
- metadata.gz: 70c3bdf3d103542aa9e54e40ddff7058013823a3138a391356a1de7880f01ab0f0696a2184bf8b89ab722637c179556b604ea7e0fcbaf74c6006a90f2bbd2588
7
- data.tar.gz: '09a723173d5387952e8826d511d8ce9e76a63de200f165f4a3c592bd5d91724bbce9196e2f5447ddf30186f74dc742f34dc83e805fe6ca95e68b87fa2ad51c74'
6
+ metadata.gz: f0dd2c6d24b3ba995ae93a327b42b80f2cad1bf94b7a1aefbecf8c6b96be0163ad78dd447f1686ee66409f4c2209b1374ed63310e54c67fcb0377e2769f287de
7
+ data.tar.gz: 32c0d749fbd12014cb60a9f98ca35a78b63a13045483f265ec3cf9cf0b8966ab214f4089de855f2bce868cb036d8866865dc26f23c121eb851aa4613db1ee097
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+
4
+ ## [0.0.8] - 2020-08-13
5
+
6
+ - Implement API to request all compnies - `client.companies`
7
+
8
+ ## [0.0.7] - 2020-08-04
9
+
10
+ - Get source data and source compaines - `client.source_companies(source_id)`
11
+ - Get company's employeerange data by domain - `client.company_cards('monday.com', { card_id: 'employeerange' })`
12
+ - Get company's employees data by domain - `client.company_cards('monday.com', { card_id: 'employees' })`
13
+
3
14
  ## [0.0.3] - 2020-06-20
4
15
 
5
16
  - Implement API to request token by user certificate
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sourcescrub (0.0.5)
4
+ sourcescrub (0.1.0)
5
5
  faraday
6
6
 
7
7
  GEM
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'json'
3
4
  require 'sourcescrub/version'
4
5
 
5
6
  require 'sourcescrub/account'
@@ -26,6 +26,13 @@ module Sourcescrub
26
26
  @card_id
27
27
  ].compact.join('/')
28
28
  end
29
+
30
+ def search_url
31
+ [
32
+ 'search',
33
+ Models::Company::ENDPOINT
34
+ ].compact.join('/')
35
+ end
29
36
  end
30
37
  end
31
38
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './../utils/ss_model'
4
+
5
+ # Root Sourcescrub
6
+ module Sourcescrub
7
+ # Apis
8
+ module Apis
9
+ # Companies endpoint
10
+ class Sources
11
+ include ::Sourcescrub::Utils::SsModel
12
+
13
+ attr_accessor :args
14
+
15
+ def initialize(source_id, args)
16
+ @source_id = source_id
17
+ @model_type = args.delete(:model_type)
18
+ @args = args
19
+ end
20
+
21
+ def request_url
22
+ [
23
+ Models::Source::ENDPOINT,
24
+ @source_id
25
+ ].compact.join('/')
26
+ end
27
+
28
+ def companies_url
29
+ [
30
+ Models::Source::ENDPOINT,
31
+ @source_id,
32
+ 'companies'
33
+ ].compact.join('/')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative './utils/request'
4
4
  require_relative './apis/companies'
5
+ require_relative './apis/sources'
5
6
 
6
7
  # Root Sourcescrub
7
8
  module Sourcescrub
@@ -17,33 +18,97 @@ module Sourcescrub
17
18
  { 'Authorization' => "Bearer #{@token}" }
18
19
  end
19
20
 
21
+ def companies(args = { limit: 100, offset: 0 })
22
+ api = companies_api(args)
23
+
24
+ Models::CompanyItems.new.parse_response_items(
25
+ nil,
26
+ api.kclass_name,
27
+ get(api.search_url, api.args)
28
+ )
29
+ end
30
+
20
31
  def company(domain, args = {})
21
- api = companies_api(domain, args)
32
+ api = company_api(domain, args)
22
33
 
23
34
  api.sobject.parse_response get(api.request_url, api.args)
24
35
  end
25
36
 
26
37
  def company_cards(domain, args = {})
27
- api = companies_api(domain, args.merge(model_type: card_mappings[args[:card_id]]))
38
+ api = company_api(domain, args.merge(model_type: company_card_mappings[args[:card_id]]))
39
+
40
+ Models::CompanyItems.new.parse_response_items(
41
+ domain,
42
+ api.kclass_name,
43
+ get(api.request_url, api.args)
44
+ )
45
+ end
28
46
 
29
- Models::CompanyItems.new.parse_response_items(domain, api.kclass_name, get(api.request_url, api.args))
47
+ # The max limit range is 0 - 100
48
+ def all_sources(args = { sourceStatus: 'None', limit: 100, offset: 0 })
49
+ api = source_api('sources', args)
50
+
51
+ Models::SourceItems.new.parse_response_items(
52
+ api.kclass_name,
53
+ get(api.request_url, api.args)
54
+ )
55
+ end
56
+
57
+ def sources(source_id, args = {})
58
+ api = source_api(source_id, args)
59
+
60
+ api.sobject.parse_response get(api.request_url, api.args)
61
+ end
62
+
63
+ def source_companies(source_id, args = {})
64
+ api = source_companies_api(source_id, args)
65
+
66
+ Models::CompanyItems.new.parse_response_items(
67
+ source_id,
68
+ api.kclass_name,
69
+ get(api.companies_url, api.args)
70
+ )
30
71
  end
31
72
 
32
73
  private
33
74
 
34
- def companies_api(domain, args)
35
- @companies_api || Apis::Companies.new(domain,
36
- { model_type: 'company' }.merge(args))
75
+ def companies_api(args)
76
+ Apis::Companies.new(
77
+ nil,
78
+ { model_type: 'company' }.merge(args)
79
+ )
80
+ end
81
+
82
+ def company_api(domain, args)
83
+ Apis::Companies.new(
84
+ domain,
85
+ { model_type: 'company' }.merge(args)
86
+ )
87
+ end
88
+
89
+ def source_api(source_id, args)
90
+ Apis::Sources.new(
91
+ source_id,
92
+ { model_type: 'source' }.merge(args)
93
+ )
94
+ end
95
+
96
+ def source_companies_api(source_id, args)
97
+ Apis::Sources.new(
98
+ source_id,
99
+ { model_type: 'company' }.merge(args)
100
+ )
37
101
  end
38
102
 
39
- def card_mappings
103
+ def company_card_mappings
40
104
  {
41
105
  'sources' => 'source',
42
106
  'people' => 'person',
43
107
  'financials' => 'financial',
44
108
  'investments' => 'investment',
45
109
  'employees' => 'employee',
46
- 'tags' => 'tag'
110
+ 'tags' => 'tag',
111
+ 'employeerange' => 'employee_range'
47
112
  }
48
113
  end
49
114
  end
@@ -6,9 +6,13 @@ module Sourcescrub
6
6
  autoload :Entity, 'sourcescrub/models/concerns/entity'
7
7
  autoload :Company, 'sourcescrub/models/company'
8
8
  autoload :CompanyItems, 'sourcescrub/models/concerns/company_items'
9
+ autoload :SourceItems, 'sourcescrub/models/concerns/source_items'
9
10
  autoload :Source, 'sourcescrub/models/source'
10
11
  autoload :Tag, 'sourcescrub/models/tag'
11
12
  autoload :Person, 'sourcescrub/models/person'
12
13
  autoload :Financial, 'sourcescrub/models/financial'
14
+ autoload :Investment, 'sourcescrub/models/investment'
15
+ autoload :Employee, 'sourcescrub/models/employee'
16
+ autoload :EmployeeRange, 'sourcescrub/models/employee_range'
13
17
  end
14
18
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Tag
7
+ class SourceItems < Entity
8
+ attr_accessor :total, :items, :type
9
+
10
+ def parse_response_items(kclass_name, response)
11
+ headers = response.dig('headers')
12
+ headers&.keys&.each do |attr_name|
13
+ self.class.send(:define_method, attr_name.gsub('-', '_').to_sym) do
14
+ headers[attr_name]
15
+ end
16
+ end
17
+
18
+ dynamic_define_method(self, 'type', kclass_name)
19
+ dynamic_define_method(self, 'total', response.dig('total') || 0)
20
+ dynamic_define_method(self, 'items', source_items(kclass_name, response.dig('items') || []))
21
+ self
22
+ end
23
+
24
+ private
25
+
26
+ def source_items(kclass_name, items)
27
+ items.each_with_object([]) do |item, results|
28
+ results << kclass_name.new.parse_response(item)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Employee
7
+ class EmployeeRange < Entity
8
+ ENDPOINT = 'employeerange'
9
+
10
+ def field_ids
11
+ %w[
12
+ employeeRange
13
+ date
14
+ ]
15
+ end
16
+ end
17
+ end
18
+ end
@@ -25,17 +25,27 @@ module Sourcescrub
25
25
  request: {
26
26
  timeout: 10,
27
27
  open_timeout: 5
28
- }
29
- ).get(uri, *args)
30
-
31
- response_body = JSON.parse(response.body)
32
- if response.status == 200
33
- response_body = {} if response_body.is_a?(Array) && response_body.empty?
34
-
35
- return response_body.merge('headers' => response.headers)
28
+ },
29
+ params: args[0] || {}
30
+ ).get(uri)
31
+
32
+ response_body = response.body
33
+ raise Error, response_body unless response.status == 200
34
+
35
+ response_body = JSON.parse(response_body)
36
+ # Processing different cases for investments
37
+ if response_body.is_a?(Array)
38
+ response_body = if response_body.empty?
39
+ {}
40
+ else
41
+ {
42
+ 'total' => response_body.size,
43
+ 'items' => response_body
44
+ }
45
+ end
36
46
  end
37
47
 
38
- raise Error, response_body
48
+ response_body.merge('headers' => response.headers)
39
49
  end
40
50
 
41
51
  # def put(uri, args)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sourcescrub
4
- VERSION = '0.0.5'
4
+ VERSION = '0.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sourcescrub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Encore Shao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-03 00:00:00.000000000 Z
11
+ date: 2020-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -104,12 +104,15 @@ files:
104
104
  - lib/sourcescrub.rb
105
105
  - lib/sourcescrub/account.rb
106
106
  - lib/sourcescrub/apis/companies.rb
107
+ - lib/sourcescrub/apis/sources.rb
107
108
  - lib/sourcescrub/client.rb
108
109
  - lib/sourcescrub/models.rb
109
110
  - lib/sourcescrub/models/company.rb
110
111
  - lib/sourcescrub/models/concerns/company_items.rb
111
112
  - lib/sourcescrub/models/concerns/entity.rb
113
+ - lib/sourcescrub/models/concerns/source_items.rb
112
114
  - lib/sourcescrub/models/employee.rb
115
+ - lib/sourcescrub/models/employee_range.rb
113
116
  - lib/sourcescrub/models/financial.rb
114
117
  - lib/sourcescrub/models/investment.rb
115
118
  - lib/sourcescrub/models/person.rb