sucharyruby 1.0.0 → 1.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: 9663196acab2c9f57826c543809e4647c5bf6a289e25c3b5992bde463a19e40f
4
- data.tar.gz: fb21ddae8fffd21afa363eaae47dd05f87b9dd8508aab3818c2f9cc6dc9b490f
3
+ metadata.gz: a4f6a70f04bd57e8a4569c0bee784ccea800de1bc4000833aa3caaee100e850b
4
+ data.tar.gz: '04329a6c1138dcdb1763a57f60adc36827f93cf63a0517b799d7fba0dae78b10'
5
5
  SHA512:
6
- metadata.gz: eb44365a90ebc3c6c3ef55a2f29f9f6a7aed9aab1e57d3fe5fa5a2eb0f87a430fa1e8f6d54929f5989730c9bb90ec5486c0bc162b3de0b71484aa75990db13f1
7
- data.tar.gz: b32e8002226d10c301e560388a8091a7f654e03882756b42103807b9df49820596dd92b773efbd698f6ea4086d592a0a5696fdee852e92fc10e70f267a996174
6
+ metadata.gz: 48ed408b340d8ca6dfcf7a5ef2225da1c54649c9432cedd312a7e959ce8697169fc568040e7703df57fc408fecd79124be53b5af856df8b329ee352ff4cea3b6
7
+ data.tar.gz: 84d29d5115f6281163aa2969f335f289165019259a313f4b063d77707abdcae59f05152a40f003f5474593d9d7cff2291935c3c5476e0b2cb20893e4568a3fb0
data/README.md CHANGED
@@ -1,60 +1,80 @@
1
- # SucharyPL - oficjalna biblioteka bazy SucharyAPI
2
- Rubyowa biblioteka do pobierania kawałów z ogólnopolskiej bazy SucharyAPI
1
+ # SucharyRuby - oficjalna biblioteka bazy SucharyAPI
2
+ Biblioteka Ruby do pobierania kawałów z ogólnopolskiej bazy SucharyAPI
3
3
 
