sourcescrub 0.0.2 → 0.0.7

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: 107c70bcbc69c0b446ae0941bb148b73589cc8e1523d39e49a86db3747b6bf86
4
- data.tar.gz: 1d8f9cd07245567aca8a939a337e0c9b5382ac2f818a35f289b9e4743b2d3e56
3
+ metadata.gz: c425f778c050e471a59f52d8101bc7d5b2bd926e333292525ebe9ad67d4dce65
4
+ data.tar.gz: b98238083a2c65ec56cf6d45e82141c2b2f70a9ffde7eaa6be46a989f0c30a01
5
5
  SHA512:
6
- metadata.gz: 18acb6bd965321c23ff581d164bd155091675c3ba8ca1cf81d43a3e590477aa3c5c1cba0aaeaea17a5b077be811ce4474345ab75c513223e0845699718f5f829
7
- data.tar.gz: df208a12a4ec65fae1372f4969321c0bff6ce859013989810095301d0c2fbc0927719db4dedaebe8efeadbe3019eb3c89771aaebc42703f24300f114548dcb08
6
+ metadata.gz: b5b33a6b315e789588f09039cd5b62d1e038833019f2ada2b31b9eff4f99e967745db6a65698a5f4226e6bdaa3d47a62492d916e990f6ba3815a926da5526418
7
+ data.tar.gz: 17be5421cb1d3008de1248befc059f9e481424b966106a80afc4622f375e594ca65e98b071522b970955b2692d9634efd4f53e4d14db028bc6827b5aa3b042ec
@@ -22,3 +22,6 @@ Metrics/MethodLength:
22
22
  # URISchemes: http, https
23
23
  Layout/LineLength:
24
24
  Max: 135
25
+
26
+ Metrics/BlockLength:
27
+ Max: 500
@@ -1,6 +1,20 @@
1
1
  # Change Log
2
2
 
3
- ## [0.0.1] - 2020-06-20
3
+ ## [0.0.3] - 2020-06-20
4
4
 
5
5
  - Implement API to request token by user certificate
6
- - Get company data by domain
6
+ - Get company data by domain - `client.company(ekohe.com)`
7
+ - Get company's relationship data by domain - `client.company(ekohe.com, {card_id: 'people'})`
8
+ - Retrieve request limit data from header
9
+
10
+ ```
11
+ # .date
12
+ # .content_type
13
+ # .server
14
+ # .content_length
15
+ # .request_context
16
+ # .strict_transport_security
17
+ # .x_ratelimit_limit
18
+ # .x_ratelimit_remaining
19
+ # .x_ratelimit_reset
20
+ ```
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sourcescrub (0.0.1)
4
+ sourcescrub (0.0.7)
5
5
  faraday
6
- faraday_middleware
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
@@ -17,8 +16,6 @@ GEM
17
16
  diff-lcs (1.3)
18
17
  faraday (1.0.1)
19
18
  multipart-post (>= 1.2, < 3)
20
- faraday_middleware (1.0.0)
21
- faraday (~> 1.0)
22
19
  hashdiff (1.0.1)
23
20
  method_source (1.0.0)
24
21
  multipart-post (2.1.1)
data/README.md CHANGED
@@ -4,6 +4,9 @@ Sourcescrub is a ruby wrapper based on Source Scrub API, Here is API documentati
4
4
 
5
5
  However, we need to request an access account from Sourcescrub.
6
6
 
