starwars 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +1 -0
  4. data/README.md +63 -19
  5. data/lib/starwars.rb +16 -7
  6. data/lib/starwars/base.rb +129 -25
  7. data/lib/starwars/cursor.rb +110 -0
  8. data/lib/starwars/error.rb +63 -0
  9. data/lib/starwars/overrides/ostruct.rb +16 -0
  10. data/lib/starwars/request.rb +80 -0
  11. data/lib/starwars/resources/film.rb +79 -0
  12. data/lib/starwars/resources/paginated/films.rb +8 -0
  13. data/lib/starwars/resources/paginated/people.rb +8 -0
  14. data/lib/starwars/resources/paginated/planets.rb +9 -0
  15. data/lib/starwars/resources/paginated/species.rb +8 -0
  16. data/lib/starwars/resources/paginated/starships.rb +8 -0
  17. data/lib/starwars/resources/paginated/vehicles.rb +8 -0
  18. data/lib/starwars/resources/person.rb +124 -0
  19. data/lib/starwars/{planet.rb → resources/planet.rb} +0 -13
  20. data/lib/starwars/{specie.rb → resources/specie.rb} +1 -15
  21. data/lib/starwars/resources/starship.rb +115 -0
  22. data/lib/starwars/resources/vehicle.rb +106 -0
  23. data/lib/starwars/version.rb +1 -1
  24. data/spec/fixtures/404.json +1 -0
  25. data/spec/fixtures/planets_page1.json +1 -0
  26. data/spec/fixtures/planets_page2.json +1 -0
  27. data/spec/starwars/base_spec.rb +17 -0
  28. data/spec/starwars/cursor_spec.rb +76 -0
  29. data/spec/starwars/person_spec.rb +1 -1
  30. data/spec/starwars/request_spec.rb +29 -0
  31. data/spec/starwars/resources/paginated/planets_spec.rb +38 -0
  32. data/starwars.gemspec +0 -1
  33. metadata +32 -23
  34. data/lib/starwars/fetcher.rb +0 -40
  35. data/lib/starwars/film.rb +0 -35
  36. data/lib/starwars/person.rb +0 -39
  37. data/lib/starwars/starship.rb +0 -40
  38. data/lib/starwars/vehicle.rb +0 -38
@@ -21,6 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler', '~> 1.6'
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_dependency 'roar', '~> 1.0.0'
24
- spec.add_dependency 'equalizer', '~> 0.0.9'
25
24
  spec.add_dependency 'virtus', '~> 1.0.3'
26
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starwars
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moski Doski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-24 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.0.0
55
- - !ruby/object:Gem::Dependency
56
- name: equalizer
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.0.9
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.0.9
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: virtus
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -99,26 +85,42 @@ files:
99
85
  - Rakefile
100
86
  - lib/starwars.rb
101
87
  - lib/starwars/base.rb
102
- - lib/starwars/fetcher.rb
103
- - lib/starwars/film.rb
104
- - lib/starwars/person.rb
105
- - lib/starwars/planet.rb
106
- - lib/starwars/specie.rb
107
- - lib/starwars/starship.rb
108
- - lib/starwars/vehicle.rb
88
+ - lib/starwars/cursor.rb
89
+ - lib/starwars/error.rb
90
+ - lib/starwars/overrides/ostruct.rb
91
+ - lib/starwars/request.rb
92
+ - lib/starwars/resources/film.rb
93
+ - lib/starwars/resources/paginated/films.rb
94
+ - lib/starwars/resources/paginated/people.rb
95
+ - lib/starwars/resources/paginated/planets.rb
96
+ - lib/starwars/resources/paginated/species.rb
97
+ - lib/starwars/resources/paginated/starships.rb
98
+ - lib/starwars/resources/paginated/vehicles.rb
99
+ - lib/starwars/resources/person.rb
100
+ - lib/starwars/resources/planet.rb
101
+ - lib/starwars/resources/specie.rb
102
+ - lib/starwars/resources/starship.rb
103
+ - lib/starwars/resources/vehicle.rb
109
104
  - lib/starwars/version.rb
105
+ - spec/fixtures/404.json
110
106
  - spec/fixtures/films_1.json
111
107
  - spec/fixtures/people_1.json
112
108
  - spec/fixtures/people_2.json
113
109
  - spec/fixtures/planets_1.json
110
+ - spec/fixtures/planets_page1.json
111
+ - spec/fixtures/planets_page2.json
114
112
  - spec/fixtures/species_1.json
115
113
  - spec/fixtures/starships_10.json
116
114
  - spec/fixtures/starships_5.json
117
115
  - spec/fixtures/vehicles_14.json
118
116
  - spec/spec_helper.rb
117
+ - spec/starwars/base_spec.rb
118
+ - spec/starwars/cursor_spec.rb
119
119
  - spec/starwars/film_spec.rb
120
120
  - spec/starwars/person_spec.rb
121
121
  - spec/starwars/planet_spec.rb
122
+ - spec/starwars/request_spec.rb
123
+ - spec/starwars/resources/paginated/planets_spec.rb
122
124
  - spec/starwars/species_spec.rb
123
125
  - spec/starwars/starship_spec.rb
124
126
  - spec/starwars/vehicle_spec.rb
@@ -148,18 +150,25 @@ signing_key:
148
150
  specification_version: 4
149
151
  summary: A Ruby helper library for swapi.co - the Star Wars API
150
152
  test_files:
153
+ - spec/fixtures/404.json
151
154
  - spec/fixtures/films_1.json
152
155
  - spec/fixtures/people_1.json
153
156
  - spec/fixtures/people_2.json
154
157
  - spec/fixtures/planets_1.json
158
+ - spec/fixtures/planets_page1.json
159
+ - spec/fixtures/planets_page2.json
155
160
  - spec/fixtures/species_1.json
156
161
  - spec/fixtures/starships_10.json
157
162
  - spec/fixtures/starships_5.json
158
163
  - spec/fixtures/vehicles_14.json
159
164
  - spec/spec_helper.rb
165
+ - spec/starwars/base_spec.rb
166
+ - spec/starwars/cursor_spec.rb
160
167
  - spec/starwars/film_spec.rb
161
168
  - spec/starwars/person_spec.rb
162
169
  - spec/starwars/planet_spec.rb
170
+ - spec/starwars/request_spec.rb
171
+ - spec/starwars/resources/paginated/planets_spec.rb
163
172
  - spec/starwars/species_spec.rb
164
173
  - spec/starwars/starship_spec.rb
165
174
  - spec/starwars/vehicle_spec.rb