4
- [![Ruby Version](https://img.shields.io/badge/ruby-2.7%2B-red)](https://www.ruby-lang.org/)
4
+ [![Ruby Version](https://img.shields.io/badge/ruby-3.2%2B-red)](https://www.ruby-lang.org/)
5
5
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
6
6
 
7
7
  ---
8
8
 
9
9
  ## 🚀 Instalacja
10
10
  ### Za pomocą gem
11
-
12
11
  ```bash
13
12
  gem install sucharyruby
14
13
  ```
15
14
 
16
15
  ### Za pomocą Bundlera
17
-
18
- (W pliku Gemfile)
19
- ```ruby
20
- gem "sucharyruby"
21
- ```
22
-
23
- albo w nowym Bundlerze:
24
- (komenda)
25
16
  ```bash
26
17
  bundle add sucharyruby
27
18
  ```
28
19
 
29
20
  ---
30
21
 
31
- ## ⚡ Szybki start
22
+ ## ⚡ Suchary
32
23
  ### Pobranie losowego suchara
33
-
34
24
  ```ruby
35
25
  require "sucharyruby"
36
26
 
27
+ # Pobierz losowy suchar z dowolnej kategorii
37
28
  suchar = Sucharyruby.dajKawal
38
29
  puts suchar
39
30
  ```
40
31
 
41
32
  ### Pobranie suchara z konkretnej kategorii
42
-
43
33
  ```ruby
44
34
  require "sucharyruby"
45
35
 
46
- # Możesz użyć ciągu znaków:
36
+ # Pobierz suchar z kategorii "programowanie"
47
37
  suchar = Sucharyruby.dajKawal("programowanie")
38
+ puts suchar
39
+ ```
48
40
 
49
- # Albo użyć stałej z klasy Kategoria:
50
- suchar = Sucharyruby.dajKawal(Sucharyruby::Kategoria::PROGRAMOWANIE)
41
+ ### Pobranie większej liczby sucharów
42
+ ```ruby
43
+ require "sucharyruby"
51
44
 
52
- puts suchar
45
+ # Pobierz 3 suchary
46
+ suchary = Sucharyruby.wieleKawalow(3)
47
+ puts suchary
48
+
49
+ # Funkcja wieleKawalow() zwraca listę (array []) z żartami
53
50
  ```
54
51
 
55
52
  ---
56
53
 
57
- ## Kategorie
54
+ ## Masakry
55
+ ### Pobranie masakry
56
+ ```ruby
57
+ require "sucharyruby"
58
+
59
+ # Pobierz masakrę
60
+ masakra = Sucharyruby.masakra
61
+ puts masakra
62
+ ```
63
+
64
+ ### Pobranie większej liczby masakr
65
+ ```ruby
66
+ require "sucharyruby"
67
+
68
+ # Pobierz 3 masakry
69
+ masakry = Sucharyruby.wieleMasakr(3)
70
+ puts masakry
71
+
72
+ # Funkcja wieleMasakr() zwraca listę (array []) z masakrami
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Kategorie sucharów
58
78
  - `"programowanie"` - Suchary o programowaniu
59
79
  - `"dwuznaczne"` - Suchary dwuznaczne
60
80
  - `"szkolne"` - Suchary szkolne
@@ -66,45 +86,20 @@ puts suchar
66
86
  ---
67
87
 
68
88
  ## 🛡️ Obsługa błędów
69
-
70
89
  Biblioteka rzuca sformalizowane wyjątki, które możesz łatwo obsługiwać:
71
-
72
90
  ### Dostępne wyjątki
73
-
74
91
  - `Sucharyruby::SucharyError` - Bazowy wyjątek, rodzic wszystkich błędów z biblioteki
75
- - `Sucharyruby::KategoriaError` - Nieprawidłowa kategoria
76
- - `Sucharyruby::ConnectionError` - Problemy z połączeniem (brak internetu, timeout)
77
92
  - `Sucharyruby::HTTPError` - Błędy serwera (np. 404 dla nieistniejącej kategorii)
78
- - `Sucharyruby::TimeoutError` - Przekroczony limit czasu zapytania
79
-
80
- ### Przykład obsługi błędów
81
-
82
- ```ruby
83
- require "sucharyruby"
84
-
85
- begin
86
- suchar = Sucharyruby.dajKawal("programowanie")
87
- puts suchar
88
- rescue Sucharyruby::ConnectionError
89
- puts "❌ Błąd połączenia - sprawdź połączenie internetowe!"
90
- rescue Sucharyruby::HTTPError => e
91
- puts "❌ Błąd serwera: #{e.status} - #{e.message}"
92
- rescue Sucharyruby::KategoriaError => e
93
- puts "❌ Nieprawidłowa kategoria: #{e.message}"
94
- rescue Sucharyruby::SucharyError => e
95
- puts "❌ Nieoczekiwany błąd: #{e.message}"
96
- end
97
- ```
93
+ - `Sucharyruby::TimeoutError` - Żądanie przekroczyło limit czasu (6.5s)
94
+ - `Sucharyruby::ConnectionError` - Problemy z połączeniem (brak internetu)
98
95
 
99
96
  ---
100
97
 
101
98
  ## 📡 API
102
-
103
99
  Biblioteka jest produktem oraz korzysta z oficjalnej bazy SucharyAPI:
104
- 🔗 https://sucharyapi.onrender.com
100
+ 🔗 [https://sucharyapi.onrender.com](https://sucharyapi.onrender.com)
105
101
 
106
102
  ---
107
103
 
108
104
  ## 📝 Licencja
109
-
110
105
  MIT
data/example/example.rb CHANGED
@@ -22,4 +22,16 @@ rescue Sucharyruby::KategoriaError => e
22
22
  puts "Wyłapano błąd kategorii: #{e.message}"
23
23
  rescue Sucharyruby::SucharyError => e
24
24
  puts "Wyłapano ogólny błąd biblioteki: #{e.message}"
25
- end
25
+ end
26
+
27
+ # 4. Wiele żartów (3)
28
+ puts "\n4. Wiele żartów (3): "
29
+ puts Sucharyruby.wieleKawalow(3)
30
+
31
+ # 5. Masakra
32
+ puts "\n5. Masakra: "
33
+ puts Sucharyruby.masakra
34
+
35
+ # 6. Wiele masakr (3)
36
+ puts "\n6. Wiele masakr (3): "
37
+ puts Sucharyruby.wieleMasakr(3)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sucharyruby
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
data/lib/sucharyruby.rb CHANGED
@@ -35,6 +35,7 @@ module Sucharyruby
35
35
  # Customowe błędy
36
36
  class SucharyError < StandardError; end
37
37
  class KategoriaError < SucharyError; end
38
+ class IloscError < SucharyError; end
38
39
  class ConnectionError < SucharyError; end
39
40
  class HTTPError < SucharyError
40
41
  attr_reader :status
@@ -80,4 +81,74 @@ module Sucharyruby
80
81
  raise SucharyError, "Otrzymano niepoprawny format danych z serwera: #{e.message}"
81
82
  end
82
83
  end
84
+
85
+ def self.wieleKawalow(ilosc)
86
+ dane = pobierz_json("/zart/#{zwaliduj_ilosc(ilosc)}")
87
+ unless dane.is_a?(Array)
88
+ raise SucharyError, "Serwer zwrócił niepoprawną listę kawałów"
89
+ end
90
+
91
+ dane.map do |zart|
92
+ unless zart.is_a?(Hash) && zart["tresc"].is_a?(String)
93
+ raise SucharyError, "Serwer zwrócił niepoprawny kawał"
94
+ end
95
+
96
+ zart["tresc"]
97
+ end
98
+ end
99
+
100
+ def self.masakra
101
+ dane = pobierz_json("/masakra")
102
+ unless dane.is_a?(Hash) && dane["masakra"].is_a?(String)
103
+ raise SucharyError, "Serwer zwrócił niepoprawną masakrę"
104
+ end
105
+
106
+ dane["masakra"]
107
+ end
108
+
109
+ def self.wieleMasakr(ilosc)
110
+ dane = pobierz_json("/masakra/#{zwaliduj_ilosc(ilosc)}")
111
+ unless dane.is_a?(Array)
112
+ raise SucharyError, "Serwer zwrócił niepoprawną listę masakr"
113
+ end
114
+
115
+ dane.map do |masakra|
116
+ unless masakra.is_a?(Hash) && masakra["masakra"].is_a?(String)
117
+ raise SucharyError, "Serwer zwrócił niepoprawną masakrę"
118
+ end
119
+
120
+ masakra["masakra"]
121
+ end
122
+ end
123
+
124
+ def self.zwaliduj_ilosc(ilosc)
125
+ unless ilosc.is_a?(Integer) && ilosc.positive?
126
+ raise IloscError, "Ilość musi być dodatnią liczbą całkowitą"
127
+ end
128
+
129
+ ilosc
130
+ end
131
+ private_class_method :zwaliduj_ilosc
132
+
133
+ def self.pobierz_json(sciezka)
134
+ adres = URI.parse("https://sucharyapi.onrender.com#{sciezka}")
135
+ http = Net::HTTP.new(adres.host, adres.port)
136
+ http.use_ssl = (adres.scheme == "https")
137
+ http.open_timeout = 6.5
138
+ http.read_timeout = 6.5
139
+ odpowiedz = http.request(Net::HTTP::Get.new(adres))
140
+
141
+ unless odpowiedz.is_a?(Net::HTTPSuccess)
142
+ raise HTTPError.new(odpowiedz.code.to_i, "Serwer zwrócił kod błędu #{odpowiedz.code}")
143
+ end
144
+
145
+ JSON.parse(odpowiedz.body)
146
+ rescue Net::OpenTimeout, Net::ReadTimeout => e
147
+ raise TimeoutError, "Zapytanie przekroczyło limit czasu: #{e.message}"
148
+ rescue SocketError, Errno::ECONNREFUSED => e
149
+ raise ConnectionError, "Błąd połączenia z serwerem: #{e.message}"
150
+ rescue JSON::ParserError => e
151
+ raise SucharyError, "Otrzymano niepoprawny format danych z serwera: #{e.message}"
152
+ end
153
+ private_class_method :pobierz_json
83
154
  end
data/sig/sucharyruby.rbs CHANGED
@@ -1,4 +1,7 @@
1
1
  module Sucharyruby
2
2
  VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
3
+ def self.wieleKawalow: (Integer ilosc) -> Array[String]
4
+ def self.wieleZartow: (Integer ilosc) -> Array[String]
5
+ def self.masakra: () -> String
6
+ def self.wieleMasakr: (Integer ilosc) -> Array[String]
4
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sucharyruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SucharyAPI