7
+ [![Gem Version](https://badge.fury.io/rb/sourcescrub.svg)](https://badge.fury.io/rb/sourcescrub)
8
+ [![Build Status](https://travis-ci.org/ekohe/sourcescrub.svg?branch=master)](https://travis-ci.org/ekohe/sourcescrub)
9
+
7
10
  ## Installation
8
11
 
9
12
  Add this line to your application's Gemfile:
@@ -58,7 +61,7 @@ pry(main)> client.headers
58
61
 
59
62
  ```ruby
60
63
  <!-- Company -->
61
- response = client.companies('ekohe.com')
64
+ response = client.company('ekohe.com')
62
65
 
63
66
  <!-- Get the JSON response of Company -->
64
67
 
@@ -70,11 +73,100 @@ response.as_json
70
73
  #### Get the company data
71
74
 
72
75
  ```ruby
73
- pry(main)> response = client.companies('ekohe.com')
76
+ pry(main)> response = client.company('ekohe.com')
77
+ => #<Sourcescrub::Models::Company:0x00007f9e915161c0
78
+ @city="Xinzhuang",
79
+ @companyType="Private",
80
+ @country="China",
81
+ @crunchbase=nil,
82
+ @currentEmployeeCount=41,
83
+ @currentEmployeeRange="11-50",
84
+ @currentJobOpenings=0,
85
+ @description=
86
+ "Ekohe, Ltd. is a cutting-edge web and mobile design and development agency. It specialize in digital strategy, innovative technology and user-centered design experiences from conceptualization to market launch.",
87
+ @domain="ekohe.com",
88
+ @facebook=nil,
89
+ => #<Sourcescrub::Models::Company:0x00007f9e915161c0
90
+ @city="Xinzhuang",
91
+ @companyType="Private",
92
+ @country="China",
93
+ @crunchbase=nil,
94
+ @currentEmployeeCount=41,
95
+ @currentEmployeeRange="11-50",
96
+ @currentJobOpenings=0,
97
+ @description=
98
+ "Ekohe, Ltd. is a cutting-edge web and mobile design and development agency. It specialize in digital strategy, innovative technology and user-centered design experiences from conceptualization to market la
99
+ unch.",
100
+ @domain="ekohe.com",
101
+ @facebook=nil,
102
+ @firmTags=[],
103
+ @foundingYear=2007,
104
+ @id="LZ281NVD",
105
+ @informalName="Ekohe",
106
+ @investors="",
107
+ @linkedIn="https://www.linkedin.com/company/ekohe",
108
+ @location="Xinzhuang, Shanghai Shi, China",
109
+ @name="Ekohe, Ltd.",
110
+ @parentCompanyDomain=nil,
111
+ @personalTags=[],
112
+ @phoneNumber="",
113
+ @postalCode=nil,
114
+ @specialties=
115
+ ["IT & Startup Consulting",
116
+ "Ruby on Rails leaders",
117
+ "Intelligent Web & Mobile Development",
118
+ "Usable Web & Mobile design",
119
+ "UX or UI Design",
120
+ "Artificial Intelligence",
121
+ "Machine Learning",
122
+ "Data Sourcing",
123
+ "FinTech Tools"],
124
+ @state="Shanghai Shi",
125
+ @totalAmountInvested=0,
126
+ @twitter=nil,
127
+ @website="https://ekohe.com">
74
128
  pry(main)> response.name
75
129
  => "Ekohe, Ltd."
76
130
  pry(main)> response.domain
77
131
  => "ekohe.com"
132
+ pry(main)> response.as_json
133
+ => {:id=>"LZ281NVD",
134
+ :companyType=>"Private",
135
+ :name=>"Ekohe, Ltd.",
136
+ :informalName=>"Ekohe",
137
+ :website=>"https://ekohe.com",
138
+ :domain=>"ekohe.com",
139
+ :description=>
140
+ "Ekohe, Ltd. is a cutting-edge web and mobile design and development agency. It specialize in digital strategy, innovative technology and user-centered design experiences from conceptualization to market launch.",
141
+ :foundingYear=>2007,
142
+ :location=>"Xinzhuang, Shanghai Shi, China",
143
+ :city=>"Xinzhuang",
144
+ :state=>"Shanghai Shi",
145
+ :postalCode=>nil,
146
+ :country=>"China",
147
+ :parentCompanyDomain=>nil,
148
+ :phoneNumber=>"",
149
+ :specialties=>
150
+ ["IT & Startup Consulting",
151
+ "Ruby on Rails leaders",
152
+ "Intelligent Web & Mobile Development",
153
+ "Usable Web & Mobile design",
154
+ "UX or UI Design",
155
+ "Artificial Intelligence",
156
+ "Machine Learning",
157
+ "Data Sourcing",
158
+ "FinTech Tools"],
159
+ :facebook=>nil,
160
+ :twitter=>nil,
161
+ :crunchbase=>nil,
162
+ :linkedIn=>"https://www.linkedin.com/company/ekohe",
163
+ :totalAmountInvested=>0,
164
+ :currentEmployeeCount=>41,
165
+ :currentEmployeeRange=>"11-50",
166
+ :currentJobOpenings=>0,
167
+ :investors=>"",
168
+ :personalTags=>[],
169
+ :firmTags=>[]}
78
170
  ```
79
171
 
80
172
  ### Searches
@@ -85,7 +177,7 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
85
177
 
86
178
  ## Contributing
87
179
 
88
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/sourcescrub. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/sourcescrub/blob/master/CODE_OF_CONDUCT.md).
180
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ekohe/sourcescrub. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ekohe/sourcescrub/blob/master/CODE_OF_CONDUCT.md).
89
181
 
90
182
 
91
183
  ## License
@@ -94,4 +186,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
94
186
 
95
187
  ## Code of Conduct
96
188
 
97
- Everyone interacting in the Sourcescrub project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/sourcescrub/blob/master/CODE_OF_CONDUCT.md).
189
+ Everyone interacting in the Sourcescrub project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ekohe/sourcescrub/blob/master/CODE_OF_CONDUCT.md).
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'json'
3
4
  require 'sourcescrub/version'
4
5
 
5
6
  require 'sourcescrub/account'
6
7
  require 'sourcescrub/client'
7
8
  require 'sourcescrub/models'
9
+ require 'sourcescrub/utils/veriables'
8
10
 
11
+ # Sourcescrub
9
12
  module Sourcescrub
10
13
  TOKEN_URL = 'https://identity.sourcescrub.com'
11
14
  TOKEN_URI = '/connect/token'
@@ -14,5 +17,6 @@ module Sourcescrub
14
17
  API_URI = 'https://api.sourcescrub.com/'
15
18
 
16
19
  class Error < StandardError; end
17
- # Your code goes here...
20
+
21
+ include Utils::Veriables
18
22
  end
@@ -21,7 +21,7 @@ module Sourcescrub
21
21
 
22
22
  def request_url
23
23
  [
24
- kclass_name::ENDPOINT,
24
+ Models::Company::ENDPOINT,
25
25
  @domain,
26
26
  @card_id
27
27
  ].compact.join('/')
@@ -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
@@ -12,21 +13,86 @@ module Sourcescrub
12
13
  attr_accessor :token
13
14
 
14
15
  def headers
15
- @token || authenticate
16
+ authenticate if @token.nil?
16
17
 
17
18
  { 'Authorization' => "Bearer #{@token}" }
18
19
  end
19
20
 
20
- def companies(domain, args = {})
21
+ def company(domain, args = {})
21
22
  api = companies_api(domain, args)
22
23
 
23
24
  api.sobject.parse_response get(api.request_url, api.args)
24
25
  end
25
26
 
27
+ def company_cards(domain, args = {})
28
+ api = companies_api(domain, args.merge(model_type: company_card_mappings[args[:card_id]]))
29
+
30
+ Models::CompanyItems.new.parse_response_items(
31
+ domain,
32
+ api.kclass_name,
33
+ get(api.request_url, api.args)
34
+ )
35
+ end
36
+
37
+ # The max limit range is 0 - 100
38
+ def all_sources(args = { sourceStatus: 'None', limit: 100, offset: 0 })
39
+ api = source_api('sources', args)
40
+
41
+ Models::SourceItems.new.parse_response_items(
42
+ api.kclass_name,
43
+ get(api.request_url, api.args)
44
+ )
45
+ end
46
+
47
+ def sources(source_id, args = {})
48
+ api = source_api(source_id, args)
49
+
50
+ api.sobject.parse_response get(api.request_url, api.args)
51
+ end
52
+
53
+ def source_companies(source_id, args = {})
54
+ api = source_companies_api(source_id, args)
55
+
56
+ Models::CompanyItems.new.parse_response_items(
57
+ source_id,
58
+ api.kclass_name,
59
+ get(api.companies_url, api.args)
60
+ )
61
+ end
62
+
26
63
  private
27
64
 
28
65
  def companies_api(domain, args)
29
- @companies_api || Apis::Companies.new(domain, args.merge(model_type: 'company'))
66
+ @companies_api ||= Apis::Companies.new(
67
+ domain,
68
+ { model_type: 'company' }.merge(args)
69
+ )
70
+ end
71
+
72
+ def source_api(source_id, args)
73
+ @source_api ||= Apis::Sources.new(
74
+ source_id,
75
+ { model_type: 'source' }.merge(args)
76
+ )
77
+ end
78
+
79
+ def source_companies_api(source_id, args)
80
+ @source_companies_api ||= Apis::Sources.new(
81
+ source_id,
82
+ { model_type: 'company' }.merge(args)
83
+ )
84
+ end
85
+
86
+ def company_card_mappings
87
+ {
88
+ 'sources' => 'source',
89
+ 'people' => 'person',
90
+ 'financials' => 'financial',
91
+ 'investments' => 'investment',
92
+ 'employees' => 'employee',
93
+ 'tags' => 'tag',
94
+ 'employeerange' => 'employee_range'
95
+ }
30
96
  end
31
97
  end
32
98
  end
@@ -3,9 +3,16 @@
3
3
  module Sourcescrub
4
4
  # Models
5
5
  module Models
6
- autoload :Entity, 'sourcescrub/models/concerns/entity'
7
- autoload :Company, 'sourcescrub/models/company'
8
- autoload :Source, 'sourcescrub/models/source'
9
- autoload :Tag, 'sourcescrub/models/tag'
6
+ autoload :Entity, 'sourcescrub/models/concerns/entity'
7
+ autoload :Company, 'sourcescrub/models/company'
8
+ autoload :CompanyItems, 'sourcescrub/models/concerns/company_items'
9
+ autoload :SourceItems, 'sourcescrub/models/concerns/source_items'
10
+ autoload :Source, 'sourcescrub/models/source'
11
+ autoload :Tag, 'sourcescrub/models/tag'
12
+ autoload :Person, 'sourcescrub/models/person'
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'
10
17
  end
11
18
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Tag
7
+ class CompanyItems < Entity
8
+ attr_accessor :domain, :total, :items, :type
9
+
10
+ def parse_response_items(domain, 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, 'domain', domain)
19
+ dynamic_define_method(self, 'type', kclass_name)
20
+ dynamic_define_method(self, 'total', response.dig(total_key) || 0)
21
+ dynamic_define_method(self, 'items', company_items(kclass_name, response.dig(items_key) || []))
22
+ self
23
+ end
24
+
25
+ private
26
+
27
+ def company_items(kclass_name, items)
28
+ items.each_with_object([]) do |item, results|
29
+ results << kclass_name.new.parse_response(item)
30
+ end
31
+ end
32
+
33
+ def total_key
34
+ case type_name
35
+ when 'Person'
36
+ 'totalPeople'
37
+ else
38
+ 'total'
39
+ end
40
+ end
41
+
42
+ def items_key
43
+ case type_name
44
+ when 'Person'
45
+ 'peopleAllocations'
46
+ else
47
+ 'items'
48
+ end
49
+ end
50
+
51
+ def type_name
52
+ type.name.split('::')[-1]
53
+ end
54
+ end
55
+ end
56
+ 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 Employee < Entity
8
+ ENDPOINT = 'employees'
9
+
10
+ def field_ids
11
+ %w[
12
+ count
13
+ date
14
+ ]
15
+ end
16
+ end
17
+ end
18
+ 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
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Financial
7
+ class Financial < Entity
8
+ ENDPOINT = 'financials'
9
+
10
+ def field_ids
11
+ %w[
12
+ year
13
+ revenue
14
+ growth
15
+ growthTimePeriod
16
+ ]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Investment
7
+ class Investment < Entity
8
+ ENDPOINT = 'investments'
9
+
10
+ def field_ids
11
+ %w[
12
+ amount
13
+ dateOfRaise
14
+ round
15
+ investors
16
+ valuation
17
+ ]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Models
5
+ module Models
6
+ # Person
7
+ class Person < Entity
8
+ ENDPOINT = 'people'
9
+
10
+ def field_ids
11
+ %w[
12
+ personId
13
+ firstName
14
+ firstName
15
+ lastName
16
+ linkedIn
17
+ startDate
18
+ endDate
19
+ email
20
+ emailConfirmed
21
+ title
22
+ role
23
+ ]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -23,6 +23,9 @@ module Sourcescrub
23
23
  companyCount
24
24
  companiesCrmCount
25
25
  companiesTaggedCount
26
+ boothNumber
27
+ affiliation
28
+ rank
26
29
  ]
27
30
  end
28
31
  end
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'faraday'
4
- require 'faraday_middleware'
5
- require 'logger'
6
4
 
7
5
  module Sourcescrub
8
6
  # Utils
@@ -21,43 +19,59 @@ module Sourcescrub
21
19
  #
22
20
  #
23
21
  def get(uri, *args)
24
- response = Faraday.new(url: API_URI) do |faraday|
25
- faraday.headers = headers
26
- faraday.request :json
27
- faraday.response :json
28
- faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
29
- end.get(uri, *args)
30
-
31
- return response.body if response.status == 200
32
-
33
- raise Error, response.body
22
+ response = Faraday.new(
23
+ url: API_URI,
24
+ headers: headers,
25
+ request: {
26
+ timeout: 10,
27
+ open_timeout: 5
28
+ }
29
+ ).get(uri, *args)
30
+
31
+ response_body = response.body
32
+ raise Error, response_body unless response.status == 200
33
+
34
+ response_body = JSON.parse(response_body)
35
+ # Processing different cases for investments
36
+ if response_body.is_a?(Array)
37
+ response_body = if response_body.empty?
38
+ {}
39
+ else
40
+ {
41
+ 'total' => response_body.size,
42
+ 'items' => response_body
43
+ }
44
+ end
45
+ end
46
+
47
+ response_body.merge('headers' => response.headers)
34
48
  end
35
49
 
36
- def put(uri, args)
37
- response = Faraday.new(url: API_URI) do |faraday|
38
- faraday.headers = headers
39
- faraday.request :json
40
- faraday.response :json
41
- faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
42
- end.put(uri, args)
50
+ # def put(uri, args)
51
+ # response = Faraday.new(url: API_URI) do |faraday|
52
+ # faraday.headers = headers
53
+ # faraday.request :json
54
+ # faraday.response :json
55
+ # faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
56
+ # end.put(uri, args)
43
57
 
44
- return response.body if response.status == 200
58
+ # return response.body if response.status == 200
45
59
 
46
- raise Error, response.body
47
- end
60
+ # raise Error, response.body
61
+ # end
48
62
 
49
- def delete(uri, args)
50
- response = Faraday.new(url: API_URI) do |faraday|
51
- faraday.headers = headers
52
- faraday.request :json
53
- faraday.response :json
54
- faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
55
- end.delete(uri, args)
63
+ # def delete(uri, args)
64
+ # response = Faraday.new(url: API_URI) do |faraday|
65
+ # faraday.headers = headers
66
+ # faraday.request :json
67
+ # faraday.response :json
68
+ # faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
69
+ # end.delete(uri, args)
56
70
 
57
- return response.body if response.status == 200
71
+ # return response.body if response.status == 200
58
72
 
59
- raise Error, response.body
60
- end
73
+ # raise Error, response.body
74
+ # end
61
75
 
62
76
  # Authentication Token
63
77
  #
@@ -73,20 +87,17 @@ module Sourcescrub
73
87
  def authenticate
74
88
  body = "grant_type=password&username=#{Sourcescrub.account.username}&password=#{Sourcescrub.account.password}&scope=client_api"
75
89
 
76
- response = Faraday.new(url: TOKEN_URL) do |faraday|
77
- faraday.headers = {
90
+ response = Faraday.new(
91
+ url: TOKEN_URL,
92
+ headers: {
78
93
  'Content-Type' => 'application/x-www-form-urlencoded',
79
94
  'Authorization' => Sourcescrub.account.basic
80
95
  }
81
- faraday.adapter Faraday.default_adapter
82
- faraday.request :json
83
- faraday.response :json
84
- faraday.response :logger, ::Logger.new(STDOUT), bodies: true if debug_mode?
85
- end.post(TOKEN_URI, body)
96
+ ).post(TOKEN_URI, body)
86
97
 
87
- raise 'Apptopia error: Service Unavailable' unless response.status == 200
98
+ raise 'Sourcescrub error: Service Unavailable' unless response.status == 200
88
99
 
89
- @token = response.body['access_token']
100
+ @token = JSON.parse(response.body)['access_token']
90
101
  end
91
102
 
92
103
  private
@@ -8,6 +8,25 @@ module Sourcescrub
8
8
  module_function
9
9
 
10
10
  def dynamic_attributes(object, attribute_names, response)
11
+ # Retrieve request limit data from header
12
+ #
13
+ # .date
14
+ # .content_type
15
+ # .server
16
+ # .content_length
17
+ # .request_context
18
+ # .strict_transport_security
19
+ # .x_ratelimit_limit
20
+ # .x_ratelimit_remaining
21
+ # .x_ratelimit_reset
22
+ headers = response.dig('headers')
23
+ headers&.keys&.each do |attr_name|
24
+ object.class.send(:define_method, attr_name.gsub('-', '_').to_sym) do
25
+ headers[attr_name]
26
+ end
27
+ end
28
+
29
+ # Setup attributes
11
30
  attribute_names.each do |attr_name|
12
31
  attr_value = response.dig(attr_name)
13
32
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sourcescrub
4
+ # Utils
5
+ module Utils
6
+ # Veriables
7
+ module Veriables
8
+ # Description of operators
9
+ PEOPLE_ROLES = {
10
+ 'founder' => 'Founder',
11
+ 'employee' => 'Employee',
12
+ 'board_member' => 'Board Member',
13
+ 'advisor' => 'Advisor'
14
+ }.freeze
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sourcescrub
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.7'
5
5
  end
@@ -30,7 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_dependency 'faraday'
33
- spec.add_dependency 'faraday_middleware'
34
33
 
35
34
  # VCR for testing APIs
36
35
  spec.add_development_dependency 'vcr'
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.2
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Encore Shao
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-20 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: faraday_middleware
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: vcr
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -118,15 +104,24 @@ files:
118
104
  - lib/sourcescrub.rb
119
105
  - lib/sourcescrub/account.rb
120
106
  - lib/sourcescrub/apis/companies.rb
107
+ - lib/sourcescrub/apis/sources.rb
121
108
  - lib/sourcescrub/client.rb
122
109
  - lib/sourcescrub/models.rb
123
110
  - lib/sourcescrub/models/company.rb
111
+ - lib/sourcescrub/models/concerns/company_items.rb
124
112
  - lib/sourcescrub/models/concerns/entity.rb
113
+ - lib/sourcescrub/models/concerns/source_items.rb
114
+ - lib/sourcescrub/models/employee.rb
115
+ - lib/sourcescrub/models/employee_range.rb
116
+ - lib/sourcescrub/models/financial.rb
117
+ - lib/sourcescrub/models/investment.rb
118
+ - lib/sourcescrub/models/person.rb
125
119
  - lib/sourcescrub/models/source.rb
126
120
  - lib/sourcescrub/models/tag.rb
127
121
  - lib/sourcescrub/utils/request.rb
128
122
  - lib/sourcescrub/utils/response.rb
129
123
  - lib/sourcescrub/utils/ss_model.rb
124
+ - lib/sourcescrub/utils/veriables.rb
130
125
  - lib/sourcescrub/version.rb
131
126
  - sourcescrub.gemspec
132
127
  homepage: https://github.com/ekohe/sourcescrub
@@ -137,7 +132,7 @@ metadata:
137
132
  homepage_uri: https://github.com/ekohe/sourcescrub
138
133
  source_code_uri: https://github.com/ekohe/sourcescrub
139
134
  changelog_uri: https://github.com/ekohe/sourcescrub/blob/master/CHANGELOG.md
140
- post_install_message:
135
+ post_install_message:
141
136
  rdoc_options: []
142
137
  require_paths:
143
138
  - lib
@@ -153,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
148
  version: '0'
154
149
  requirements: []
155
150
  rubygems_version: 3.0.3
156
- signing_key:
151
+ signing_key:
157
152
  specification_version: 4
158
153
  summary: Sourcescrub is a ruby wrapper based on Source Scrub API.
159
154
  test_files: []