peasy-image 0.1.1 → 0.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: cc8e9b67b149980274f8a20ac8571532e6b6e811c07a4afb0612188df07e86c2
4
- data.tar.gz: 100c9b47f4a8cb3a1213cd77835dbb65ac49822b4e5c7dff794274a5abd14627
3
+ metadata.gz: 0f8b50c2014844839f008054357d0e7fcb0a1ea9d8c0dea0115f17dab7cf671d
4
+ data.tar.gz: b3f2de00639de1da4e11382f2464c1108ab60f9d65efbe37622f83305a7bacf7
5
5
  SHA512:
6
- metadata.gz: ec0faba71cb2afb60840f09ed253d7285803ac6dc0ca25cae6cabd86a28d1667b2ebaad70da1f8e6cee875a2e16753855c8bd005b4fda54ebdd3b8ab50b0708f
7
- data.tar.gz: 4d3bb8f3b035e809da6f40d04f9bb90b72f224cf07671cf92c8d988a76c73f8da3a3454b10a9bbb9270b394dbc55dd7fc6698ac1d1cf38d792c28bc847e094bc
6
+ metadata.gz: 5857d155f78b779d1bee717d4f23accf9b25d6ab5ad6dfd5e45e81e4be03d76d15e38c52739ee8a69f6fe074be1aa61dd3f0ee9d49d74ec62eff3617cd9ef930
7
+ data.tar.gz: 9c588047467886864e2f4de2280256ccb52d4ab9f5a4585c807f0b4b2f19f79c36c03274f82748d9a910c97e696de946b330f4cdf99746ec5284d09b2d71ed47
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "json"
5
+ require "uri"
6
+
7
+ module PeasyImage
8
+ # REST API client for peasyimage.com.
9
+ # Zero dependencies — uses Ruby stdlib only.
10
+ class Client
11
+ DEFAULT_BASE_URL = "https://peasyimage.com"
12
+
13
+ def initialize(base_url: DEFAULT_BASE_URL)
14
+ @base_url = base_url.chomp("/")
15
+ end
16
+
17
+ # --- Tools ---
18
+
19
+ def list_tools(page: 1, limit: 50, category: nil, search: nil)
20
+ get("/api/v1/tools/", page: page, limit: limit, category: category, search: search)
21
+ end
22
+
23
+ def get_tool(slug)
24
+ get("/api/v1/tools/#{slug}/")
25
+ end
26
+
27
+ # --- Categories ---
28
+
29
+ def list_categories(page: 1, limit: 50)
30
+ get("/api/v1/categories/", page: page, limit: limit)
31
+ end
32
+
33
+ # --- Formats ---
34
+
35
+ def list_formats(page: 1, limit: 50, category: nil, search: nil)
36
+ get("/api/v1/formats/", page: page, limit: limit, category: category, search: search)
37
+ end
38
+
39
+ def get_format(slug)
40
+ get("/api/v1/formats/#{slug}/")
41
+ end
42
+
43
+ # --- Conversions ---
44
+
45
+ def list_conversions(page: 1, limit: 50, source: nil, target: nil)
46
+ get("/api/v1/conversions/", page: page, limit: limit, source: source, target: target)
47
+ end
48
+
49
+ # --- Glossary ---
50
+
51
+ def list_glossary(page: 1, limit: 50, category: nil, search: nil)
52
+ get("/api/v1/glossary/", page: page, limit: limit, category: category, search: search)
53
+ end
54
+
55
+ def get_glossary_term(slug)
56
+ get("/api/v1/glossary/#{slug}/")
57
+ end
58
+
59
+ # --- Guides ---
60
+
61
+ def list_guides(page: 1, limit: 50, category: nil, audience_level: nil, search: nil)
62
+ get("/api/v1/guides/", page: page, limit: limit, category: category,
63
+ audience_level: audience_level, search: search)
64
+ end
65
+
66
+ def get_guide(slug)
67
+ get("/api/v1/guides/#{slug}/")
68
+ end
69
+
70
+ # --- Use Cases ---
71
+
72
+ def list_use_cases(page: 1, limit: 50, industry: nil, search: nil)
73
+ get("/api/v1/use-cases/", page: page, limit: limit, industry: industry, search: search)
74
+ end
75
+
76
+ # --- Search ---
77
+
78
+ def search(query, limit: 20)
79
+ get("/api/v1/search/", q: query, limit: limit)
80
+ end
81
+
82
+ # --- Sites ---
83
+
84
+ def list_sites
85
+ get("/api/v1/sites/")
86
+ end
87
+
88
+ # --- OpenAPI ---
89
+
90
+ def openapi_spec
91
+ get("/api/openapi.json")
92
+ end
93
+
94
+ private
95
+
96
+ def get(path, **params)
97
+ uri = URI("#{@base_url}#{path}")
98
+ params.reject! { |_, v| v.nil? }
99
+ uri.query = URI.encode_www_form(params) unless params.empty?
100
+ response = Net::HTTP.get_response(uri)
101
+ body = JSON.parse(response.body)
102
+ unless response.is_a?(Net::HTTPSuccess)
103
+ detail = body.is_a?(Hash) ? body.fetch("detail", "Unknown error") : response.body
104
+ raise PeasyImage::Error, "HTTP #{response.code}: #{detail}"
105
+ end
106
+ body
107
+ end
108
+ end
109
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PeasyImage
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/peasy_image.rb CHANGED
@@ -2,3 +2,4 @@
2
2
 
3
3
  require_relative "peasy_image/version"
4
4
  require_relative "peasy_image/engine"
5
+ require_relative "peasy_image/client"
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peasy-image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PeasyTools
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-03-17 00:00:00.000000000 Z
11
12
  dependencies: []
12
13
  description: Image processing library for Ruby — resize, crop, compress, convert between
13
14
  formats, and add watermarks. Uses ImageMagick/GraphicsMagick via system CLI.
@@ -18,6 +19,7 @@ extensions: []
18
19
  extra_rdoc_files: []
19
20
  files:
20
21
  - lib/peasy_image.rb
22
+ - lib/peasy_image/client.rb
21
23
  - lib/peasy_image/engine.rb
22
24
  - lib/peasy_image/version.rb
23
25
  homepage: https://peasyimage.com
@@ -29,6 +31,7 @@ metadata:
29
31
  changelog_uri: https://github.com/peasytools/peasy-image-rb/blob/main/CHANGELOG.md
30
32
  documentation_uri: https://peasyimage.com
31
33
  bug_tracker_uri: https://github.com/peasytools/peasy-image-rb/issues
34
+ post_install_message:
32
35
  rdoc_options: []
33
36
  require_paths:
34
37
  - lib
@@ -43,7 +46,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
46
  - !ruby/object:Gem::Version
44
47
  version: '0'
45
48
  requirements: []
46
- rubygems_version: 4.0.3
49
+ rubygems_version: 3.0.3.1
50
+ signing_key:
47
51
  specification_version: 4
48
52
  summary: Image processing — resize, crop, compress, convert, watermark
49
53
  test_files: []