marver 0.0.6 → 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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -14
  3. data/lib/marver.rb +16 -2
  4. data/lib/marver/api.rb +9 -1
  5. data/lib/marver/api/client.rb +9 -6
  6. data/lib/marver/api/credentials.rb +1 -1
  7. data/lib/marver/api/errors.rb +33 -0
  8. data/lib/marver/client.rb +3 -1
  9. data/lib/marver/entities/character.rb +11 -23
  10. data/lib/marver/entities/comic.rb +19 -35
  11. data/lib/marver/entities/creator.rb +5 -26
  12. data/lib/marver/entities/event.rb +17 -26
  13. data/lib/marver/entities/serie.rb +15 -29
  14. data/lib/marver/entities/story.rb +11 -23
  15. data/lib/marver/entities/summary/character.rb +2 -2
  16. data/lib/marver/entities/summary/comic.rb +4 -4
  17. data/lib/marver/entities/summary/creator.rb +4 -2
  18. data/lib/marver/entities/summary/event.rb +2 -2
  19. data/lib/marver/entities/summary/serie.rb +3 -3
  20. data/lib/marver/entities/summary/story.rb +2 -2
  21. data/lib/marver/entities/url.rb +3 -3
  22. data/lib/marver/factories/character.rb +28 -0
  23. data/lib/marver/factories/comic.rb +27 -0
  24. data/lib/marver/factories/creator.rb +28 -0
  25. data/lib/marver/factories/date.rb +15 -0
  26. data/lib/marver/factories/event.rb +28 -0
  27. data/lib/marver/factories/factory.rb +20 -0
  28. data/lib/marver/factories/image.rb +15 -0
  29. data/lib/marver/factories/price.rb +15 -0
  30. data/lib/marver/factories/serie.rb +28 -0
  31. data/lib/marver/factories/story.rb +28 -0
  32. data/lib/marver/factories/summary/character.rb +23 -0
  33. data/lib/marver/factories/summary/comic.rb +23 -0
  34. data/lib/marver/factories/summary/creator.rb +23 -0
  35. data/lib/marver/factories/summary/event.rb +23 -0
  36. data/lib/marver/factories/summary/serie.rb +23 -0
  37. data/lib/marver/factories/summary/story.rb +23 -0
  38. data/lib/marver/factories/summary/summary.rb +12 -0
  39. data/lib/marver/factories/text_object.rb +16 -0
  40. data/lib/marver/factories/url.rb +15 -0
  41. data/lib/marver/finders/character_finder.rb +16 -2
  42. data/lib/marver/finders/comic_finder.rb +17 -1
  43. data/lib/marver/finders/creator_finder.rb +26 -0
  44. data/lib/marver/finders/event_finder.rb +16 -2
  45. data/lib/marver/finders/serie_finder.rb +16 -2
  46. data/lib/marver/finders/story_finder.rb +15 -2
  47. data/lib/marver/mappers/character_attributes_mapper.rb +25 -0
  48. data/lib/marver/mappers/comic_attributes_mapper.rb +40 -0
  49. data/lib/marver/mappers/creator_attributes_mapper.rb +29 -0
  50. data/lib/marver/mappers/event_attributes_mapper.rb +29 -0
  51. data/lib/marver/mappers/mappable.rb +86 -0
  52. data/lib/marver/mappers/serie_attributes_mapper.rb +32 -0
  53. data/lib/marver/mappers/story_attributes_mapper.rb +26 -0
  54. data/lib/marver/utils/finder_param_filter.rb +13 -0
  55. data/lib/marver/utils/string_helper.rb +7 -0
  56. data/lib/marver/version.rb +1 -1
  57. data/spec/marver/.DS_Store +0 -0
  58. data/spec/marver/api/client_spec.rb +1 -1
  59. data/spec/marver/api/credentials_spec.rb +2 -2
  60. data/spec/marver/api/error_spec.rb +9 -9
  61. data/spec/marver/client_spec.rb +8 -0
  62. data/spec/marver/entities/character_spec.rb +1 -1
  63. data/spec/marver/entities/comic_spec.rb +1 -1
  64. data/spec/marver/entities/creator_spec.rb +2 -2
  65. data/spec/marver/entities/event_spec.rb +1 -1
  66. data/spec/marver/entities/serie_spec.rb +2 -2
  67. data/spec/marver/entities/story_spec.rb +2 -2
  68. data/spec/marver/entities/summary/comic_spec.rb +9 -1
  69. data/spec/marver/factories/character_spec.rb +12 -0
  70. data/spec/marver/factories/comic_spec.rb +12 -0
  71. data/spec/marver/factories/creator_spec.rb +12 -0
  72. data/spec/marver/factories/date_spec.rb +13 -0
  73. data/spec/marver/factories/event_spec.rb +12 -0
  74. data/spec/marver/factories/image_spec.rb +13 -0
  75. data/spec/marver/factories/price_spec.rb +13 -0
  76. data/spec/marver/factories/serie_spec.rb +12 -0
  77. data/spec/marver/factories/story_spec.rb +12 -0
  78. data/spec/marver/factories/summary/character_spec.rb +13 -0
  79. data/spec/marver/factories/summary/comic_spec.rb +13 -0
  80. data/spec/marver/factories/summary/creator_spec.rb +13 -0
  81. data/spec/marver/factories/summary/event_spec.rb +13 -0
  82. data/spec/marver/factories/summary/serie_spec.rb +13 -0
  83. data/spec/marver/factories/summary/story_spec.rb +13 -0
  84. data/spec/marver/factories/text_object_spec.rb +13 -0
  85. data/spec/marver/factories/url_spec.rb +13 -0
  86. data/spec/marver/finders/character_finder_spec.rb +17 -9
  87. data/spec/marver/finders/comic_finder_spec.rb +11 -2
  88. data/spec/marver/finders/creator_finder_spec.rb +27 -0
  89. data/spec/marver/finders/event_finder_spec.rb +11 -2
  90. data/spec/marver/finders/serie_finder_spec.rb +10 -2
  91. data/spec/marver/finders/story_finder_spec.rb +11 -3
  92. data/spec/marver/mappers/character_attributes_mapper_spec.rb +14 -0
  93. data/spec/marver/mappers/comic_attributes_mapper_spec.rb +17 -0
  94. data/spec/marver/mappers/creator_attributes_mapper_spec.rb +15 -0
  95. data/spec/marver/mappers/event_attributes_mapper_spec.rb +14 -0
  96. data/spec/marver/mappers/serie_attributes_mapper_spec.rb +17 -0
  97. data/spec/marver/mappers/story_attributes_mapper_spec.rb +15 -0
  98. data/spec/marver/utils/finder_param_filter_spec.rb +17 -0
  99. data/spec/marver/utils/string_helper_spec.rb +7 -0
  100. metadata +86 -7
  101. data/TODO +0 -3
  102. data/lib/marver/api/error.rb +0 -13
  103. data/lib/marver/entities/commonable.rb +0 -37
  104. data/lib/marver/entities/queryable.rb +0 -12
  105. data/lib/marver/entities/summarizable.rb +0 -54
@@ -2,32 +2,20 @@ require './lib/marver.rb'
2
2
 
3
3
  module Marver
4
4
  class Story
5
- include Marver::Summarizable
6
- include Marver::Commonable
5
+ attr_reader :title, :type, :resource_uri, :description, :thumbnail, :original_issue,
6
+ :characters, :creators, :events, :series, :comics
7
7
 
8
- attr_reader :json, :title, :type, :resource_uri, :description, :thumbnail, :original_issue
8
+ def initialize(args)
9
+ @characters = args[:characters]
10
+ @creators = args[:creators]
11
+ @events = args[:events]
12
+ @series = args[:series]
13
+ @comics = args[:comics]
14
+ @original_issue = args[:original_issue]
9
15
 
10
- class << self
11
- def build(results)
12
- if results.kind_of?(Array)
13
- results.collect do |story|
14
- Marver::Story.new(story)
15
- end
16
- else
17
- new(results)
18
- end
16
+ args[:attributes].each do |name, value|
17
+ instance_variable_set("@#{name}", value)
19
18
  end
20
19
  end
21
-
22
- def initialize(json)
23
- @json = json
24
-
25
- @title = @json['title']
26
- @type = @json['type']
27
- @resource_uri = @json['resourceURI']
28
- @description = @json['description']
29
-
30
- @original_issue = Marver::Summary::Comic.new(@json['originalIssue'])
31
- end
32
20
  end
