planefyi 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/planefyi.rb +125 -0
  3. metadata +47 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fb02656268ede0a182542749cd19bcb42d21bc8dcd759bc9470f10f16369cbc4
4
+ data.tar.gz: b0f6e86bab00df91be13e18c66fc7bf51e2ffb4dd9b8db3af4258c43566406a8
5
+ SHA512:
6
+ metadata.gz: 713f2a658b3e5141d49bd816f1f8c61591646a538d99f112f69e752a8116804db74c0d28c1cf1992e9f9f3444a4b5369a54e4da66676bbb671f6961f6e751b21
7
+ data.tar.gz: f93b23ef08e3577f38c95e47089fffa8346cde198c787dd08e9728f23b870e9adac84eb0f7d6c69c320883411261b876b3ad985d97f49d0412aadd112cf1b217
data/lib/planefyi.rb ADDED
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "json"
5
+ require "uri"
6
+
7
+ # Ruby client for PlaneFYI REST API (planefyi.com).
8
+ #
9
+ # client = PlaneFYI::Client.new
10
+ # result = client.search("query")
11
+ #
12
+ module PlaneFYI
13
+ class Client
14
+ BASE_URL = "https://planefyi.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 aircraft families.
25
+ def list_aircraft_families
26
+ get("/api/v1/aircraft-families/")
27
+ end
28
+
29
+ # Get aircraft family by slug.
30
+ def get_aircraft_family(slug)
31
+ get("/api/v1/aircraft-families/#{slug}/")
32
+ end
33
+ # List all aircraft systems.
34
+ def list_aircraft_systems
35
+ get("/api/v1/aircraft-systems/")
36
+ end
37
+
38
+ # Get aircraft system by slug.
39
+ def get_aircraft_system(slug)
40
+ get("/api/v1/aircraft-systems/#{slug}/")
41
+ end
42
+ # List all aircraft types.
43
+ def list_aircraft_types
44
+ get("/api/v1/aircraft-types/")
45
+ end
46
+
47
+ # Get aircraft type by slug.
48
+ def get_aircraft_type(slug)
49
+ get("/api/v1/aircraft-types/#{slug}/")
50
+ end
51
+ # List all airlines.
52
+ def list_airlines
53
+ get("/api/v1/airlines/")
54
+ end
55
+
56
+ # Get airline by slug.
57
+ def get_airline(slug)
58
+ get("/api/v1/airlines/#{slug}/")
59
+ end
60
+ # List all aviation terms.
61
+ def list_aviation_terms
62
+ get("/api/v1/aviation-terms/")
63
+ end
64
+
65
+ # Get aviation term by slug.
66
+ def get_aviation_term(slug)
67
+ get("/api/v1/aviation-terms/#{slug}/")
68
+ end
69
+ # List all engine profiles.
70
+ def list_engine_profiles
71
+ get("/api/v1/engine-profiles/")
72
+ end
73
+
74
+ # Get engine profile by slug.
75
+ def get_engine_profile(slug)
76
+ get("/api/v1/engine-profiles/#{slug}/")
77
+ end
78
+ # List all faqs.
79
+ def list_faqs
80
+ get("/api/v1/faqs/")
81
+ end
82
+
83
+ # Get faq by slug.
84
+ def get_faq(slug)
85
+ get("/api/v1/faqs/#{slug}/")
86
+ end
87
+ # List all fleet.
88
+ def list_fleet
89
+ get("/api/v1/fleet/")
90
+ end
91
+
92
+ # Get fleet by slug.
93
+ def get_fleet(slug)
94
+ get("/api/v1/fleet/#{slug}/")
95
+ end
96
+ # List all manufacturers.
97
+ def list_manufacturers
98
+ get("/api/v1/manufacturers/")
99
+ end
100
+
101
+ # Get manufacturer by slug.
102
+ def get_manufacturer(slug)
103
+ get("/api/v1/manufacturers/#{slug}/")
104
+ end
105
+ # List all seat maps.
106
+ def list_seat_maps
107
+ get("/api/v1/seat-maps/")
108
+ end
109
+
110
+ # Get seat map by slug.
111
+ def get_seat_map(slug)
112
+ get("/api/v1/seat-maps/#{slug}/")
113
+ end
114
+
115
+ private
116
+
117
+ def get(path, **params)
118
+ uri = URI.join(@base_url, path)
119
+ uri.query = URI.encode_www_form(params) unless params.empty?
120
+ response = Net::HTTP.get_response(uri)
121
+ raise "HTTP #{response.code}" unless response.is_a?(Net::HTTPSuccess)
122
+ JSON.parse(response.body)
123
+ end
124
+ end
125
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: planefyi
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 PlaneFYI REST API at planefyi.com. Zero external
14
+ dependencies.
15
+ email: dev@fyipedia.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/planefyi.rb
21
+ homepage: https://planefyi.com
22
+ licenses:
23
+ - MIT
24
+ metadata:
25
+ source_code_uri: https://github.com/fyipedia/planefyi-rb
26
+ documentation_uri: https://planefyi.com/api/v1/schema/
27
+ homepage_uri: https://planefyi.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 PlaneFYI API
47
+ test_files: []