cufinder-ruby 1.1.0 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 933505a753cc67ab4e2311cb44741da6ce2c89f186e2eaa36efad0adc2044a63
4
- data.tar.gz: 8025f9c7eb01e26078c870967aba4d68af22ecab84242c93706279735620f555
3
+ metadata.gz: 44b98b86c620454eac62fab4ba87a4c2e49aaa710d4096825932e6294d037bd9
4
+ data.tar.gz: 574b9c457d9a3fbbbc0602617ba323ba7930499055b485ec162763185dce5305
5
5
  SHA512:
6
- metadata.gz: dcde541a1672ea1b08e82dade2fa76f5c7c5a2aecc81dff9900875b7acd15794e58ffc8b3bbea0aca6e71cafb23e230bd097c767b9665cd6da1c6f78115ded29
7
- data.tar.gz: 2c6b4ff7797fe5b818d57673fcd06c9c3ea810f909ff1598763424bdb281d85c79ca44933f40a123ca20f35fce8870d5cfcbe6e670e63d198b025312ee433203
6
+ metadata.gz: 2a786c6a1b6f151223eff85114283d736e24e93ee0e946b0eac1900a2b57952261ee7eccb947ca5129fc735ba636c5d259c2cd0ff21aa4a54597801db5bd48c1
7
+ data.tar.gz: 29967a91c181832949a7f9092d96507a3a4cad5bc140cfb5d262fdf2f2b0a0c203d109c790893593a2f22813b16381fcc7d22d125367f2e006db3115f55ae5cc
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Cufinder Ruby SDK Changelog
2
2
 
3
3
 
4
+ ## 1.2.0 (June 21, 2026)
5
+
6
+ #### Features
7
+ - **New V2 API services**: Add new V2 services including `CEF`, `NAC`, `CAA` and `CJA`
8
+
9
+
10
+
11
+
12
+
4
13
  ## 1.1.0 (February 01, 2026)
5
14
 
6
15
  #### Features
