marver 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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