harkness 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bde0dd383b950752ad75505b15a0b9f4a3d0a8fd63339136ec03a625f0c371c8
4
- data.tar.gz: 1e158b73d045f626ca673be4b5e6588ce018d5a9384c97d74a223d52c628e7a9
3
+ metadata.gz: 306a55aff7abd2df10be5d952209fddbfd66125d4928c2b857fab9a78a89225d
4
+ data.tar.gz: 47a9be14d3e650d34129548872e36eeaa2696026a57e67ac10099ec7833c180a
5
5
  SHA512:
6
- metadata.gz: 3eaf2fc1c274671c6970e7f6ed4b26c1fc4e4dcebb73a83b074243f8a180ea04ef69215aa0cef79270b50f36d9bf2d6dfbe7f352d2976d5e6d0d485091f316ba
7
- data.tar.gz: 6ccf1aca3a8baf4d90505a25fe99debbb6636f987b99de187f717c4d033960127c8fd402ac8b82bd5f25a4f4e53160bc1965958ace2868c62a71862ad6233ebc
6
+ metadata.gz: 7a5b6517f178ba753effdbe164cbb881c7d6b8246055c6d05eba6e3a74fca02caf2036e836fa3502cd9b9b79082a03e8bff24fe7e7b4dfbb75f71a33eccb395b
7
+ data.tar.gz: 0eaadb16b2961eee7eac183dcb7455e5a663bf3552db57395e295ace79e28024dfc9a44f9f586fa406f3a1819c2873636a18cff8edfafa0b2c7a322b679f218f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0](https://github.com/duffn/harkness/compare/v1.0.0...v1.1.0) (2023-03-13)
4
+
5
+
6
+ ### Features
7
+
8
+ * Add additional code docs ([#7](https://github.com/duffn/harkness/issues/7)) ([8fead00](https://github.com/duffn/harkness/commit/8fead007d888b79bcd6e54afd8705dafea390a16))
9
+ * Add yard docs for Comic, ComicList, and related classes ([ab12e30](https://github.com/duffn/harkness/commit/ab12e300cee37c32e0a55b1198bb866518b53643))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * add missing `returned` attribute for some summary models ([#5](https://github.com/duffn/harkness/issues/5)) ([2339e9c](https://github.com/duffn/harkness/commit/2339e9c20be0860640970a9701437e98f0b60f66))
15
+
3
16
  ## [1.0.0] (2023-03-12)
4
17
 
5
18
  - Initial release
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A full-featured and painstakingly documented library for working (playing) with the [Marvel API](https://developer.marvel.com/docs).
4
4
 
5
- ![main](https://github.com/duffn/harkness/actions/workflows/test.yml/badge.svg) [![codecov](https://codecov.io/gh/duffn/harkness/branch/main/graph/badge.svg?token=9XUA33QIM2)](https://codecov.io/gh/duffn/harkness)
5
+ ![main](https://github.com/duffn/harkness/actions/workflows/test.yml/badge.svg) [![codecov](https://codecov.io/gh/duffn/harkness/branch/main/graph/badge.svg?token=9XUA33QIM2)](https://codecov.io/gh/duffn/harkness) [![Gem Version](https://badge.fury.io/rb/harkness.svg)](https://badge.fury.io/rb/harkness)
6
6
 
7
7
  ## Installation
8
8
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Harkness
4
4
  module Error
5
+ # Base Harkness error class.
5
6
  class Error < StandardError; end
6
7
 
7
8
  # Raised when the API endpoint returns the HTTP status code 400.
@@ -5,16 +5,16 @@ module Harkness
5
5
  # Container class that holds pagination information.
6
6
  class DataContainer < Shale::Mapper
7
7
  # @!attribute [r] offset
8
- # @return [Integer] the requested offset (number of skipped results) of the call.
8
+ # @return [Integer] the requested offset (number of skipped results) of the call.
9
9
  attribute :offset, Shale::Type::Integer
10
10
  # @!attribute [r] limit
11
- # @return [Integer] the requested result limit.
11
+ # @return [Integer] the requested result limit.
12
12
  attribute :limit, Shale::Type::Integer
13
13
  # @!attribute [r] total
14
- # @return [Integer] the total number of resources available given the current filter set.
14
+ # @return [Integer] the total number of resources available given the current filter set.
15
15
  attribute :total, Shale::Type::Integer
16
16
  # @!attribute [r] count
17
- # @return [Integer] the total number of results returned by this call.
17
+ # @return [Integer] the total number of results returned by this call.
18
18
  attribute :count, Shale::Type::Integer
19
19
  end
20
20
  end
@@ -5,29 +5,29 @@ module Harkness
5
5
  # The top level wrapper of a response from the API.
6
6
  class DataWrapper < Shale::Mapper
7
7
  # @!attribute [r] code
8
- # @return [Integer] the HTTP status code of the returned result.
8
+ # @return [Integer] the HTTP status code of the returned result.
9
9
  attribute :code, Shale::Type::Integer
10
10
  # @!attribute [r] status
11
- # @return [String] a string description of the call status.
11
+ # @return [String] a string description of the call status.
12
12
  attribute :status, Shale::Type::String
13
13
  # @!attribute [r] copyright
14
- # @return [String] the copyright notice for the returned result.
14
+ # @return [String] the copyright notice for the returned result.
15
15
  attribute :copyright, Shale::Type::String
16
16
  # @!attribute [r] attributionText
17
- # @return [String] the attribution notice for this result.
18
- # Please display either this notice or the contents of the attributionHTML field on all
19
- # screens which contain data from the Marvel Comics API.
17
+ # @return [String] the attribution notice for this result.
18
+ # Please display either this notice or the contents of the attributionHTML field on all
19
+ # screens which contain data from the Marvel Comics API.
20
20
  attribute :attributionText, Shale::Type::String
21
21
  # @!attribute [r] attributionHTML
22
- # @return [String] an HTML representation of the attribution notice for this result.
23
- # Please display either this notice or the contents of the attributionText field on all
24
- # screens which contain data from the Marvel Comics API.
22
+ # @return [String] an HTML representation of the attribution notice for this result.
23
+ # Please display either this notice or the contents of the attributionText field on all
24
+ # screens which contain data from the Marvel Comics API.
25
25
  attribute :attributionHTML, Shale::Type::String
26
26
  # @!attribute [r] data
27
- # @return [Harkness::Base::DataContainer] the results returned by the call.
27
+ # @return [Harkness::Base::DataContainer] the results returned by the call.
28
28
  attribute :data, Harkness::Base::DataContainer
29
29
  # @!attribute [r] etag
30
- # @return [String] a digest value of the content returned by the call.
30
+ # @return [String] a digest value of the content returned by the call.
31
31
  attribute :etag, Shale::Type::String
32
32
  end
33
33
  end
@@ -7,10 +7,10 @@ module Harkness
7
7
  # one of the summary objects is a Series.
8
8
  class Summary < Shale::Mapper
9
9
  # @!attribute [r] resourceURI
10
- # @return [String] the path to the individual resource.
10
+ # @return [String] the path to the individual resource.
11
11
  attribute :resourceURI, Shale::Type::String
12
12
  # @!attribute [r] name
13
- # @return [String] the canonical name of the resource.
13
+ # @return [String] the canonical name of the resource.
14
14
  attribute :name, Shale::Type::String
15
15
  end
16
16
  end
@@ -4,51 +4,51 @@ module Harkness
4
4
  # An individual character.
5
5
  class Character < Shale::Mapper
6
6
  # @!attribute [r] id
7
- # @return [Integer] the unique ID of the character resource.
7
+ # @return [Integer] the unique ID of the character resource.
8
8
  attribute :id, Shale::Type::Integer
9
9
  # @!attribute [r] name
10
- # @return [String] the name of the character.
10
+ # @return [String] the name of the character.
11
11
  attribute :name, Shale::Type::String
12
12
  # @!attribute [r] description
13
- # @return [String] a short bio or description of the character
13
+ # @return [String] a short bio or description of the character
14
14
  attribute :description, Shale::Type::String
15
15
  # @!attribute [r] modified
16
- # @return [String] the date the resource was most recently modified.
16
+ # @return [String] the date the resource was most recently modified.
17
17
  attribute :modified, Shale::Type::String
18
18
  # @!attribute [r] resourceURI
19
- # @return [String] the canonical URL identifier for this resource.
19
+ # @return [String] the canonical URL identifier for this resource.
20
20
  attribute :resourceURI, Shale::Type::String
21
21
  # @!attribute [r] urls
22
- # @return [Array<Harkness::URL>] a set of public web site URLs for the resource.
22
+ # @return [Array<Harkness::URL>] a set of public web site URLs for the resource.
23
23
  attribute :urls, Harkness::URL, collection: true
24
24
  # @!attribute [r] thumbnail
25
- # @return [Harkness::Image] the representative image for this character.
25
+ # @return [Harkness::Image] the representative image for this character.
26
26
  attribute :thumbnail, Harkness::Image
27
27
  # @!attribute [r] comics
28
- # @return [Harkness::ComicList] a resource list containing comics which feature this character.
28
+ # @return [Harkness::ComicList] a resource list containing comics which feature this character.
29
29
  attribute :comics, Harkness::ComicList
30
30
  # @!attribute [r] stories
31
- # @return [Harkness::StoryList] a resource list of stories in which this character appears.
31
+ # @return [Harkness::StoryList] a resource list of stories in which this character appears.
32
32
  attribute :stories, Harkness::StoryList
33
33
  # @!attribute [r] events
34
- # @return [Harkness::EventList] a resource list of events in which this character appears.
34
+ # @return [Harkness::EventList] a resource list of events in which this character appears.
35
35
  attribute :events, Harkness::EventList
36
36
  # @!attribute [r] series
37
- # @return [Harkness::SeriesList] a resource list of series in which this character appears.
37
+ # @return [Harkness::SeriesList] a resource list of series in which this character appears.
38
38
  attribute :series, Harkness::SeriesList
39
39
  end
40
40
 
41
- # Container class that holds pagination information and results
41
+ # Container class that holds pagination information and results.
42
42
  class CharacterDataContainer < Harkness::Base::DataContainer
43
43
  # @!attribute [r] results
44
- # @return [Array<Harkness::Character>] the list of characters returned by the call.
44
+ # @return [Array<Harkness::Character>] the list of characters returned by the call.
45
45
  attribute :results, Harkness::Character, collection: true
46
46
  end
47
47
 
48
48
  # The top level wrapper of a response from the API.
49
49
  class CharacterDataWrapper < Harkness::Base::DataWrapper
50
50
  # @!attribute [r] data
51
- # @return [CharacterDataContainer] the results returned by the call.
51
+ # @return [Harkness::CharacterDataContainer] the results returned by the call.
52
52
  attribute :data, Harkness::CharacterDataContainer
53
53
  end
54
54
  end
@@ -4,24 +4,24 @@ module Harkness
4
4
  # The summary of a character.
5
5
  class CharacterSummary < Harkness::Base::Summary
6
6
  # @!attribute [r] role
7
- # @return [String] the role of the creator in the parent entity.
7
+ # @return [String] the role of the character in the parent entity.
8
8
  attribute :role, Shale::Type::String
9
9
  end
10
10
 
11
11
  # A list of characters.
12
12
  class CharacterList < Shale::Mapper
13
13
  # @!attribute [r] available
14
- # @return [Integer] the number of total available characters in this list.
15
- # Will always be greater than or equal to the "returned" value.
14
+ # @return [Integer] the number of total available characters in this list.
15
+ # Will always be greater than or equal to the "returned" value.
16
16
  attribute :available, Shale::Type::Integer
17
17
  # @!attribute [r] returned
18
- # @return [Integer] the number of characters returned in this collection (up to 20).
18
+ # @return [Integer] the number of characters returned in this collection (up to 20).
19
19
  attribute :returned, Shale::Type::Integer
20
20
  # @!attribute [r] collectionURI
21
- # @return [String] the path to the full list of characters in this collection.
21
+ # @return [String] the path to the full list of characters in this collection.
22
22
  attribute :collectionURI, Shale::Type::String
23
- # @!attribute [r] offset
24
- # @return [Array<Harkness::CharacterSummary>] the list of returned characters in this collection.
23
+ # @!attribute [r] items
24
+ # @return [Array<Harkness::CharacterSummary>] the list of returned characters in this collection.
25
25
  attribute :items, Harkness::CharacterSummary, collection: true
26
26
  end
27
27
  end
@@ -1,53 +1,133 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The data of a comic.
4
5
  class ComicDate < Shale::Mapper
6
+ # @!attribute [r] type
7
+ # @return [String] a description of the date (e.g. onsale date, FOC date).
5
8
  attribute :type, Shale::Type::String
9
+ # @!attribute [r] date
10
+ # @return [String] the date.
6
11
  attribute :date, Shale::Type::String
7
12
  end
8
13
 
14
+ # The price of a comic.
9
15
  class ComicPrice < Shale::Mapper
16
+ # @!attribute [r] type
17
+ # @return [String] a description of the price (e.g. print price, digital price).
10
18
  attribute :type, Shale::Type::String
19
+ # @!attribute [r] price
20
+ # @return [Float] the price (all prices in USD).
11
21
  attribute :price, Shale::Type::Float
12
22
  end
13
23
 
24
+ # An individual character.
14
25
  class Comic < Shale::Mapper
26
+ # @!attribute [r] id
27
+ # @return [Integer] the unique ID of the comic resource.
15
28
  attribute :id, Shale::Type::Integer
29
+ # @!attribute [r] digitalId
30
+ # @return [Integer] the ID of the digital comic representation of this comic. Will be 0 if the comic is
31
+ # not available digitally.
16
32
  attribute :digitalId, Shale::Type::Integer
33
+ # @!attribute [r] title
34
+ # @return [String] the canonical title of the comic.
17
35
  attribute :title, Shale::Type::String
36
+ # @!attribute [r] issueNumber
37
+ # @return [Integer] the number of the issue in the series (will generally be 0 for collection formats).
18
38
  attribute :issueNumber, Shale::Type::Integer
39
+ # @!attribute [r] variantDescription
40
+ # @return [String] If the issue is a variant (e.g. an alternate cover, second printing, or director’s cut),
41
+ # a text description of the variant.
19
42
  attribute :variantDescription, Shale::Type::String
43
+ # @!attribute [r] description
44
+ # @return [String] the preferred description of the comic.
20
45
  attribute :description, Shale::Type::String
46
+ # @!attribute [r] modified
47
+ # @return [String] the date the resource was most recently modified.
21
48
  attribute :modified, Shale::Type::String
49
+ # @!attribute [r] isbn
50
+ # @return [String] the ISBN for the comic (generally only populated for collection formats).
22
51
  attribute :isbn, Shale::Type::String
52
+ # @!attribute [r] upc
53
+ # @return [String] the UPC barcode number for the comic (generally only populated for periodical formats).
23
54
  attribute :upc, Shale::Type::String
55
+ # @!attribute [r] diamondCode
56
+ # @return [String] the Diamond code for the comic.
24
57
  attribute :diamondCode, Shale::Type::String
58
+ # @!attribute [r] ean
59
+ # @return [String] the EAN barcode for the comic.
25
60
  attribute :ean, Shale::Type::String
61
+ # @!attribute [r] issn
62
+ # @return [String] the ISSN barcode for the comic.
26
63
  attribute :issn, Shale::Type::String
64
+ # @!attribute [r] format
65
+ # @return [String] the publication format of the comic e.g. comic, hardcover, trade paperback.
27
66
  attribute :format, Shale::Type::String
67
+ # @!attribute [r] pageCount
68
+ # @return [Integer] the number of story pages in the comic.
28
69
  attribute :pageCount, Shale::Type::Integer
70
+ # @!attribute [r] textObjects
71
+ # @return [Array<Harkness::TextObject>] a set of descriptive text blurbs for the comic.
29
72
  attribute :textObjects, Harkness::TextObject, collection: true
73
+ # @!attribute [r] resourceURI
74
+ # @return [String] the canonical URL identifier for this resource.
30
75
  attribute :resourceURI, Shale::Type::String
76
+ # @!attribute [r] urls
77
+ # @return [Array<Harkness::URL>] a set of public web site URLs for the resource.
31
78
  attribute :urls, Harkness::URL, collection: true
79
+ # @!attribute [r] series
80
+ # @return [Array<Harkness::SeriesSummary>] a summary representation of the series to which this comic belongs.
32
81
  attribute :series, Harkness::SeriesSummary
82
+ # @!attribute [r] variants
83
+ # @return [Array<Harkness::ComicSummary>] a list of variant issues for this comic (includes the "original" issue
84
+ # if the current issue is a variant).
33
85
  attribute :variants, Harkness::ComicSummary, collection: true
86
+ # @!attribute [r] collections
87
+ # @return [Array<Harkness::ComicSummary>] A list of collections which include this comic (will generally
88
+ # be empty if the comic's format is a collection).
34
89
  attribute :collections, Harkness::ComicSummary, collection: true
90
+ # @!attribute [r] collectedIssues
91
+ # @return [Array<Harkness::ComicSummary>] a list of issues collected in this comic (will generally
92
+ # be empty for periodical formats such as "comic" or "magazine").
35
93
  attribute :collectedIssues, Harkness::ComicSummary, collection: true
94
+ # @!attribute [r] dates
95
+ # @return [Array<Harkness::ComicDate] a list of key dates for this comic.
36
96
  attribute :dates, Harkness::ComicDate, collection: true
97
+ # @!attribute [r] prices
98
+ # @return [Array<Harkness::ComicPrice>] a list of prices for this comic.
37
99
  attribute :prices, Harkness::ComicPrice, collection: true
100
+ # @!attribute [r] thumbnail
101
+ # @return [Harkness::Image] the representative image for this comic.
38
102
  attribute :thumbnail, Harkness::Image
103
+ # @!attribute [r] images
104
+ # @return [Array<Harkness::Image>] a list of promotional images associated with this comic.
39
105
  attribute :images, Harkness::Image, collection: true
106
+ # @!attribute [r] creators
107
+ # @return [Harkness::CreatorList] a resource list containing the creators associated with this comic.
40
108
  attribute :creators, Harkness::CreatorList
109
+ # @!attribute [r] characters
110
+ # @return [Harkness::CharacterList] a resource list containing the characters which appear in this comic.
41
111
  attribute :characters, Harkness::CharacterList
112
+ # @!attribute [r] stories
113
+ # @return [Harkness::StoryList] a resource list containing the stories which appear in this comic.
42
114
  attribute :stories, Harkness::StoryList
115
+ # @!attribute [r] events
116
+ # @return [Harkness::EventList] a resource list containing the events in which this comic appears.
43
117
  attribute :events, Harkness::EventList
44
118
  end
45
119
 
120
+ # Container class that holds pagination information and results.
46
121
  class ComicDataContainer < Harkness::Base::DataContainer
122
+ # @!attribute [r] results
123
+ # @return [Array<Harkness::Comic>] the list of comics returned by the call.
47
124
  attribute :results, Harkness::Comic, collection: true
48
125
  end
49
126
 
127
+ # The top level wrapper of a response from the API.
50
128
  class ComicDataWrapper < Harkness::Base::DataWrapper
129
+ # @!attribute [r] data
130
+ # @return [Harkness::ComicDataContainer] The results returned by the call.
51
131
  attribute :data, Harkness::ComicDataContainer
52
132
  end
53
133
  end
@@ -1,12 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The summary of a comic.
4
5
  class ComicSummary < Harkness::Base::Summary
5
6
  end
6
7
 
8
+ # A list of comics.
7
9
  class ComicList < Shale::Mapper
10
+ # @!attribute [r] available
11
+ # @return [Integer] the number of total available issues in this list. Will always be greater than
12
+ # or equal to the "returned" value.
8
13
  attribute :available, Shale::Type::Integer
14
+ # @!attribute [r] returned
15
+ # @return [Integer] the number of comics returned in this collection (up to 20).
16
+ attribute :returned, Shale::Type::Integer
17
+ # @!attribute [r] collectionURI
18
+ # @return [String] the path to the full list of issues in this collection.
9
19
  attribute :collectionURI, Shale::Type::String
20
+ # @!attribute [r] collectionURI
21
+ # @return [Array<Harkness::ComicSummary>] the list of returned issues in this collection.
10
22
  attribute :items, Harkness::ComicSummary, collection: true
11
23
  end
12
24
  end
@@ -1,28 +1,63 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # An individual creator.
4
5
  class Creator < Shale::Mapper
6
+ # @!attribute [r] id
7
+ # @return [Integer] the unique ID of the creator resource.
5
8
  attribute :id, Shale::Type::Integer
9
+ # @!attribute [r] firstName
10
+ # @return [String] the first name of the creator.
6
11
  attribute :firstName, Shale::Type::String
12
+ # @!attribute [r] middleName
13
+ # @return [String] the middle name of the creator.
7
14
  attribute :middleName, Shale::Type::String
15
+ # @!attribute [r] lastName
16
+ # @return [String] tThe last name of the creator.
8
17
  attribute :lastName, Shale::Type::String
18
+ # @!attribute [r] suffix
19
+ # @return [String] the suffix or honorific for the creator.
9
20
  attribute :suffix, Shale::Type::String
21
+ # @!attribute [r] fullName
22
+ # @return [String] the full name of the creator (a space-separated concatenation of the above four fields).
10
23
  attribute :fullName, Shale::Type::String
24
+ # @!attribute [r] modified
25
+ # @return [String] the date the resource was most recently modified.
11
26
  attribute :modified, Shale::Type::String
27
+ # @!attribute [r] resourceURI
28
+ # @return [String] the canonical URL identifier for this resource.
12
29
  attribute :resourceURI, Shale::Type::String
30
+ # @!attribute [r] urls
31
+ # @return [Array<Harkness::URL>] a set of public web site URLs for the resource.
13
32
  attribute :urls, Harkness::URL, collection: true
33
+ # @!attribute [r] thumbnail
34
+ # @return [Harkness::Image] the representative image for this creator.
14
35
  attribute :thumbnail, Harkness::Image
36
+ # @!attribute [r] series
37
+ # @return [Harkness::SeriesList] a resource list containing the series which feature work by this creator
15
38
  attribute :series, Harkness::SeriesList
39
+ # @!attribute [r] stories
40
+ # @return [Harkness::StoryList] A resource list containing the stories which feature work by this creator.
16
41
  attribute :stories, Harkness::StoryList
42
+ # @!attribute [r] comics
43
+ # @return [Harkness::ComicList] a resource list containing the comics which feature work by this creator.
17
44
  attribute :comics, Harkness::ComicList
45
+ # @!attribute [r] events
46
+ # @return [Harkness::EventList] a resource list containing the events which feature work by this creator.
18
47
  attribute :events, Harkness::EventList
19
48
  end
20
49
 
50
+ # Container class that holds pagination information and results.
21
51
  class CreatorDataContainer < Harkness::Base::DataContainer
52
+ # @!attribute [r] results
53
+ # @return [Array<Harkness::Creator>] the list of creators returned by the call.
22
54
  attribute :results, Harkness::Creator, collection: true
23
55
  end
24
56
 
57
+ # The top level wrapper of a response from the API.
25
58
  class CreatorDataWrapper < Harkness::Base::DataWrapper
59
+ # @!attribute [r] data
60
+ # @return [Harkness::CreatorDataContainer] the results returned by the call.
26
61
  attribute :data, Harkness::CreatorDataContainer
27
62
  end
28
63
  end
@@ -1,14 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The summary of a creator.
4
5
  class CreatorSummary < Harkness::Base::Summary
6
+ # @!attribute [r] role
7
+ # @return [String] the role of the creator in the parent entity.
5
8
  attribute :role, Shale::Type::String
6
9
  end
7
10
 
11
+ # A list of creators.
8
12
  class CreatorList < Shale::Mapper
13
+ # @!attribute [r] available
14
+ # @return [Integer] the number of total available creators in this list.
15
+ # Will always be greater than or equal to the "returned" value.
9
16
  attribute :available, Shale::Type::Integer
17
+ # @!attribute [r] returned
18
+ # @return [Integer] the number of creators returned in this collection (up to 20).
10
19
  attribute :returned, Shale::Type::Integer
20
+ # @!attribute [r] collectionURI
21
+ # @return [String] the path to the full list of creators in this collection.
11
22
  attribute :collectionURI, Shale::Type::String
23
+ # @!attribute [r] offset
24
+ # @return [Array<Harkness::CreatorySummary>] the list of returned creators in this collection.
12
25
  attribute :items, Harkness::CreatorSummary, collection: true
13
26
  end
14
27
  end
@@ -1,12 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The summary of an event.
4
5
  class EventSummary < Harkness::Base::Summary
5
6
  end
6
7
 
8
+ # A list of events.
7
9
  class EventList < Shale::Mapper
10
+ # @!attribute [r] available
11
+ # @return [Integer] the number of total available events in this list.
12
+ # Will always be greater than or equal to the "returned" value.
8
13
  attribute :available, Shale::Type::Integer
14
+ # @!attribute [r] returned
15
+ # @return [Integer] the number of events returned in this collection (up to 20).
16
+ attribute :returned, Shale::Type::Integer
17
+ # @!attribute [r] collectionURI
18
+ # @return [String] the path to the full list of events in this collection.
9
19
  attribute :collectionURI, Shale::Type::String
20
+ # @!attribute [r] items
21
+ # @return [Array<Harkness::EventSummary>] the list of returned characters in this collection.
10
22
  attribute :items, Harkness::EventSummary, collection: true
11
23
  end
12
24
  end
@@ -3,7 +3,11 @@
3
3
  module Harkness
4
4
  # An image.
5
5
  class Image < Shale::Mapper
6
+ # @!attribute [r] path
7
+ # @return [String] the directory path of to the image.,
6
8
  attribute :path, Shale::Type::String
9
+ # @!attribute [r] extension
10
+ # @return [String] the file extension for the image.
7
11
  attribute :extension, Shale::Type::String
8
12
  end
9
13
  end
@@ -1,32 +1,72 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # An individual series.
4
5
  class Series < Shale::Mapper
6
+ # @!attribute [r] id
7
+ # @return [Integer] the unique ID of the series resource.
5
8
  attribute :id, Shale::Type::Integer
9
+ # @!attribute [r] title
10
+ # @return [String] the canonical title of the series.
6
11
  attribute :title, Shale::Type::String
12
+ # @!attribute [r] description
13
+ # @return [String] a description of the series.
7
14
  attribute :description, Shale::Type::String
15
+ # @!attribute [r] resourceURI
16
+ # @return [String] the canonical URL identifier for this resource.
8
17
  attribute :resourceURI, Shale::Type::String
18
+ # @!attribute [r] urls
19
+ # @return [Array<Harkness::URL>] a set of public web site URLs for the resource.
9
20
  attribute :urls, Harkness::URL, collection: true
10
-
21
+ # @!attribute [r] startYear
22
+ # @return [Integer] the first year of publication for the series.
11
23
  attribute :startYear, Shale::Type::Integer
24
+ # @!attribute [r] endYear
25
+ # @return [Integer] the last year of publication for the series (conventionally, 2099 for ongoing series).
12
26
  attribute :endYear, Shale::Type::Integer
27
+ # @!attribute [r] rating
28
+ # @return [String] the age-appropriateness rating for the series.
13
29
  attribute :rating, Shale::Type::String
30
+ # @!attribute [r] modified
31
+ # @return [String] the date the resource was most recently modified.
14
32
  attribute :modified, Shale::Type::String
33
+ # @!attribute [r] thumbnail
34
+ # @return [Harkness::Image] the representative image for this SERIES.
15
35
  attribute :thumbnail, Harkness::Image
36
+ # @!attribute [r] comics
37
+ # @return [Harkness::ComicList] : a resource list containing comics in this series.
16
38
  attribute :comics, Harkness::ComicList
39
+ # @!attribute [r] stories
40
+ # @return [Harkness::StoryList] a resource list containing stories which occur in comics in this series.
17
41
  attribute :stories, Harkness::StoryList
42
+ # @!attribute [r] events
43
+ # @return [Harkness::EventList] a resource list containing events which take place in comics in this series.
18
44
  attribute :events, Harkness::EventList
45
+ # @!attribute [r] characters
46
+ # @return [Harkness::CharacterList] a resource list containing characters which appear in comics in this series.
19
47
  attribute :characters, Harkness::CharacterList
48
+ # @!attribute [r] creators
49
+ # @return [Harkness::CreatorList] a resource list of creators whose work appears in comics in this series.
20
50
  attribute :creators, Harkness::CreatorList
51
+ # @!attribute [r] next
52
+ # @return [Harkness::SeriesSummary] a summary representation of the series which follows this series.,
21
53
  attribute :next, Harkness::SeriesSummary
54
+ # @!attribute [r] next
55
+ # @return [Harkness::SeriesSummary] a summary representation of the series which preceded this series.
22
56
  attribute :previous, Harkness::SeriesSummary
23
57
  end
24
58
 
59
+ # Container class that holds pagination information and results.
25
60
  class SeriesDataContainer < Harkness::Base::DataContainer
61
+ # @!attribute [r] results
62
+ # @return [Array<Harkness::Series>] the list of series returned by the call.
26
63
  attribute :results, Harkness::Series, collection: true
27
64
  end
28
65
 
66
+ # The top level wrapper of a response from the API.
29
67
  class SeriesDataWrapper < Harkness::Base::DataWrapper
68
+ # @!attribute [r] data
69
+ # @return [Harkness::SeriesDataContainer] the results returned by the call.
30
70
  attribute :data, Harkness::SeriesDataContainer
31
71
  end
32
72
  end
@@ -1,12 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The summary of a series.
4
5
  class SeriesSummary < Harkness::Base::Summary
5
6
  end
6
7
 
8
+ # A list of series.
7
9
  class SeriesList < Shale::Mapper
10
+ # @!attribute [r] available
11
+ # @return [Integer] the number of total available series in this list.
12
+ # Will always be greater than or equal to the "returned" value.
8
13
  attribute :available, Shale::Type::Integer
14
+ # @!attribute [r] returned
15
+ # @return [Integer] the number of series returned in this collection (up to 20).
16
+ attribute :returned, Shale::Type::Integer
17
+ # @!attribute [r] collectionURI
18
+ # @return [String] the path to the full list of series in this collection.
9
19
  attribute :collectionURI, Shale::Type::String
20
+ # @!attribute [r] items
21
+ # @return [Array<Harkness::SeriesSummary>] the list of returned characters in this collection.
10
22
  attribute :items, Harkness::SeriesSummary, collection: true
11
23
  end
12
24
  end
@@ -1,26 +1,58 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # An individual story
4
5
  class Story < Shale::Mapper
6
+ # @!attribute [r] id
7
+ # @return [Integer] the unique ID of the story resource.
5
8
  attribute :id, Shale::Type::Integer
9
+ # @!attribute [r] title
10
+ # @return [String] the canonical title of the story.
6
11
  attribute :title, Shale::Type::String
12
+ # @!attribute [r] description
13
+ # @return [String] a description of the story.
7
14
  attribute :description, Shale::Type::String
15
+ # @!attribute [r] resourceURI
16
+ # @return [String] the canonical URL identifier for this resource.
8
17
  attribute :resourceURI, Shale::Type::String
18
+ # @!attribute [r] type
19
+ # @return [String] ' the story type e.g. interior story, cover, text story.
9
20
  attribute :type, Shale::Type::String
21
+ # @!attribute [r] modified
22
+ # @return [String] the date the resource was most recently modified.
10
23
  attribute :modified, Shale::Type::String
24
+ # @!attribute [r] thumbnail
25
+ # @return [String] the representative image for this story.
11
26
  attribute :thumbnail, Harkness::Image
27
+ # @!attribute [r] comics
28
+ # @return [Harkness::ComicList] a resource list containing comics in which this story takes place.
12
29
  attribute :comics, Harkness::ComicList
30
+ # @!attribute [r] series
31
+ # @return [Harkness::SeriesList] a resource list containing series in which this story appears.
13
32
  attribute :series, Harkness::SeriesList
33
+ # @!attribute [r] events
34
+ # @return [Harkness::EventList] a resource list of the events in which this story appears.
14
35
  attribute :events, Harkness::EventList
36
+ # @!attribute [r] characters
37
+ # @return [Harkness::CharacterList] a resource list of characters which appear in this story.
15
38
  attribute :characters, Harkness::CharacterList
39
+ # @!attribute [r] originalIssue
40
+ # @return [Harkness::ComicSummary] a summary representation of the issue in which this story was
41
+ # originally published.
16
42
  attribute :originalIssue, Harkness::ComicSummary
17
43
  end
18
44
 
45
+ # Container class that holds pagination information and results.
19
46
  class StoryDataContainer < Harkness::Base::DataContainer
47
+ # @!attribute [r] results
48
+ # @return [Array<Harkness::Story>] the list of stories returned by the call.
20
49
  attribute :results, Harkness::Story, collection: true
21
50
  end
22
51
 
52
+ # The top level wrapper of a response from the API.
23
53
  class StoryDataWrapper < Harkness::Base::DataWrapper
54
+ # @!attribute [r] data
55
+ # @return [Harkness::StoryDataContainer] the results returned by the call.
24
56
  attribute :data, Harkness::StoryDataContainer
25
57
  end
26
58
  end
@@ -1,13 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
+ # The summary of a story.
4
5
  class StorySummary < Harkness::Base::Summary
6
+ # @!attribute [r] type
7
+ # @return [String] the type of the story (interior or cover)
5
8
  attribute :type, Shale::Type::String
6
9
  end
7
10
 
11
+ # A list of stories.
8
12
  class StoryList < Shale::Mapper
13
+ # @!attribute [r] available
14
+ # @return [Integer] the number of total available stories in this list.
15
+ # Will always be greater than or equal to the "returned" value.
9
16
  attribute :available, Shale::Type::Integer
17
+ # @!attribute [r] returned
18
+ # @return [Integer] the number of stories returned in this collection (up to 20).
19
+ attribute :returned, Shale::Type::Integer
20
+ # @!attribute [r] collectionURI
21
+ # @return [String] the path to the full list of stories in this collection.
10
22
  attribute :collectionURI, Shale::Type::String
23
+ # @!attribute [r] items
24
+ # @return [Array<Harkness::StorySummary>] the list of returned characters in this collection.
11
25
  attribute :items, Harkness::StorySummary, collection: true
12
26
  end
13
27
  end
@@ -1,10 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
- # A text objct
4
+ # A text object.
5
5
  class TextObject < Shale::Mapper
6
+ # @!attribute [r] type
7
+ # @return [String] the canonical type of the text object (e.g. solicit text, preview text, etc.).
6
8
  attribute :type, Shale::Type::String
9
+ # @!attribute [r] language
10
+ # @return [String] the IETF language tag denoting the language the text object is written in.
7
11
  attribute :language, Shale::Type::String
12
+ # @!attribute [r] text
13
+ # @return [String] the text.
8
14
  attribute :text, Shale::Type::String
9
15
  end
10
16
  end
@@ -3,7 +3,11 @@
3
3
  module Harkness
4
4
  # A URL.
5
5
  class URL < Shale::Mapper
6
+ # @!attribute [r] type
7
+ # @return [String] a text identifier for the URL.
6
8
  attribute :type, Shale::Type::String
9
+ # @!attribute [r] url
10
+ # @return [String] a full URL (including scheme, domain, and path).
7
11
  attribute :url, Shale::Type::String
8
12
  end
9
13
  end
@@ -3,19 +3,33 @@
3
3
  require "digest/md5"
4
4
 
5
5
  module Harkness
6
+ # The base resource class.
6
7
  class Resource
8
+ # A Harkness client.
9
+ # @return [Harkness::Client] the Harkness client.
7
10
  attr_reader :client
8
11
 
12
+ # Initialize a new resource.
13
+ # @param client [Harkness::Client] the Harkness client.
9
14
  def initialize(client)
10
15
  @client = client
11
16
  end
12
17
 
13
18
  private
14
19
 
20
+ # Perform a GET request to a URL with params and headers.
21
+ # @param url [String] the URL to send the GET request to.
22
+ # @param params [Hash] URL query parameters to send with the request.
23
+ # @param headers [Hash] headers to send with the request
24
+ # @return [Faraday::Response, Harkness::Error] a Faraday response or Harkness:Error depending
25
+ # upon the status code.
15
26
  def get_request(url, params: {}, headers: {})
16
27
  handle_response client.connection.get(url, authentication_params.merge(params), headers)
17
28
  end
18
29
 
30
+ # Generate the parameters necessary to authenticate with the Marvel API.
31
+ # See [`authorization`](https://developer.marvel.com/documentation/authorization) in the Marvel API documentation.
32
+ # @return [Hash] the calculated authentication parameters.
19
33
  def authentication_params
20
34
  timestamp = Time.now.to_i
21
35
  {
@@ -25,6 +39,10 @@ module Harkness
25
39
  }
26
40
  end
27
41
 
42
+ # Handles a response from the API.
43
+ # @param response [Faraday::Response] the Faraday::Response from the API request.
44
+ # @return [Faraday::Response, Harkness::Error] a Faraday response or Harkness:Error depending
45
+ # upon the status code.
28
46
  def handle_response(response)
29
47
  error_klass = Harkness::Error::STATUS_MAPPINGS[response.status]
30
48
  message = JSON.parse(response.body)["status"] || "API request failed with an unknown error."
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harkness
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harkness
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - duffn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-12 00:00:00.000000000 Z
11
+ date: 2023-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -247,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  - !ruby/object:Gem::Version
248
248
  version: '0'
249
249
  requirements: []
250
- rubygems_version: 3.4.6
250
+ rubygems_version: 3.4.8
251
251
  signing_key:
252
252
  specification_version: 4
253
253
  summary: A library for working (playing) with the Marvel API.