mineralfyi 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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/mineralfyi.rb +143 -0
  3. metadata +47 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: deff232691cb4b29c6fddd4570f77d12d18a826417880e02bb6480e3f8a6db2d
4
+ data.tar.gz: 6c2c6b5003ffc34c2f023b3b990fb5757afee9d08f6dc72e20931b68670f751e
5
+ SHA512:
6
+ metadata.gz: 833564712815e52a5da7cbb88801977423b01a7b6b236f9c75ff959f812188fe0471aa7e50b0193ffbbf21e198756ffb079a2658cef31ea59a0bc1958cc84a06
7
+ data.tar.gz: fb47cb9eed25ba552844d7e70aa5c62f314815f43e210e4ef2aefa0ec5a210a105a082c6d8b19484050fc5d732201b84afae0e3022725cd0d03e1a0ee5fb9303
data/lib/mineralfyi.rb ADDED
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "json"
5
+ require "uri"
6
+
7
+ # Ruby client for MineralFYI REST API (mineralfyi.com).
8
+ #
9
+ # client = MineralFYI::Client.new
10
+ # result = client.search("query")
11
+ #
12
+ module MineralFYI
13
+ class Client
14
+ BASE_URL = "https://mineralfyi.com"
15
+
16
+ def initialize(base_url: BASE_URL)
17
+ @base_url = base_url
18
+ end
19
+
20
+ def search(query)
21
+ get("/api/v1/search/", q: query)
22
+ end
23
+
24
+ # List all classes.
25
+ def list_classes
26
+ get("/api/v1/classes/")
27
+ end
28
+
29
+ # Get classe by slug.
30
+ def get_classe(slug)
31
+ get("/api/v1/classes/#{slug}/")
32
+ end
33
+ # List all comparisons.
34
+ def list_comparisons
35
+ get("/api/v1/comparisons/")
36
+ end
37
+
38
+ # Get comparison by slug.
39
+ def get_comparison(slug)
40
+ get("/api/v1/comparisons/#{slug}/")
41
+ end
42
+ # List all countries.
43
+ def list_countries
44
+ get("/api/v1/countries/")
45
+ end
46
+
47
+ # Get country by slug.
48
+ def get_country(slug)
49
+ get("/api/v1/countries/#{slug}/")
50
+ end
51
+ # List all crystal systems.
52
+ def list_crystal_systems
53
+ get("/api/v1/crystal-systems/")
54
+ end
55
+
56
+ # Get crystal system by slug.
57
+ def get_crystal_system(slug)
58
+ get("/api/v1/crystal-systems/#{slug}/")
59
+ end
60
+ # List all faqs.
61
+ def list_faqs
62
+ get("/api/v1/faqs/")
63
+ end
64
+
65
+ # Get faq by slug.
66
+ def get_faq(slug)
67
+ get("/api/v1/faqs/#{slug}/")
68
+ end
69
+ # List all glossary.
70
+ def list_glossary
71
+ get("/api/v1/glossary/")
72
+ end
73
+
74
+ # Get term by slug.
75
+ def get_term(slug)
76
+ get("/api/v1/glossary/#{slug}/")
77
+ end
78
+ # List all glossary categories.
79
+ def list_glossary_categories
80
+ get("/api/v1/glossary-categories/")
81
+ end
82
+
83
+ # Get glossary category by slug.
84
+ def get_glossary_category(slug)
85
+ get("/api/v1/glossary-categories/#{slug}/")
86
+ end
87
+ # List all guide series.
88
+ def list_guide_series
89
+ get("/api/v1/guide-series/")
90
+ end
91
+
92
+ # Get guide sery by slug.
93
+ def get_guide_sery(slug)
94
+ get("/api/v1/guide-series/#{slug}/")
95
+ end
96
+ # List all guides.
97
+ def list_guides
98
+ get("/api/v1/guides/")
99
+ end
100
+
101
+ # Get guide by slug.
102
+ def get_guide(slug)
103
+ get("/api/v1/guides/#{slug}/")
104
+ end
105
+ # List all localities.
106
+ def list_localities
107
+ get("/api/v1/localities/")
108
+ end
109
+
110
+ # Get locality by slug.
111
+ def get_locality(slug)
112
+ get("/api/v1/localities/#{slug}/")
113
+ end
114
+ # List all minerals.
115
+ def list_minerals
116
+ get("/api/v1/minerals/")
117
+ end
118
+
119
+ # Get mineral by slug.
120
+ def get_mineral(slug)
121
+ get("/api/v1/minerals/#{slug}/")
122
+ end
123
+ # List all rock types.
124
+ def list_rock_types
125
+ get("/api/v1/rock-types/")
126
+ end
127
+
128
+ # Get rock type by slug.
129
+ def get_rock_type(slug)
130
+ get("/api/v1/rock-types/#{slug}/")
131
+ end
132
+
133
+ private
134
+
135
+ def get(path, **params)
136
+ uri = URI.join(@base_url, path)
137
+ uri.query = URI.encode_www_form(params) unless params.empty?
138
+ response = Net::HTTP.get_response(uri)
139
+ raise "HTTP #{response.code}" unless response.is_a?(Net::HTTPSuccess)
140
+ JSON.parse(response.body)
141
+ end
142
+ end
143
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mineralfyi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - FYIPedia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-03-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Ruby client for the MineralFYI REST API at mineralfyi.com. Zero external
14
+ dependencies.
15
+ email: dev@fyipedia.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/mineralfyi.rb
21
+ homepage: https://mineralfyi.com
22
+ licenses:
23
+ - MIT
24
+ metadata:
25
+ source_code_uri: https://github.com/fyipedia/mineralfyi-rb
26
+ documentation_uri: https://mineralfyi.com/api/v1/schema/
27
+ homepage_uri: https://mineralfyi.com
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '3.0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubygems_version: 3.0.3.1
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Ruby client for MineralFYI API
47
+ test_files: []