weather_API_Assignment 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +187 -0
- data/lib/weather_api_assignment.rb +46 -0
- data/lib/weather_api_assignment/api_helper.rb +275 -0
- data/lib/weather_api_assignment/configuration.rb +24 -0
- data/lib/weather_api_assignment/controllers/base_controller.rb +51 -0
- data/lib/weather_api_assignment/controllers/weather_ap_is_controller.rb +121 -0
- data/lib/weather_api_assignment/exceptions/api_exception.rb +20 -0
- data/lib/weather_api_assignment/http/auth/custom_query_auth.rb +16 -0
- data/lib/weather_api_assignment/http/faraday_client.rb +64 -0
- data/lib/weather_api_assignment/http/http_call_back.rb +24 -0
- data/lib/weather_api_assignment/http/http_client.rb +104 -0
- data/lib/weather_api_assignment/http/http_context.rb +20 -0
- data/lib/weather_api_assignment/http/http_method_enum.rb +13 -0
- data/lib/weather_api_assignment/http/http_request.rb +50 -0
- data/lib/weather_api_assignment/http/http_response.rb +23 -0
- data/lib/weather_api_assignment/models/base_model.rb +36 -0
- data/lib/weather_api_assignment/models/clouds.rb +35 -0
- data/lib/weather_api_assignment/models/coord.rb +44 -0
- data/lib/weather_api_assignment/models/lang_enum.rb +20 -0
- data/lib/weather_api_assignment/models/main.rb +98 -0
- data/lib/weather_api_assignment/models/mode_enum.rb +20 -0
- data/lib/weather_api_assignment/models/sys.rb +80 -0
- data/lib/weather_api_assignment/models/units_enum.rb +20 -0
- data/lib/weather_api_assignment/models/weather.rb +62 -0
- data/lib/weather_api_assignment/models/weather_api_response.rb +150 -0
- data/lib/weather_api_assignment/models/wind.rb +44 -0
- data/lib/weather_api_assignment/weather_api_assignment_client.rb +27 -0
- metadata +167 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# HTTP Methods Enumeration.
|
8
|
+
class HttpMethodEnum
|
9
|
+
HTTPMETHODENUM = [GET = 'GET'.freeze, POST = 'POST'.freeze,
|
10
|
+
PUT = 'PUT'.freeze, PATCH = 'PATCH'.freeze,
|
11
|
+
DELETE = 'DELETE'.freeze, HEAD = 'HEAD'.freeze].freeze
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# Represents a single Http Request.
|
8
|
+
class HttpRequest
|
9
|
+
attr_accessor :http_method, :query_url, :headers,
|
10
|
+
:parameters, :username, :password
|
11
|
+
|
12
|
+
# The constructor.
|
13
|
+
# @param [HttpMethodEnum] The HTTP method.
|
14
|
+
# @param [String] The URL to send the request to.
|
15
|
+
# @param [Hash, Optional] The headers for the HTTP Request.
|
16
|
+
# @param [Hash, Optional] The parameters for the HTTP Request.
|
17
|
+
def initialize(http_method,
|
18
|
+
query_url,
|
19
|
+
headers: {},
|
20
|
+
parameters: {})
|
21
|
+
@http_method = http_method
|
22
|
+
@query_url = query_url
|
23
|
+
@headers = headers
|
24
|
+
@parameters = parameters
|
25
|
+
end
|
26
|
+
|
27
|
+
# Add a header to the HttpRequest.
|
28
|
+
# @param [String] The name of the header.
|
29
|
+
# @param [String] The value of the header.
|
30
|
+
def add_header(name, value)
|
31
|
+
@headers[name] = value
|
32
|
+
end
|
33
|
+
|
34
|
+
# Add a parameter to the HttpRequest.
|
35
|
+
# @param [String] The name of the parameter.
|
36
|
+
# @param [String] The value of the parameter.
|
37
|
+
def add_parameter(name, value)
|
38
|
+
@parameters[name] = value
|
39
|
+
end
|
40
|
+
|
41
|
+
# Add a query parameter to the HttpRequest.
|
42
|
+
# @param [String] The name of the query parameter.
|
43
|
+
# @param [String] The value of the query parameter.
|
44
|
+
def add_query_parameter(name, value)
|
45
|
+
@query_url = APIHelper.append_url_with_query_parameters(@query_url,
|
46
|
+
name => value)
|
47
|
+
@query_url = APIHelper.clean_url(@query_url)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# Http response received.
|
8
|
+
class HttpResponse
|
9
|
+
attr_accessor :status_code, :headers, :raw_body
|
10
|
+
|
11
|
+
# The constructor
|
12
|
+
# @param [Integer] The status code returned by the server.
|
13
|
+
# @param [Hash] The headers sent by the server in the response.
|
14
|
+
# @param [String] The raw body of the response.
|
15
|
+
def initialize(status_code,
|
16
|
+
headers,
|
17
|
+
raw_body)
|
18
|
+
@status_code = status_code
|
19
|
+
@headers = headers
|
20
|
+
@raw_body = raw_body
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# Base model.
|
8
|
+
class BaseModel
|
9
|
+
# Returns a Hash representation of the current object.
|
10
|
+
def to_hash
|
11
|
+
hash = {}
|
12
|
+
instance_variables.each do |name|
|
13
|
+
value = instance_variable_get(name)
|
14
|
+
name = name[1..-1]
|
15
|
+
key = self.class.names.key?(name) ? self.class.names[name] : name
|
16
|
+
if value.instance_of? Array
|
17
|
+
hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
|
18
|
+
elsif value.instance_of? Hash
|
19
|
+
hash[key] = {}
|
20
|
+
value.each do |k, v|
|
21
|
+
hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
|
22
|
+
end
|
23
|
+
else
|
24
|
+
hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
hash
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns a JSON representation of the curent object.
|
31
|
+
def to_json(options = {})
|
32
|
+
hash = to_hash
|
33
|
+
hash.to_json(options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# This model contains the cloud information.
|
8
|
+
class Clouds < BaseModel
|
9
|
+
# This field contains overall stats information
|
10
|
+
# @return [Integer]
|
11
|
+
attr_accessor :all
|
12
|
+
|
13
|
+
# A mapping from model property names to API property names.
|
14
|
+
def self.names
|
15
|
+
@_hash = {} if @_hash.nil?
|
16
|
+
@_hash['all'] = 'all'
|
17
|
+
@_hash
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(all = nil)
|
21
|
+
@all = all
|
22
|
+
end
|
23
|
+
|
24
|
+
# Creates an instance of the object from a hash.
|
25
|
+
def self.from_hash(hash)
|
26
|
+
return nil unless hash
|
27
|
+
|
28
|
+
# Extract variables from the hash.
|
29
|
+
all = hash['all']
|
30
|
+
|
31
|
+
# Create object from extracted values.
|
32
|
+
Clouds.new(all)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# This model contains the longitude and latitude
|
8
|
+
class Coord < BaseModel
|
9
|
+
# This field contains the longitude
|
10
|
+
# @return [Float]
|
11
|
+
attr_accessor :lon
|
12
|
+
|
13
|
+
# This field contains the latitude
|
14
|
+
# @return [Float]
|
15
|
+
attr_accessor :lat
|
16
|
+
|
17
|
+
# A mapping from model property names to API property names.
|
18
|
+
def self.names
|
19
|
+
@_hash = {} if @_hash.nil?
|
20
|
+
@_hash['lon'] = 'lon'
|
21
|
+
@_hash['lat'] = 'lat'
|
22
|
+
@_hash
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(lon = nil,
|
26
|
+
lat = nil)
|
27
|
+
@lon = lon
|
28
|
+
@lat = lat
|
29
|
+
end
|
30
|
+
|
31
|
+
# Creates an instance of the object from a hash.
|
32
|
+
def self.from_hash(hash)
|
33
|
+
return nil unless hash
|
34
|
+
|
35
|
+
# Extract variables from the hash.
|
36
|
+
lon = hash['lon']
|
37
|
+
lat = hash['lat']
|
38
|
+
|
39
|
+
# Create object from extracted values.
|
40
|
+
Coord.new(lon,
|
41
|
+
lat)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# This defines the language of response
|
8
|
+
class LANGEnum
|
9
|
+
LANG_ENUM = [
|
10
|
+
# Afrikaans
|
11
|
+
AF = 'af'.freeze,
|
12
|
+
|
13
|
+
# Danish
|
14
|
+
DA = 'da'.freeze,
|
15
|
+
|
16
|
+
# English
|
17
|
+
EN = 'en'.freeze
|
18
|
+
].freeze
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# This model contains the digital values of weather.
|
8
|
+
class Main < BaseModel
|
9
|
+
# This field contains the current temperature
|
10
|
+
# @return [Float]
|
11
|
+
attr_accessor :temp
|
12
|
+
|
13
|
+
# This field contains the feels like attribute of temperature
|
14
|
+
# @return [Float]
|
15
|
+
attr_accessor :feels_like
|
16
|
+
|
17
|
+
# This field contains the pressure
|
18
|
+
# @return [Float]
|
19
|
+
attr_accessor :pressure
|
20
|
+
|
21
|
+
# This field contains the humidity
|
22
|
+
# @return [Float]
|
23
|
+
attr_accessor :humidity
|
24
|
+
|
25
|
+
# This field contains the minimum temperature
|
26
|
+
# @return [Float]
|
27
|
+
attr_accessor :temp_min
|
28
|
+
|
29
|
+
# This field contains the maximum temperature
|
30
|
+
# @return [Float]
|
31
|
+
attr_accessor :temp_max
|
32
|
+
|
33
|
+
# This field contains the information height with respect to sea level
|
34
|
+
# @return [Float]
|
35
|
+
attr_accessor :sea_level
|
36
|
+
|
37
|
+
# This field contains the information height with respect to ground level
|
38
|
+
# @return [Float]
|
39
|
+
attr_accessor :grnd_level
|
40
|
+
|
41
|
+
# A mapping from model property names to API property names.
|
42
|
+
def self.names
|
43
|
+
@_hash = {} if @_hash.nil?
|
44
|
+
@_hash['temp'] = 'temp'
|
45
|
+
@_hash['feels_like'] = 'feels_like'
|
46
|
+
@_hash['pressure'] = 'pressure'
|
47
|
+
@_hash['humidity'] = 'humidity'
|
48
|
+
@_hash['temp_min'] = 'temp_min'
|
49
|
+
@_hash['temp_max'] = 'temp_max'
|
50
|
+
@_hash['sea_level'] = 'sea_level'
|
51
|
+
@_hash['grnd_level'] = 'grnd_level'
|
52
|
+
@_hash
|
53
|
+
end
|
54
|
+
|
55
|
+
def initialize(temp = nil,
|
56
|
+
pressure = nil,
|
57
|
+
humidity = nil,
|
58
|
+
temp_min = nil,
|
59
|
+
temp_max = nil,
|
60
|
+
feels_like = nil,
|
61
|
+
sea_level = nil,
|
62
|
+
grnd_level = nil)
|
63
|
+
@temp = temp
|
64
|
+
@feels_like = feels_like
|
65
|
+
@pressure = pressure
|
66
|
+
@humidity = humidity
|
67
|
+
@temp_min = temp_min
|
68
|
+
@temp_max = temp_max
|
69
|
+
@sea_level = sea_level
|
70
|
+
@grnd_level = grnd_level
|
71
|
+
end
|
72
|
+
|
73
|
+
# Creates an instance of the object from a hash.
|
74
|
+
def self.from_hash(hash)
|
75
|
+
return nil unless hash
|
76
|
+
|
77
|
+
# Extract variables from the hash.
|
78
|
+
temp = hash['temp']
|
79
|
+
pressure = hash['pressure']
|
80
|
+
humidity = hash['humidity']
|
81
|
+
temp_min = hash['temp_min']
|
82
|
+
temp_max = hash['temp_max']
|
83
|
+
feels_like = hash['feels_like']
|
84
|
+
sea_level = hash['sea_level']
|
85
|
+
grnd_level = hash['grnd_level']
|
86
|
+
|
87
|
+
# Create object from extracted values.
|
88
|
+
Main.new(temp,
|
89
|
+
pressure,
|
90
|
+
humidity,
|
91
|
+
temp_min,
|
92
|
+
temp_max,
|
93
|
+
feels_like,
|
94
|
+
sea_level,
|
95
|
+
grnd_level)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# Define the mode sent in the request to get the response in provided format
|
8
|
+
class MODEEnum
|
9
|
+
MODE_ENUM = [
|
10
|
+
# This is XML mode
|
11
|
+
XML = 'XML'.freeze,
|
12
|
+
|
13
|
+
# This is HTML mode
|
14
|
+
HTML = 'HTML'.freeze,
|
15
|
+
|
16
|
+
# This is JSON mode
|
17
|
+
JSON = 'JSON'.freeze
|
18
|
+
].freeze
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# This model contains the country, sunset and sunrise information.
|
8
|
+
class Sys < BaseModel
|
9
|
+
# This field contains the type of information
|
10
|
+
# @return [Integer]
|
11
|
+
attr_accessor :type
|
12
|
+
|
13
|
+
# This field contains the identifier
|
14
|
+
# @return [Integer]
|
15
|
+
attr_accessor :id
|
16
|
+
|
17
|
+
# This field contains the information message
|
18
|
+
# @return [Float]
|
19
|
+
attr_accessor :message
|
20
|
+
|
21
|
+
# This field contains the country code
|
22
|
+
# @return [String]
|
23
|
+
attr_accessor :country
|
24
|
+
|
25
|
+
# This field contains the information of sunrise in given city
|
26
|
+
# @return [Long]
|
27
|
+
attr_accessor :sunrise
|
28
|
+
|
29
|
+
# This field contains the information of sunset in given city
|
30
|
+
# @return [Long]
|
31
|
+
attr_accessor :sunset
|
32
|
+
|
33
|
+
# A mapping from model property names to API property names.
|
34
|
+
def self.names
|
35
|
+
@_hash = {} if @_hash.nil?
|
36
|
+
@_hash['type'] = 'type'
|
37
|
+
@_hash['id'] = 'id'
|
38
|
+
@_hash['message'] = 'message'
|
39
|
+
@_hash['country'] = 'country'
|
40
|
+
@_hash['sunrise'] = 'sunrise'
|
41
|
+
@_hash['sunset'] = 'sunset'
|
42
|
+
@_hash
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize(sunrise = nil,
|
46
|
+
sunset = nil,
|
47
|
+
type = nil,
|
48
|
+
id = nil,
|
49
|
+
message = nil,
|
50
|
+
country = nil)
|
51
|
+
@type = type
|
52
|
+
@id = id
|
53
|
+
@message = message
|
54
|
+
@country = country
|
55
|
+
@sunrise = sunrise
|
56
|
+
@sunset = sunset
|
57
|
+
end
|
58
|
+
|
59
|
+
# Creates an instance of the object from a hash.
|
60
|
+
def self.from_hash(hash)
|
61
|
+
return nil unless hash
|
62
|
+
|
63
|
+
# Extract variables from the hash.
|
64
|
+
sunrise = hash['sunrise']
|
65
|
+
sunset = hash['sunset']
|
66
|
+
type = hash['type']
|
67
|
+
id = hash['id']
|
68
|
+
message = hash['message']
|
69
|
+
country = hash['country']
|
70
|
+
|
71
|
+
# Create object from extracted values.
|
72
|
+
Sys.new(sunrise,
|
73
|
+
sunset,
|
74
|
+
type,
|
75
|
+
id,
|
76
|
+
message,
|
77
|
+
country)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# weather_api_assignment
|
2
|
+
#
|
3
|
+
# This file was automatically generated by APIMATIC
|
4
|
+
# v2.0 ( https://apimatic.io ).
|
5
|
+
|
6
|
+
module WeatherApiAssignment
|
7
|
+
# Defined the units sent in request
|
8
|
+
class UNITSEnum
|
9
|
+
UNITS_ENUM = [
|
10
|
+
# This is standard unit
|
11
|
+
STANDARD = 'standard'.freeze,
|
12
|
+
|
13
|
+
# This is metric unit
|
14
|
+
METRIC = 'metric'.freeze,
|
15
|
+
|
16
|
+
# This is imperial unit
|
17
|
+
IMPERIAL = 'imperial'.freeze
|
18
|
+
].freeze
|
19
|
+
end
|
20
|
+
end
|