data/README.md CHANGED
@@ -53,7 +53,7 @@ client = Cufinder::Client.new(
53
53
 
54
54
  ## API Reference
55
55
 
56
- This SDK covers all 28 Cufinder API (v2) endpoints:
56
+ This SDK covers all 32 Cufinder API (v2) endpoints:
57
57
 
58
58
  - **CUF** - [Company Name to Domain](https://apidoc.cufinder.io/apis/company-name-to-domain)
59
59
  - **LCUF** - [LinkedIn Company URL Finder](https://apidoc.cufinder.io/apis/company-linkedin-url-finder)
@@ -83,6 +83,10 @@ This SDK covers all 28 Cufinder API (v2) endpoints:
83
83
  - **CSN** - [Company Snapshot](https://apidoc.cufinder.io/apis/company-snapshot)
84
84
  - **NAO** - [Phone Number Normalizer](https://apidoc.cufinder.io/apis/phone-number-normalizer)
85
85
  - **NAA** - [Address Normalizer](https://apidoc.cufinder.io/apis/address-normalizer)
86
+ - **CEF** - [Company Employees Finder](https://apidoc.cufinder.io/apis/company-employees-finder)
87
+ - **NAC** - [Company Name Normalizer](https://apidoc.cufinder.io/apis/company-name-normalizer)
88
+ - **CAA** - [Company Activities API](https://apidoc.cufinder.io/apis/company-activities-api)
89
+ - **CJA** - [Company Jobs API](https://apidoc.cufinder.io/apis/company-jobs-api)
86
90
 
87
91
 
88
92
  **CUF - Company Name to Domain**
@@ -279,7 +283,7 @@ puts result
279
283
 
280
284
  **BCD - B2B Customers Finder**
281
285
 
282
- Returns company's careers page
286
+ Returns B2B customers for a company
283
287
 
284
288
  ```ruby
285
289
  result = client.bcd(url: "stripe.com")
@@ -288,7 +292,7 @@ puts result
288
292
 
289
293
  **CCP - Company Career Page Finder**
290
294
 
291
- Returns is company SaaS or not
295
+ Returns company's careers page URL
292
296
 
293
297
  ```ruby
294
298
  result = client.ccp(url: "stripe.com")
@@ -349,6 +353,42 @@ result = client.naa(address: "1095 avenue of the Americas, 6th Avenue ny 10036")
349
353
  puts result
350
354
  ```
351
355
 
356
+ **CEF - Company Employees Finder**
357
+
358
+ Returns company's employees
359
+
360
+ ```ruby
361
+ result = client.cef(query: "cufinder", page: 1)
362
+ puts result
363
+ ```
364
+
365
+ **NAC - Company Name Normalizer**
366
+
367
+ Returns normalized company name
368
+
369
+ ```ruby
370
+ result = client.nac(company: "cufinder inc.")
371
+ puts result
372
+ ```
373
+
374
+ **CAA - Company Activities API**
375
+
376
+ Returns company's LinkedIn activities
377
+
378
+ ```ruby
379
+ result = client.caa(query: "cufinder", page: 1)
380
+ puts result
381
+ ```
382
+
383
+ **CJA - Company Jobs API**
384
+
385
+ Returns company's job listings
386
+
387
+ ```ruby
388
+ result = client.cja(name: "google", country: "united states", page: 1)
389
+ puts result
390
+ ```
391
+
352
392
  ## Error Handling
353
393
 
354
394
  The SDK provides comprehensive error handling with custom error types:
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "cufinder-ruby"
3
- spec.version = "1.1.0"
3
+ spec.version = "1.2.0"
4
4
  spec.authors = ["CUFinder Team"]
5
5
  spec.email = ["support@cufinder.io"]
6
6
 
@@ -141,5 +141,21 @@ module Cufinder
141
141
  def naa(address:)
142
142
  @services.normalize_address(address: address)
143
143
  end
144
+
145
+ def cef(query:, page:)
146
+ @services.find_company_employees(query: query, page: page)
147
+ end
148
+
149
+ def nac(company:)
150
+ @services.normalize_company_name(company: company)
151
+ end
152
+
153
+ def caa(query:, page:)
154
+ @services.get_company_activities(query: query, page: page)
155
+ end
156
+
157
+ def cja(**params)
158
+ @services.search_company_jobs(params)
159
+ end
144
160
  end
145
161
  end
@@ -228,6 +228,36 @@ module Cufinder
228
228
  response = @client.post("/naa", params)
229
229
  NaaResponse.new(response)
230
230
  end
231
+
232
+ # CEF Service - Company Employees Finder
233
+ def find_company_employees(params)
234
+ validate_required(params, [:query, :page])
235
+
236
+ response = @client.post("/cef", params)
237
+ CefResponse.new(response)
238
+ end
239
+
240
+ # NAC Service - Company Name Normalizer
241
+ def normalize_company_name(params)
242
+ validate_required(params, [:company])
243
+
244
+ response = @client.post("/nac", params)
245
+ NacResponse.new(response)
246
+ end
247
+
248
+ # CAA Service - Company Activities API
249
+ def get_company_activities(params)
250
+ validate_required(params, [:query, :page])
251
+
252
+ response = @client.post("/caa", params)
253
+ CaaResponse.new(response)
254
+ end
255
+
256
+ # CJA Service - Company Jobs API
257
+ def search_company_jobs(params)
258
+ response = @client.post("/cja", params)
259
+ CjaResponse.new(response)
260
+ end
231
261
 
232
262
  private
233
263
 
@@ -601,4 +601,146 @@ module Cufinder
601
601
  @address = data["address"]
602
602
  end
603
603
  end
604
+
605
+ # CEF Employee
606
+ class CefEmployee
607
+ attr_accessor :full_name, :first_name, :last_name, :linkedin_url, :summary,
608
+ :avatar, :country, :state, :city, :job_title,
609
+ :job_title_categories, :company_name, :company_linkedin,
610
+ :company_website, :company_size, :company_industry,
611
+ :company_facebook, :company_twitter, :company_country,
612
+ :company_state, :company_city
613
+
614
+ def initialize(data = {})
615
+ @full_name = data["full_name"]
616
+ @first_name = data["first_name"]
617
+ @last_name = data["last_name"]
618
+ @linkedin_url = data["linkedin_url"]
619
+ @summary = data["summary"]
620
+ @avatar = data["avatar"]
621
+ @country = data["country"]
622
+ @state = data["state"]
623
+ @city = data["city"]
624
+ @job_title = data["job_title"]
625
+ @job_title_categories = data["job_title_categories"]
626
+ @company_name = data["company_name"]
627
+ @company_linkedin = data["company_linkedin"]
628
+ @company_website = data["company_website"]
629
+ @company_size = data["company_size"]
630
+ @company_industry = data["company_industry"]
631
+ @company_facebook = data["company_facebook"]
632
+ @company_twitter = data["company_twitter"]
633
+ @company_country = data["company_country"]
634
+ @company_state = data["company_state"]
635
+ @company_city = data["company_city"]
636
+ end
637
+ end
638
+
639
+ class CefResponse < BaseResponse
640
+ attr_accessor :employees
641
+
642
+ def initialize(data = {})
643
+ super(data)
644
+ @employees = (data["employees"] || []).map { |e| CefEmployee.new(e) }
645
+ end
646
+ end
647
+
648
+ class NacResponse < BaseResponse
649
+ attr_accessor :company
650
+
651
+ def initialize(data = {})
652
+ super(data)
653
+ @company = data["company"]
654
+ end
655
+ end
656
+
657
+ # CAA Activity
658
+ class CaaActivity
659
+ attr_accessor :activity_url, :activity_id, :author_name, :author_type, :author_url,
660
+ :activity_comments_count, :activity_hashtags, :activity_headline,
661
+ :activity_images, :activity_is_video, :activity_posted_at,
662
+ :activity_reactions_count, :activity_reposts_count, :activity_text,
663
+ :activity_top_comments, :activity_videos
664
+
665
+ def initialize(data = {})
666
+ @activity_url = data["activity_url"]
667
+ @activity_id = data["activity_id"]
668
+ @author_name = data["author_name"]
669
+ @author_type = data["author_type"]
670
+ @author_url = data["author_url"]
671
+ @activity_comments_count = data["activity_comments_count"]
672
+ @activity_hashtags = data["activity_hashtags"] || []
673
+ @activity_headline = data["activity_headline"]
674
+ @activity_images = data["activity_images"] || []
675
+ @activity_is_video = data["activity_is_video"]
676
+ @activity_posted_at = data["activity_posted_at"]
677
+ @activity_reactions_count = data["activity_reactions_count"]
678
+ @activity_reposts_count = data["activity_reposts_count"]
679
+ @activity_text = data["activity_text"]
680
+ @activity_top_comments = data["activity_top_comments"] || []
681
+ @activity_videos = data["activity_videos"] || []
682
+ end
683
+ end
684
+
685
+ class CaaResponse < BaseResponse
686
+ attr_accessor :activities
687
+
688
+ def initialize(data = {})
689
+ super(data)
690
+ @activities = (data["activities"] || []).map { |a| CaaActivity.new(a) }
691
+ end
692
+ end
693
+
694
+ # CJA Company (within job listing)
695
+ class CjaCompany
696
+ attr_accessor :name, :industry, :website, :linkedin, :followers_count,
697
+ :employees, :founded_date, :annual_revenue, :funding_amount,
698
+ :main_location
699
+
700
+ def initialize(data = {})
701
+ @name = data["name"]
702
+ @industry = data["industry"]
703
+ @website = data["website"]
704
+ @linkedin = data["linkedin"]
705
+ @followers_count = data["followers_count"]
706
+ @employees = data["employees"]
707
+ @founded_date = data["founded_date"]
708
+ @annual_revenue = data["annual_revenue"]
709
+ @funding_amount = data["funding_amount"]
710
+ @main_location = data["main_location"] ? MainLocation.new(data["main_location"]) : nil
711
+ end
712
+ end
713
+
714
+ # CJA Job listing
715
+ class CjaJob
716
+ attr_accessor :job_id, :title, :url, :location, :posted_at, :posted_at_text
717
+
718
+ def initialize(data = {})
719
+ @job_id = data["job_id"]
720
+ @title = data["title"]
721
+ @url = data["url"]
722
+ @location = data["location"]
723
+ @posted_at = data["posted_at"]
724
+ @posted_at_text = data["posted_at_text"]
725
+ end
726
+ end
727
+
728
+ # CJA Company Job (combined company + job)
729
+ class CompanyJob
730
+ attr_accessor :company, :job
731
+
732
+ def initialize(data = {})
733
+ @company = data["company"] ? CjaCompany.new(data["company"]) : nil
734
+ @job = data["job"] ? CjaJob.new(data["job"]) : nil
735
+ end
736
+ end
737
+
738
+ class CjaResponse < BaseResponse
739
+ attr_accessor :jobs
740
+
741
+ def initialize(data = {})
742
+ super(data)
743
+ @jobs = (data["jobs"] || []).map { |j| CompanyJob.new(j) }
744
+ end
745
+ end
604
746
  end
@@ -1,3 +1,3 @@
1
1
  module Cufinder
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cufinder-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - CUFinder Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-01 00:00:00.000000000 Z
11
+ date: 2026-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty