starwars 0.0.1 → 0.0.2

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 (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