kagi-api 0.0.0 → 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: d75c5cc76c25528a0d8b03cdbd37b498c0e3a99f6a349b16fcca2deaf7d997d7
4
- data.tar.gz: 8916021276b36793878675e07a17d87c0133c5205a618ccb5df44a787dbc365e
3
+ metadata.gz: b5a6cd75a9dd52bc9bcdd945345ef999f1e211ba0b58544435cce1febb126127
4
+ data.tar.gz: 8b8f608ddb63d597d490e7fb226769f771cdc68079e866198e0a9593be0a93b8
5
5
  SHA512:
6
- metadata.gz: a109a93bda6740d5ff4294c940954717a4d1b7cc143d6ecf4838ab6787b58cce7356e3851344f4fea0d6a247bdaaf492e7b4df0689e81308bb9122daf3ed5164
7
- data.tar.gz: a986438e6e5ebc0ccefcca9d6c507c43e635d10e896fa9cf7e214114c9b74e50b4cc9ee972f56449141e42e872b9dab7bbdc5c28d7717d96e935b892bc13bdf2
6
+ metadata.gz: ae44593cf9d78fe872b948e03afa12bb85002b8a33cf2cf40951ec10fb63ee5ec15024120b3206c8233570f570bc9595ec5f57eb97e1676ad0be71e57d3979f6
7
+ data.tar.gz: '0934fa25e546489da85eb10ee9efb7611c68652e530fcd088f85c5fbd905e340f1d9639ab5721007aff1162a6ed6cc2305044566bf3fb636674c2e0e2ba6f82c'
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  A monadic API client for {kagi_link} privacy focused information. This allows you to access the full Kagi API using a fault tolerant pipeline to yield whole value objects (i.e. {data_link}) for immediate interaction within your own applications.
12
12
 
13
+ ⚠️ *Roughly ~2% of funds go to Yandex search results that Kagi uses in their searches. Unfortunately, Yandex is a Russian company that helps fund corrupt propaganda, the killing of Ukrainians, and other despicable acts. I was not aware of this when I wrote this API client which also violates my software license. More can be found link:https://kagifeedback.org/d/5445-reconsider-yandex-integration-due-to-the-geopolitical-status-quo[here].*
14
+
13
15
  toc::[]
14
16
 
15
17
  == Features
@@ -61,7 +63,7 @@ This client provides access to multiple endpoints. Each endpoint will answer eit
61
63
 
62
64
  [source,ruby]
63
65
  ----
64
- client = Kagi::API::Client.new
66
+ client = Kagi::API.new
65
67
 
66
68
  case client.fast query: "Ruby"
67
69
  in Success(payload) then puts payload
@@ -78,7 +80,7 @@ You can configure the client using a block and adjusting the `content_type`, `to
78
80
 
79
81
  [source,ruby]
80
82
  ----
81
- client = Kagi::API::Client.new do |settings| settings.token = "secret" }
83
+ client = Kagi::API.new do |settings| settings.token = "secret" }
82
84
  client.fast query: "Ruby"
83
85
  ----
84
86
 
@@ -86,7 +88,7 @@ If you don't configure the client, then the following defaults will be used:
86
88
 
87
89
  [source,ruby]
88
90
  ----
89
- client = Kagi::API::Client.new do |settings|
91
+ client = Kagi::API.new do |settings|
90
92
  settings.content_type = "application/json"
91
93
  settings.token = nil
92
94
  settings.uri = "https://kagi.com/api/v0"
data/kagi-api.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "kagi-api"
5
- spec.version = "0.0.0"
5
+ spec.version = "0.1.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/kagi-api"
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency "http", "~> 5.2"
30
30
  spec.add_dependency "infusible", "~> 4.3"
31
31
  spec.add_dependency "initable", "~> 0.4"
32
+ spec.add_dependency "inspectable", "~> 0.3"
32
33
  spec.add_dependency "pipeable", "~> 1.3"
33
34
  spec.add_dependency "zeitwerk", "~> 2.7"
34
35
 
@@ -1,10 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "inspectable"
4
+
3
5
  module Kagi
4
6
  module API
5
7
  module Configuration
6
8
  # Defines customizable API configuration content.
7
9
  Content = Struct.new :content_type, :token, :uri do
10
+ include Inspectable[token: :redact]
11
+
8
12
  def headers = {"Content-Type" => content_type}.compact
9
13
  end
10
14
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/monads"
4
+ require "inspectable"
4
5
  require "pipeable"
5
6
 
6
7
  module Kagi
@@ -19,6 +20,7 @@ module Kagi
19
20
 
20
21
  include Dry::Monads[:result]
21
22
  include Pipeable
23
+ include Inspectable[contract: :class, error_contract: :class]
22
24
 
23
25
  def call(**params)
24
26
  result = requester.get("enrich/news", **params)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/monads"
4
+ require "inspectable"
4
5
  require "pipeable"
5
6
 
6
7
  module Kagi
@@ -19,6 +20,7 @@ module Kagi
19
20
 
20
21
  include Dry::Monads[:result]
21
22
  include Pipeable
23
+ include Inspectable[contract: :class, error_contract: :class]
22
24
 
23
25
  def call(**params)
24
26
  result = requester.get("enrich/web", **params)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/monads"
4
+ require "inspectable"
4
5
  require "pipeable"
5
6
 
6
7
  module Kagi
@@ -18,6 +19,7 @@ module Kagi
18
19
 
19
20
  include Dry::Monads[:result]
20
21
  include Pipeable
22
+ include Inspectable[contract: :class, error_contract: :class]
21
23
 
22
24
  def call(**params)
23
25
  result = requester.post("fastgpt", **params)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/monads"
4
+ require "inspectable"
4
5
  require "pipeable"
5
6
 
6
7
  module Kagi
@@ -18,6 +19,7 @@ module Kagi
18
19
 
19
20
  include Dry::Monads[:result]
20
21
  include Pipeable
22
+ include Inspectable[contract: :class, error_contract: :class]
21
23
 
22
24
  def call(**params)
23
25
  result = requester.get("search", **params)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "dry/monads"
4
+ require "inspectable"
4
5
  require "pipeable"
5
6
 
6
7
  module Kagi
@@ -18,6 +19,7 @@ module Kagi
18
19
 
19
20
  include Dry::Monads[:result]
20
21
  include Pipeable
22
+ include Inspectable[contract: :class, error_contract: :class]
21
23
 
22
24
  def call(**params)
23
25
  result = requester.post("summarize", **params)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kagi-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -119,6 +119,20 @@ dependencies:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0.4'
122
+ - !ruby/object:Gem::Dependency
123
+ name: inspectable
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '0.3'
129
+ type: :runtime
130
+ prerelease: false
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '0.3'
122
136
  - !ruby/object:Gem::Dependency
123
137
  name: pipeable
124
138
  requirement: !ruby/object:Gem::Requirement
@@ -214,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
228
  - !ruby/object:Gem::Version
215
229
  version: '0'
216
230
  requirements: []
217
- rubygems_version: 3.6.8
231
+ rubygems_version: 3.6.9
218
232
  specification_version: 4
219
233
  summary: A Kagi API client for privacy focused information.
220
234
  test_files: []
metadata.gz.sig CHANGED
Binary file