thecompaniesapi 1.0.1

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 (100) hide show
  1. checksums.yaml +7 -0
  2. data/.env.example +4 -0
  3. data/.github/workflows/release.yml +106 -0
  4. data/.github/workflows/tests.yml +93 -0
  5. data/.gitignore +146 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +7 -0
  8. data/Gemfile.lock +36 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +551 -0
  11. data/Rakefile +25 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/thecompaniesapi/client.rb +643 -0
  15. data/lib/thecompaniesapi/error.rb +28 -0
  16. data/lib/thecompaniesapi/generated/models/action.rb +91 -0
  17. data/lib/thecompaniesapi/generated/models/company_v2.rb +136 -0
  18. data/lib/thecompaniesapi/generated/models/email_pattern.rb +51 -0
  19. data/lib/thecompaniesapi/generated/models/job_title.rb +81 -0
  20. data/lib/thecompaniesapi/generated/models/list.rb +141 -0
  21. data/lib/thecompaniesapi/generated/models/list_analytics.rb +46 -0
  22. data/lib/thecompaniesapi/generated/models/llmanswer.rb +66 -0
  23. data/lib/thecompaniesapi/generated/models/nominatim_city.rb +101 -0
  24. data/lib/thecompaniesapi/generated/models/nominatim_continent.rb +111 -0
  25. data/lib/thecompaniesapi/generated/models/nominatim_country.rb +121 -0
  26. data/lib/thecompaniesapi/generated/models/nominatim_county.rb +96 -0
  27. data/lib/thecompaniesapi/generated/models/nominatim_state.rb +96 -0
  28. data/lib/thecompaniesapi/generated/models/page_contents_ideated.rb +171 -0
  29. data/lib/thecompaniesapi/generated/models/page_contents_link.rb +41 -0
  30. data/lib/thecompaniesapi/generated/models/page_contents_page.rb +71 -0
  31. data/lib/thecompaniesapi/generated/models/pagination_meta.rb +76 -0
  32. data/lib/thecompaniesapi/generated/models/prompt.rb +91 -0
  33. data/lib/thecompaniesapi/generated/models/segmentation_condition.rb +56 -0
  34. data/lib/thecompaniesapi/generated/models/team.rb +101 -0
  35. data/lib/thecompaniesapi/generated/models/technology.rb +96 -0
  36. data/lib/thecompaniesapi/generated/models/user.rb +101 -0
  37. data/lib/thecompaniesapi/generated/operations_map.rb +11 -0
  38. data/lib/thecompaniesapi/generated/requests/ask_company_request.rb +60 -0
  39. data/lib/thecompaniesapi/generated/requests/count_companies_post_request.rb +50 -0
  40. data/lib/thecompaniesapi/generated/requests/create_list_request.rb +70 -0
  41. data/lib/thecompaniesapi/generated/requests/export_companies_analytics_request.rb +70 -0
  42. data/lib/thecompaniesapi/generated/requests/fetch_companies_in_list_post_request.rb +70 -0
  43. data/lib/thecompaniesapi/generated/requests/product_prompt_request.rb +65 -0
  44. data/lib/thecompaniesapi/generated/requests/prompt_to_segmentation_request.rb +55 -0
  45. data/lib/thecompaniesapi/generated/requests/request_action_request.rb +80 -0
  46. data/lib/thecompaniesapi/generated/requests/retry_action_request.rb +30 -0
  47. data/lib/thecompaniesapi/generated/requests/search_companies_post_request.rb +90 -0
  48. data/lib/thecompaniesapi/generated/requests/toggle_companies_in_list_request.rb +50 -0
  49. data/lib/thecompaniesapi/generated/requests/update_list_request.rb +65 -0
  50. data/lib/thecompaniesapi/generated/requests/update_team_request.rb +45 -0
  51. data/lib/thecompaniesapi/generated/responses/ask_company_response.rb +38 -0
  52. data/lib/thecompaniesapi/generated/responses/count_companies_post_response.rb +34 -0
  53. data/lib/thecompaniesapi/generated/responses/count_companies_response.rb +34 -0
  54. data/lib/thecompaniesapi/generated/responses/create_list_response.rb +25 -0
  55. data/lib/thecompaniesapi/generated/responses/delete_list_response.rb +25 -0
  56. data/lib/thecompaniesapi/generated/responses/delete_prompt_response.rb +25 -0
  57. data/lib/thecompaniesapi/generated/responses/enrich_job_titles_response.rb +25 -0
  58. data/lib/thecompaniesapi/generated/responses/export_companies_analytics_response.rb +38 -0
  59. data/lib/thecompaniesapi/generated/responses/fetch_actions_response.rb +38 -0
  60. data/lib/thecompaniesapi/generated/responses/fetch_api_health_response.rb +42 -0
  61. data/lib/thecompaniesapi/generated/responses/fetch_companies_analytics_response.rb +38 -0
  62. data/lib/thecompaniesapi/generated/responses/fetch_companies_in_list_post_response.rb +42 -0
  63. data/lib/thecompaniesapi/generated/responses/fetch_companies_in_list_response.rb +42 -0
  64. data/lib/thecompaniesapi/generated/responses/fetch_company_by_email_response.rb +42 -0
  65. data/lib/thecompaniesapi/generated/responses/fetch_company_by_social_response.rb +25 -0
  66. data/lib/thecompaniesapi/generated/responses/fetch_company_context_response.rb +38 -0
  67. data/lib/thecompaniesapi/generated/responses/fetch_company_email_patterns_response.rb +25 -0
  68. data/lib/thecompaniesapi/generated/responses/fetch_company_in_list_response.rb +25 -0
  69. data/lib/thecompaniesapi/generated/responses/fetch_company_response.rb +25 -0
  70. data/lib/thecompaniesapi/generated/responses/fetch_lists_response.rb +38 -0
  71. data/lib/thecompaniesapi/generated/responses/fetch_open_api_response.rb +30 -0
  72. data/lib/thecompaniesapi/generated/responses/fetch_prompts_response.rb +38 -0
  73. data/lib/thecompaniesapi/generated/responses/fetch_team_response.rb +25 -0
  74. data/lib/thecompaniesapi/generated/responses/fetch_user_response.rb +25 -0
  75. data/lib/thecompaniesapi/generated/responses/product_prompt_response.rb +42 -0
  76. data/lib/thecompaniesapi/generated/responses/prompt_to_segmentation_response.rb +42 -0
  77. data/lib/thecompaniesapi/generated/responses/request_action_response.rb +34 -0
  78. data/lib/thecompaniesapi/generated/responses/retry_action_response.rb +34 -0
  79. data/lib/thecompaniesapi/generated/responses/search_cities_response.rb +38 -0
  80. data/lib/thecompaniesapi/generated/responses/search_companies_by_name_response.rb +38 -0
  81. data/lib/thecompaniesapi/generated/responses/search_companies_by_prompt_response.rb +38 -0
  82. data/lib/thecompaniesapi/generated/responses/search_companies_post_response.rb +42 -0
  83. data/lib/thecompaniesapi/generated/responses/search_companies_response.rb +42 -0
  84. data/lib/thecompaniesapi/generated/responses/search_continents_response.rb +38 -0
  85. data/lib/thecompaniesapi/generated/responses/search_counties_response.rb +38 -0
  86. data/lib/thecompaniesapi/generated/responses/search_countries_response.rb +38 -0
  87. data/lib/thecompaniesapi/generated/responses/search_industries_response.rb +38 -0
  88. data/lib/thecompaniesapi/generated/responses/search_industries_similar_response.rb +38 -0
  89. data/lib/thecompaniesapi/generated/responses/search_similar_companies_response.rb +38 -0
  90. data/lib/thecompaniesapi/generated/responses/search_states_response.rb +38 -0
  91. data/lib/thecompaniesapi/generated/responses/search_technologies_response.rb +38 -0
  92. data/lib/thecompaniesapi/generated/responses/toggle_companies_in_list_response.rb +25 -0
  93. data/lib/thecompaniesapi/generated/responses/update_list_response.rb +25 -0
  94. data/lib/thecompaniesapi/generated/responses/update_team_response.rb +25 -0
  95. data/lib/thecompaniesapi/http_client.rb +146 -0
  96. data/lib/thecompaniesapi/version.rb +3 -0
  97. data/lib/thecompaniesapi.rb +7 -0
  98. data/script/generate_client.rb +653 -0
  99. data/thecompaniesapi.gemspec +34 -0
  100. metadata +188 -0
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TheCompaniesAPI
4
+ module Generated
5
+ module Responses
6
+ ##
7
+ # SearchTechnologiesResponse - API response class
8
+ #
9
+ #
10
+ #
11
+ class SearchTechnologiesResponse
12
+ # @return [Object] meta
13
+ attr_reader :meta
14
+
15
+ # @return [Array] technologies
16
+ attr_reader :technologies
17
+
18
+ ##
19
+ # Initialize a new SearchTechnologiesResponse
20
+ #
21
+ # @param data [Hash] Response data
22
+ def initialize(data = {})
23
+ @meta = convert_property(data['meta'], 'meta')
24
+ @technologies = convert_property(data['technologies'], 'technologies')
25
+ end
26
+
27
+ private
28
+
29
+ def convert_property(value, property)
30
+ case property
31
+ else
32
+ value
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TheCompaniesAPI
4
+ module Generated
5
+ module Responses
6
+ ##
7
+ # ToggleCompaniesInListResponse - API response class
8
+ #
9
+ #
10
+ #
11
+ class ToggleCompaniesInListResponse
12
+ # @return [Object] Response data
13
+ attr_reader :data
14
+
15
+ ##
16
+ # Initialize a new ToggleCompaniesInListResponse
17
+ #
18
+ # @param data [Object] Response data
19
+ def initialize(data = nil)
20
+ @data = data
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TheCompaniesAPI
4
+ module Generated
5
+ module Responses
6
+ ##
7
+ # UpdateListResponse - API response class
8
+ #
9
+ #
10
+ #
11
+ class UpdateListResponse
12
+ # @return [Object] Response data
13
+ attr_reader :data
14
+
15
+ ##
16
+ # Initialize a new UpdateListResponse
17
+ #
18
+ # @param data [Object] Response data
19
+ def initialize(data = nil)
20
+ @data = data
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TheCompaniesAPI
4
+ module Generated
5
+ module Responses
6
+ ##
7
+ # UpdateTeamResponse - API response class
8
+ #
9
+ #
10
+ #
11
+ class UpdateTeamResponse
12
+ # @return [Object] Response data
13
+ attr_reader :data
14
+
15
+ ##
16
+ # Initialize a new UpdateTeamResponse
17
+ #
18
+ # @param data [Object] Response data
19
+ def initialize(data = nil)
20
+ @data = data
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,146 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'faraday/net_http'
5
+ require 'json'
6
+ require 'base64'
7
+ require 'cgi'
8
+
9
+ module TheCompaniesAPI
10
+ class HttpClient
11
+ DEFAULT_API_URL = 'https://api.thecompaniesapi.com'
12
+ DEFAULT_TIMEOUT = 300
13
+
14
+ attr_reader :api_token, :api_url, :visitor_id, :connection
15
+
16
+ def initialize(api_token: nil, api_url: nil, visitor_id: nil)
17
+ @api_token = api_token
18
+ @api_url = api_url || DEFAULT_API_URL
19
+ @visitor_id = visitor_id
20
+
21
+ @connection = build_connection
22
+ end
23
+
24
+ # HTTP method helpers
25
+ def get(path, params: {})
26
+ handle_response do
27
+ connection.get(path, params)
28
+ end
29
+ end
30
+
31
+ def post(path, body: {})
32
+ handle_response do
33
+ connection.post(path, body)
34
+ end
35
+ end
36
+
37
+ def put(path, body: {})
38
+ handle_response do
39
+ connection.put(path, body)
40
+ end
41
+ end
42
+
43
+ def patch(path, body: {})
44
+ handle_response do
45
+ connection.patch(path, body)
46
+ end
47
+ end
48
+
49
+ def delete(path, params: {})
50
+ handle_response do
51
+ connection.delete(path, params)
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def build_connection
58
+ Faraday.new(@api_url) do |conn|
59
+ conn.adapter :net_http
60
+ conn.options[:timeout] = DEFAULT_TIMEOUT
61
+ conn.options[:open_timeout] = 30
62
+
63
+ # Add authentication and visitor ID headers
64
+ conn.request :authorization, 'Basic', @api_token if @api_token
65
+ conn.headers['Tca-Visitor-Id'] = @visitor_id if @visitor_id
66
+ conn.headers['User-Agent'] = "thecompaniesapi-ruby/#{TheCompaniesAPI::VERSION}"
67
+ conn.headers['Content-Type'] = 'application/json'
68
+
69
+ # Add middleware for request/response handling
70
+ conn.request :json
71
+ conn.response :json, content_type: /\bjson$/
72
+
73
+ # Custom middleware for query parameter serialization
74
+ conn.use QuerySerializer
75
+ end
76
+ end
77
+
78
+ # Custom Faraday middleware for query serialization
79
+ class QuerySerializer < Faraday::Middleware
80
+ def call(env)
81
+ if env.method == :get && env.params && !env.params.empty?
82
+ env.url.query = serialize_params(env.params)
83
+ env.params = {}
84
+ end
85
+ @app.call(env)
86
+ end
87
+
88
+ private
89
+
90
+ def serialize_params(params)
91
+ search_params = []
92
+
93
+ params.each do |key, value|
94
+ case value
95
+ when Hash, Array
96
+ # JSON stringify objects and arrays, then URL encode
97
+ encoded_value = CGI.escape(JSON.generate(value))
98
+ search_params << "#{key}=#{encoded_value}"
99
+ when nil
100
+ # Skip nil values
101
+ next
102
+ else
103
+ # Convert to string and URL encode
104
+ encoded_value = CGI.escape(value.to_s)
105
+ search_params << "#{key}=#{encoded_value}"
106
+ end
107
+ end
108
+
109
+ search_params.join('&')
110
+ end
111
+ end
112
+
113
+ def handle_response
114
+ response = yield
115
+
116
+ case response.status
117
+ when 200..299
118
+ response.body
119
+ when 400..499
120
+ raise TheCompaniesAPI::Error::ClientError.new(
121
+ "Client error: #{response.status}",
122
+ response.status,
123
+ response.body
124
+ )
125
+ when 500..599
126
+ raise TheCompaniesAPI::Error::ServerError.new(
127
+ "Server error: #{response.status}",
128
+ response.status,
129
+ response.body
130
+ )
131
+ else
132
+ raise TheCompaniesAPI::Error::APIError.new(
133
+ "Unexpected response: #{response.status}",
134
+ response.status,
135
+ response.body
136
+ )
137
+ end
138
+ rescue Faraday::TimeoutError => e
139
+ raise TheCompaniesAPI::Error::TimeoutError.new("Request timeout: #{e.message}")
140
+ rescue Faraday::ConnectionFailed => e
141
+ raise TheCompaniesAPI::Error::ConnectionError.new("Connection failed: #{e.message}")
142
+ rescue => e
143
+ raise TheCompaniesAPI::Error::APIError.new("Unexpected error: #{e.message}")
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,3 @@
1
+ module TheCompaniesAPI
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,7 @@
1
+ require 'thecompaniesapi/version'
2
+
3
+ module TheCompaniesAPI
4
+ autoload :HttpClient, "thecompaniesapi/http_client"
5
+ autoload :Client, "thecompaniesapi/client"
6
+ autoload :Error, "thecompaniesapi/error"
7
+ end