1
+ require 'httparty'
2
+
3
+ class FortniteAPI
4
+ BRCosmetic = Struct . new ( :id , :type , :backendType , :rarity , :displayRarity , :backendRarity , :name , :shortDescription , :description , :set , :setText , :backendSeries , :images , :variants , :gameplayTags , :displayAssetPath , :definition , :requiredItemId , :builtInEmoteId , :path , :lastUpdate , :added )
5
+ BRNews = Struct . new ( :image , :hidden , :messageType , :type , :adspace , :spotlight , :title , :body )
6
+ STWNews = Struct . new ( :image , :hidden , :messageType , :type , :adspace , :spotlight , :title , :body )
7
+ CreativeNews = Struct . new ( :image , :hidden , :messageType , :type , :adspace , :spotlight , :title , :body )
8
+ ShopItem = Struct . new ( :regularPrice , :finalPrice , :isBundle , :giftable , :refundable , :panel , :sortPriority , :banner , :items )
9
+
10
+ def search_cosmetic ( searchQuery , tag = 'name' , language = 'en' , searchLanguage = 'en' )
11
+ response = HTTParty . get ( "https://fortnite-api.com/cosmetics/br/search?#{ tag } =#{ searchQuery } &language=#{ language } &searchLanguage=#{ searchLanguage } " )
12
+ body = JSON . parse ( response . body ) [ 'data' ]
13
+ if response . code == 200
14
+ searchResult = BRCosmetic . new ( body [ 'id' ] , body [ 'type' ] , body [ 'backendType' ] , body [ 'rarity' ] , body [ 'displayRarity' ] , body [ 'backendRarity' ] , body [ 'name' ] , body [ 'shortDescription' ] , body [ 'description' ] , body [ 'set' ] , body [ 'setText' ] , body [ 'backendSeries' ] , body [ 'images' ] , body [ 'variants' ] , body [ 'gameplayTags' ] , body [ 'displayAssetPath' ] , body [ 'definition' ] , body [ 'requiredItemId' ] , body [ 'builtInEmoteId' ] , body [ 'path' ] , body [ 'lastUpdate' ] , body [ 'added' ] )
15
+ searchResult
16
+ elsif response . code == 404
17
+ raise "Error when trying to fetch cosmetic: #{ searchQuery } - #{ body [ 'error' ] } "
18
+ searchResult = BRCosmetic . new ( )
19
+ searchResult
20
+ elsif response . code == 400
21
+ raise "Error when using parameter, it might be that it is invalid.: #{ tag } - #{ body [ 'error' ] } "
22
+ searchResult = BRCosmetic . new ( )
23
+ searchResult
24
+ else
25
+ raise "An unexpected error occured. Status code: #{ response . code } , Request body: #{ response . body } "
26
+ searchResult = BRCosmetic . new ( )
27
+ searchResult
28
+ end
29
+ end
30
+
31
+ def search_cosmetic_id ( searchQuery , language = 'en' )
32
+ response = HTTParty . get ( "https://fortnite-api.com/cosmetics/br/#{ searchQuery } &language=#{ language } " )
33
+ body = JSON . parse ( response . body ) [ 'data' ]
34
+ if response . code == 200
35
+ searchResult = BRCosmetic . new ( body [ 'id' ] , body [ 'type' ] , body [ 'backendType' ] , body [ 'rarity' ] , body [ 'displayRarity' ] , body [ 'backendRarity' ] , body [ 'name' ] , body [ 'shortDescription' ] , body [ 'description' ] , body [ 'set' ] , body [ 'setText' ] , body [ 'backendSeries' ] , body [ 'images' ] , body [ 'variants' ] , body [ 'gameplayTags' ] , body [ 'displayAssetPath' ] , body [ 'definition' ] , body [ 'requiredItemId' ] , body [ 'builtInEmoteId' ] , body [ 'path' ] , body [ 'lastUpdate' ] , body [ 'added' ] )
36
+ searchResult
37
+ elsif response . code == 404
38
+ raise "Error when trying to fetch cosmetic: #{ searchQuery } - #{ body [ 'error' ] } "
39
+ searchResult = BRCosmetic . new ( )
40
+ searchResult
41
+ elsif response . code == 400
42
+ raise "Error when using parameter, it might be that it is invalid.: #{ tag } - #{ body [ 'error' ] } "
43
+ searchResult = BRCosmetic . new ( )
44
+ searchResult
45
+ else
46
+ raise "An unexpected error occured. Status code: #{ response . code } , Request body: #{ response . body } "
47
+ searchResult = BRCosmetic . new ( )
48
+ searchResult
49
+ end
50
+ end
51
+
52
+ def search_cosmetics ( searchQuery , tag = 'name' , language = 'en' , searchLanguage = 'en' )
53
+ cosmetics = [ ]
54
+ response = HTTParty . get ( "https://fortnite-api.com/cosmetics/br/search/all?#{ tag } =#{ searchQuery } &language=#{ language } &searchLanguage=#{ searchLanguage } " )
55
+ body = JSON . parse ( response . body ) [ 'data' ]
56
+ if response . code == 200
57
+ for x in body
58
+ searchResult = BRCosmetic . new ( x [ 'id' ] , x [ 'type' ] , x [ 'backendType' ] , x [ 'rarity' ] , x [ 'displayRarity' ] , x [ 'backendRarity' ] , x [ 'name' ] , x [ 'shortDescription' ] , x [ 'description' ] , x [ 'set' ] , x [ 'setText' ] , x [ 'backendSeries' ] , x [ 'images' ] , x [ 'variants' ] , x [ 'gameplayTags' ] , x [ 'displayAssetPath' ] , x [ 'definition' ] , x [ 'requiredItemId' ] , x [ 'builtInEmoteId' ] , x [ 'path' ] , x [ 'lastUpdate' ] , x [ 'added' ] )
59
+ cosmetics . push ( searchResult )
60
+ end
61
+ cosmetics
62
+ elsif response . code == 404
63
+ raise "Error when trying to fetch cosmetic: #{ searchQuery } - #{ body [ 'error' ] } "
64
+ searchResult = BRCosmetic . new ( )
65
+ searchResult
66
+ elsif response . code == 400
67
+ raise "Error when using parameter, it might be that it is invalid.: #{ tag } - #{ body [ 'error' ] } "
68
+ searchResult = BRCosmetic . new ( )
69
+ searchResult
70
+ else
71
+ raise "An unexpected error occured. Status code: #{ response . code } , Request body: #{ response . body } "
72
+ searchResult = BRCosmetic . new ( )
73
+ searchResult
74
+ end
75
+ end
76
+
77
+ def all_cosmetics ( )
78
+ response = HTTParty . get ( "https://fortnite-api.com/cosmetics/br" )
79
+ JSON . parse ( response . body )
80
+ end
81
+
82
+ def get_br_news ( language = 'en' )
83
+ br_news_list = [ ]
84
+ response = HTTParty . get ( "https://fortnite-api.com/news/br?language=#{ language } " )
85
+ messages = JSON . parse ( response . body ) [ 'data' ] [ 'messages' ]
86
+ for x in messages
87
+ newsResult = BRNews . new ( x [ 'image' ] , x [ 'hidden' ] , x [ 'messageType' ] , x [ 'type' ] , x [ 'adspace' ] , x [ 'spotlight' ] , x [ 'title' ] , x [ 'body' ] )
88
+ br_news_list . push ( newsResult )
89
+ end
90
+ br_news_list
91
+ end
92
+
93
+ def get_stw_news ( language = 'en' )
94
+ stw_news_list = [ ]
95
+ response = HTTParty . get ( "https://fortnite-api.com/news/stw?language=#{ language } " )
96
+ messages = JSON . parse ( response . body ) [ 'data' ] [ 'messages' ]
97
+ for x in messages
98
+ newsResult = STWNews . new ( x [ 'image' ] , x [ 'hidden' ] , x [ 'messageType' ] , x [ 'type' ] , x [ 'adspace' ] , x [ 'spotlight' ] , x [ 'title' ] , x [ 'body' ] )
99
+ stw_news_list . push ( newsResult )
100
+ end
101
+ stw_news_list
102
+ end
103
+
104
+ def get_creative_news ( language = 'en' )
105
+ creative_news_list = [ ]
106
+ response = HTTParty . get ( "https://fortnite-api.com/news/creative?language=#{ language } " )
107
+ messages = JSON . parse ( response . body ) [ 'data' ] [ 'messages' ]
108
+ for x in messages
109
+ newsResult = CreativeNews . new ( x [ 'image' ] , x [ 'hidden' ] , x [ 'messageType' ] , x [ 'type' ] , x [ 'adspace' ] , x [ 'spotlight' ] , x [ 'title' ] , x [ 'body' ] )
110
+ creative_news_list . push ( newsResult )
111
+ end
112
+ creative_news_list
113
+ end
114
+
115
+ def get_br_store ( language = 'en' )
116
+ featured_items = [ ]
117
+ daily_items = [ ]
118
+ response = HTTParty . get ( "https://fortnite-api.com/shop/br?language=#{ language } " )
119
+ featured = JSON . parse ( response . body ) [ 'data' ] [ 'featured' ]
120
+ for x in featured
121
+ featuredItem = ShopItem . new ( x [ 'regularPrice' ] , x [ 'finalPrice' ] , x [ 'isBundle' ] , x [ 'giftable' ] , x [ 'refundable' ] , x [ 'panel' ] , x [ 'sortPriority' ] , x [ 'banner' ] , x [ 'items' ] )
122
+ featured_items . push ( featuredItem )
123
+ end
124
+ daily = JSON . parse ( response . body ) [ 'data' ] [ 'daily' ]
125
+ for x in daily
126
+ dailyItem = ShopItem . new ( x [ 'regularPrice' ] , x [ 'finalPrice' ] , x [ 'isBundle' ] , x [ 'giftable' ] , x [ 'refundable' ] , x [ 'panel' ] , x [ 'sortPriority' ] , x [ 'banner' ] , x [ 'items' ] )
127
+ daily_items . push ( dailyItem )
128
+ end
129
+ br_store = [ featured_items , daily_items ]
130
+ br_store
131
+ end
132
+ end
0 commit comments