33
21
  end
@@ -14,8 +14,8 @@ module Marver
14
14
 
15
15
  def full
16
16
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
17
- data = Marver::DataContainer.new(response).results
18
- Marver::Character.build(data)
17
+ results = Marver::DataContainer.new(response).results
18
+ Marver::Factory::Character.new(results).build
19
19
  end
20
20
 
21
21
  end
@@ -1,4 +1,4 @@
1
- require './lib/marver.rb'
1
+ require './lib/marver'
2
2
 
3
3
  module Marver
4
4
  module Summary
@@ -12,9 +12,9 @@ module Marver
12
12
  end
13
13
 
14
14
  def full
15
- response = Marver::API::Response.new(RestClient.get(@resource_uri))
16
- data = Marver::DataContainer.new(response)
17
- Marver::Comic.build(data.results)
15
+ response = Marver::API::Client.new.get_uri(@resource_uri)
16
+ results = Marver::DataContainer.new(response).results
17
+ Marver::Factory::Comic.new(results).build
18
18
  end
19
19
  end
20
20
  end
@@ -1,3 +1,5 @@
1
+ require './lib/marver'
2
+
1
3
  module Marver
2
4
  module Summary
3
5
  class Creator
@@ -11,8 +13,8 @@ module Marver
11
13
 
12
14
  def full
13
15
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
14
- data = Marver::DataContainer.new(response).results
15
- Marver::Creator.build(data)
16
+ results = Marver::DataContainer.new(response).results
17
+ Marver::Factory::Creator.new(results).build
16
18
  end
17
19
  end
18
20
  end
@@ -12,8 +12,8 @@ module Marver
12
12
 
13
13
  def full
14
14
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
15
- data = Marver::DataContainer.new(response).results
16
- Marver::Event.build(data)
15
+ results = Marver::DataContainer.new(response).results
16
+ Marver::Factory::Event.new(results).build
17
17
  end
18
18
  end
19
19
  end
@@ -1,3 +1,4 @@
1
+ require './lib/marver.rb'
1
2
  module Marver
2
3
  module Summary
3
4
  class Serie
@@ -10,10 +11,9 @@ module Marver
10
11
 
11
12
  def full
12
13
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
13
- data = Marver::DataContainer.new(response).results
14
- Marver::Serie.build(data)
14
+ results = Marver::DataContainer.new(response).results
15
+ Marver::Factory::Serie.new(results).build
15
16
  end
16
-
17
17
  end
18
18
  end
19
19
  end
@@ -12,8 +12,8 @@ module Marver
12
12
 
13
13
  def full
14
14
  response = Marver::API::Response.new(RestClient.get(@resource_uri))
15
- data = Marver::DataContainer.new(response).results
16
- Marver::Story.build(data)
15
+ results = Marver::DataContainer.new(response).results
16
+ Marver::Factory::Story.new(results).build
17
17
  end
18
18
  end
19
19
  end
@@ -2,9 +2,9 @@ module Marver
2
2
  class Url
3
3
  attr_reader :type, :url
4
4
 
5
- def initialize(json)
6
- @type = json['type']
7
- @url = json['url']
5
+ def initialize(attrs)
6
+ @type = attrs['type']
7
+ @url = attrs['url']
8
8
  end
9
9
  end
10
10
  end