@@ -1,40 +0,0 @@
1
- module Starwars
2
- #
3
- # Common Module for the fetcher behaviour across all api references
4
- #
5
- module Fetcher
6
- def self.included(base)
7
- base.send :include, InstanceMethods
8
- base.extend ClassMethods
9
- end
10
-
11
- # Fetcher Methods to be included in every resource
12
- module InstanceMethods
13
- #
14
- # Fetch a resouce give the resource name
15
- #
16
- def fetch
17
- super(resouces_name)
18
- end
19
-
20
- private
21
-
22
- def resouces_name
23
- resource = self.class.name.split('::').last.downcase
24
- (resource == 'person') ? 'people' : "#{resource}s"
25
- end
26
- end
27
-
28
- # Fetcher Class Method to be included in every resource
29
- module ClassMethods
30
- def fetch(id)
31
- super(resouces_name, id)
32
- end
33
-
34
- def resouces_name
35
- resource = name.split('::').last.downcase
36
- (resource == 'person') ? 'people' : "#{resource}s"
37
- end
38
- end
39
- end
40
- end
@@ -1,35 +0,0 @@
1
- module Starwars
2
- #
3
- # A Film resource is an single film.
4
- #
5
- class Film < Starwars::Base
6
- #
7
- # Define the source name in the starwars api
8
- #
9
- RESOURCE_NAME = 'films'
10
-
11
- include Starwars::Fetcher
12
-
13
- # @return [String]
14
- property :title
15
- property :opening_crawl
16
- property :director
17
- property :producer
18
- property :url
19
-
20
- # @return [Integer]
21
- property :id, type: Integer
22
- property :episode_id, type: Integer
23
-
24
- # @return [Time]
25
- property :created, type: Time
26
- property :edited, type: Time
27
-
28
- # @return [Array]
29
- collection :characters, class: Starwars::Person, deserialize: ->(_, fragment, _) { Person.new(url: fragment) }
30
- collection :planets, class: Starwars::Planet, deserialize: ->(_, fragment, _) { Planet.new(url: fragment) }
31
- collection :starships, class: Starwars::Starship, deserialize: ->(_, fragment, _) { Starship.new(url: fragment) }
32
- collection :vehicles, class: Starwars::Vehicle, deserialize: ->(_, fragment, _) { Vehicle.new(url: fragment) }
33
- collection :species, class: Starwars::Specie, deserialize: ->(_, fragment, _) { Specie.new(url: fragment) }
34
- end
35
- end
@@ -1,39 +0,0 @@
1
- module Starwars
2
- #
3
- # A People resource is an individual person or character within the Star Wars universe.
4
- #
5
- class Person < Starwars::Base
6
- #
7
- # Define the source name in the starwars api
8
- #
9
- RESOURCE_NAME = 'people'
10
-
11
- include Starwars::Fetcher
12
-
13
- # @return [String]
14
- property :name
15
- property :skin_color
16
- property :eye_color
17
- property :hair_color
18
- property :birth_year
19
- property :gender
20
- property :url
21
-
22
- # @return [Integer]
23
- property :height, type: Integer
24
- property :mass, type: Integer
25
-
26
- # @return [Starwars::Planet]
27
- property :homeworld, class: Starwars::Planet, deserialize: ->(_, fragment, _) { Planet.new(url: fragment) }
28
-
29
- # @return [Time]
30
- property :created, type: Time
31
- property :edited, type: Time
32
-
33
- # @return [Array]
34
- collection :films, class: Starwars::Film, deserialize: ->(_, fragment, _) { Film.new(url: fragment) }
35
- collection :species, class: Starwars::Specie, deserialize: ->(_, fragment, _) { Specie.new(url: fragment) }
36
- collection :vehicles, class: Starwars::Vehicle, deserialize: ->(_, fragment, _) { Vehicle.new(url: fragment) }
37
- collection :starships, class: Starwars::Starship, deserialize: ->(_, fragment, _) { Starship.new(url: fragment) }
38
- end
39
- end
@@ -1,40 +0,0 @@
1
- module Starwars
2
- #
3
- # A Film resource is an single film.
4
- #
5
- class Starship < Starwars::Base
6
- #
7
- # Define the source name in the starwars api
8
- #
9
- RESOURCE_NAME = 'starships'
10
-
11
- include Starwars::Fetcher
12
-
13
- # @return [String]
14
- property :name
15
- property :model
16
- property :manufacturer
17
- property :starship_class
18
- property :consumables
19
-
20
- # @return [Integer]
21
- property :cost_in_credits, type: Integer
22
- property :length, type: Integer
23
- property :max_atmosphering_speed, type: Integer
24
- property :crew, type: Integer
25
- property :passengers, type: Integer
26
- property :cargo_capacity, type: Integer
27
- # property :MGLT, as: :mglt
28
-
29
- # @return [Float]
30
- property :hyperdrive_rating, type: Float
31
-
32
- # @return [Time]
33
- property :created, type: Time
34
- property :edited, type: Time
35
-
36
- # @return [Array]
37
- collection :pilots, class: Starwars::Person, deserialize: ->(_, fragment, _) { Person.new(url: fragment) }
38
- collection :films, class: Starwars::Film, deserialize: ->(_, fragment, _) { Film.new(url: fragment) }
39
- end
40
- end
@@ -1,38 +0,0 @@
1
- module Starwars
2
- #
3
- # A Film resource is an single film.
4
- #
5
- class Vehicle < Starwars::Base
6
- #
7
- # Define the source name in the starwars api
8
- #
9
- RESOURCE_NAME = 'vehicles'
10
-
11
- include Starwars::Fetcher
12
-
13
- # @return [String]
14
- property :name
15
- property :model
16
- property :manufacturer
17
- property :consumables
18
- property :vehicle_class
19
- property :cost_in_credits
20
-
21
- # @return [Integer]
22
- property :max_atmosphering_speed, type: Integer
23
- property :crew, type: Integer
24
- property :passengers, type: Integer
25
- property :cargo_capacity, type: Integer
26
-
27
- # @return [Float]
28
- property :length, type: Float
29
-
30
- # @return [Time]
31
- property :created, type: Time
32
- property :edited, type: Time
33
-
34
- # @return [Array]
35
- collection :pilots, class: Starwars::Person, deserialize: ->(_, fragment, _) { Person.new(url: fragment) }
36
- collection :films, class: Starwars::Film, deserialize: ->(_, fragment, _) { Film.new(url: fragment) }
37
- end
38
- end