@@ -0,0 +1,28 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Character
6
+
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |character|
14
+ create_character(character)
15
+ end
16
+ else
17
+ create_character(@results)
18
+ end
19
+ end
20
+
21
+ private
22
+ def create_character(params)
23
+ attributes = Marver::CharacterAttributesMapper.new(params).map
24
+ Marver::Character.new(attributes: attributes)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Comic
6
+ def initialize(results)
7
+ @results = results
8
+ end
9
+
10
+ def build
11
+ if @results.kind_of?(Array)
12
+ @results.collect do |comic|
13
+ create_comic(comic)
14
+ end
15
+ else
16
+ create_comic(@results)
17
+ end
18
+ end
19
+
20
+ private
21
+ def create_comic(params)
22
+ attributes = ComicAttributesMapper.new(params).map
23
+ Marver::Comic.new(attributes: attributes)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Creator
6
+
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |creator|
14
+ create_creator(creator)
15
+ end
16
+ else
17
+ create_creator(@results)
18
+ end
19
+ end
20
+
21
+ private
22
+ def create_creator(params)
23
+ attributes = CreatorAttributesMapper.new(params).map
24
+ Marver::Creator.new(attributes)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ module Marver
2
+ module Factory
3
+ class Date
4
+ def initialize dates
5
+ @dates = dates
6
+ end
7
+
8
+ def build
9
+ @dates.collect do |date|
10
+ Marver::KeyDate.new(date)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Event
6
+
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |event|
14
+ create_event(event)
15
+ end
16
+ else
17
+ create_event(@results)
18
+ end
19
+ end
20
+
21
+ private
22
+ def create_event(params)
23
+ attributes = Marver::EventAttributesMapper.new(params).map
24
+ Marver::Event.new(attributes: attributes)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module Marver
2
+ module Factory
3
+ autoload :Character, 'marver/factories/character'
4
+ autoload :Comic, 'marver/factories/comic'
5
+ autoload :Story, 'marver/factories/story'
6
+ autoload :Event, 'marver/factories/event'
7
+ autoload :Serie, 'marver/factories/serie'
8
+ autoload :Creator, 'marver/factories/creator'
9
+
10
+ autoload :Url, 'marver/factories/url'
11
+ autoload :Price, 'marver/factories/price'
12
+ autoload :Image, 'marver/factories/image'
13
+ autoload :TextObject, 'marver/factories/text_object'
14
+ autoload :Date, 'marver/factories/date'
15
+
16
+ autoload :Summary, 'marver/factories/summary/summary'
17
+
18
+ autoload :Buildable, 'marver/factories/buildable'
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module Marver
2
+ module Factory
3
+ class Image
4
+ def initialize images
5
+ @images = images
6
+ end
7
+
8
+ def build
9
+ @images.collect do |image|
10
+ Marver::Image.new(image)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Marver
2
+ module Factory
3
+ class Price
4
+ def initialize(prices)
5
+ @prices = prices
6
+ end
7
+
8
+ def build
9
+ @prices.collect do |price|
10
+ Marver::Price.new(price)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Serie
6
+
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |serie|
14
+ create_serie(serie)
15
+ end
16
+ else
17
+ create_serie(@results)
18
+ end
19
+ end
20
+
21
+ private
22
+ def create_serie(params)
23
+ attributes = Marver::SerieAttributesMapper.new(params).map
24
+ Marver::Serie.new(attributes: attributes)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require './lib/marver.rb'
2
+
3
+ module Marver
4
+ module Factory
5
+ class Story
6
+
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |story|
14
+ create_story(story)
15
+ end
16
+ else
17
+ create_story(@results)
18
+ end
19
+ end
20
+
21
+ private
22
+ def create_story(params)
23
+ attributes = StoryAttributesMapper.new(params).map
24
+ Marver::Story.new(attributes: attributes)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ require './lib/marver'
2
+
3
+ module Marver
4
+ module Factory
5
+ module Summary
6
+ class Character
7
+ def initialize results
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |character|
14
+ Marver::Summary::Character.new(character)
15
+ end
16
+ else
17
+ [Marver::Summary::Character.new(@results)]
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require './lib/marver'
2
+
3
+ module Marver
4
+ module Factory
5
+ module Summary
6
+ class Comic
7
+ def initialize results
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |comic|
14
+ Marver::Summary::Comic.new(comic)
15
+ end
16
+ else
17
+ [Marver::Summary::Comic.new(@results)]
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require './lib/marver'
2
+
3
+ module Marver
4
+ module Factory
5
+ module Summary
6
+ class Creator
7
+ def initialize(results)
8
+ @results = results
9
+ end
10
+
11
+ def build
12
+ if @results.kind_of?(Array)
13
+ @results.collect do |creator|
14
+ Marver::Summary::Creator.new(creator)
15
+ end
16
+ else
17
+ [Marver::Summary::Creator.new(@results)]
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end