ravelry 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: 9109931a9b33ea14a93c82f5fd81d4ad1f2d47ea
4
- data.tar.gz: 1a5fd7b46c9049d75f5255772f27d667e39ffe53
3
+ metadata.gz: 069008bb3012510d0c56139996efd09180c18c35
4
+ data.tar.gz: da328e573a10420115bb936ca902b68c54ddcc60
5
5
  SHA512:
6
- metadata.gz: bac3a69cd317f41303aeb7a8accd7b85c1b64d1f549033906aadcd3100ef8259b2cf0d3403b7fa8ecc6d71d40eb1d47ec054ed096a131b26ea950c8783d5996d
7
- data.tar.gz: 7a45bd027bf36ed7a8ff3f078132ef1e39148b8de8ecad9a5367dec2fd1f4a5ac9581ac1b92ece8080607a0f5c770c0ec206dfa3c02652cb1108320ead0a04e8
6
+ metadata.gz: 0b0ef35f8f4eeebcf3994cab99ee7a56acc01053a84b16707ffe3aec8ab398b19782f1a6c6182b4f77c010307a5126acc98e20f471afb90a7f918934be01279d
7
+ data.tar.gz: 2aa97bb1a10842a9aec7d41bd5c500a0379c5ed81a1bfac16fd907b69891151a75e00d7411ffac21ffe1f6cf5069f98fc9a92f3923d1d4e33b6c18dbb8b9a62f
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Ravelry
2
2
 
3
- _You are reading documentation for version: 0.0.5_
3
+ _You are reading documentation for version: 0.0.6_
4
4
 
5
- [ ![Codeship Status for ArtCraftCode/ravelry](https://codeship.com/projects/fc6710e0-5719-0133-36cc-5ebc52a48109/status?branch=0.0.5)](https://codeship.com/projects/109462)
5
+ [ ![Codeship Status for ArtCraftCode/ravelry](https://codeship.com/projects/fc6710e0-5719-0133-36cc-5ebc52a48109/status?branch=0.0.6)](https://codeship.com/projects/109462)
6
6
 
7
7
  This gem is actively being developed. Be sure to check the branch for the version you're using as breaking changes can (and will!) be introduced.
8
8
 
@@ -14,10 +14,17 @@ Ravelry API documentation is currently available [here](http://www.ravelry.com/a
14
14
 
15
15
  ## API coverage
16
16
 
17
- * [`Patterns#show`](http://www.ravelry.com/api#patterns_show) maps to `Ravelry::Pattern`
18
- * [`People#show`](http://www.ravelry.com/api#people_show) maps to `Ravelry::User`
19
- * [`Misc#color_families`](http://www.ravelry.com/api#/_color_families) maps to `Ravelry::Misc.color_families`
20
- * [`Misc#yarn_weights`](http://www.ravelry.com/api#/_yarn_weights) maps to `Ravelry::Misc.yarn_weights`
17
+ See documentation for each class (or module) to see how to initialize the objects.
18
+
19
+ API | Endpoint | Ravelry gem class / module
20
+ ----|----------|------------------
21
+ **Misc** | [color_families](http://www.ravelry.com/api#/_color_families) | `Ravelry::Misc.color_families`
22
+ **Misc** | [yarn_weights](http://www.ravelry.com/api#/_yarn_weights) | `Ravelry::Misc.yarn_weights`
23
+ **Needles** | [list](http://www.ravelry.com/api#needles_list) | `Ravelry::Needles.list`
24
+ **Needles** | [sizes](http://www.ravelry.com/api#needles_sizes) | `Ravelry::Needles.sizes`
25
+ **Needles** | [types](http://www.ravelry.com/api#needles_types) | `Ravelry::Needles.types`
26
+ **Patterns** | [show](http://www.ravelry.com/api#patterns_show) | `Ravelry::Pattern.get`
27
+ **People** | [show](http://www.ravelry.com/api#people_show) | `Ravelry::User.get`
21
28
 
22
29
  # Installation
23
30
 
@@ -32,7 +39,7 @@ Hooray! You now have a gem.
32
39
  Add to your `Gemfile`:
33
40
 
34
41
  ```ruby
35
- gem "ravelry", "~> 0.0.5"
42
+ gem "ravelry", "~> 0.0.6"
36
43
  ```
37
44
 
38
45
  **I highly recommend pinning your version** because the gem is in active development and I _promise_ I will break shit.
@@ -67,7 +74,7 @@ Ravelry.configuration.personal_key
67
74
 
68
75
  # Usage
69
76
 
70
- Full documentation for this gem is available [here](http://www.rubydoc.info/gems/ravelry/0.0.5).
77
+ Full documentation for this gem is available [here](http://www.rubydoc.info/gems/ravelry/0.0.6).
71
78
 
72
79
  # API quirks
73
80
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -4,6 +4,7 @@ require 'typhoeus'
4
4
  require 'ravelry/configuration'
5
5
 
6
6
  require 'ravelry/utils/build'
7
+ require 'ravelry/utils/request'
7
8
  require 'ravelry/utils/utilities'
8
9
 
9
10
  require 'ravelry/author'
@@ -12,9 +13,10 @@ require 'ravelry/color_family'
12
13
  require 'ravelry/craft'
13
14
  require 'ravelry/data'
14
15
  require 'ravelry/misc'
16
+ require 'ravelry/needle'
17
+ require 'ravelry/needles'
15
18
  require 'ravelry/pack'
16
19
  require 'ravelry/pattern'
17
- require 'ravelry/pattern_needle'
18
20
  require 'ravelry/pattern_type'
19
21
  require 'ravelry/photo'
20
22
  require 'ravelry/printing'
@@ -1,5 +1,7 @@
1
1
  module Ravelry
2
2
 
3
+ # Handles API request for the `Misc` endpoints. Always returns an array of objects.
4
+ #
3
5
  module Misc
4
6
  extend self
5
7
 
@@ -8,17 +10,17 @@ module Ravelry
8
10
  # Returns an array of {Ravelry::ColorFamily} objects.
9
11
  #
10
12
  def color_families
11
- request = Typhoeus::Request.get("https://api.ravelry.com/color_families.json", userpwd: "#{Ravelry.configuration.access_key}:#{Ravelry.configuration.personal_key}")
12
- result = JSON.parse(request.response_body, {symbolize_names: true})
13
- @data = result[:color_families]
14
- @data.map { |d| ColorFamily.new(d) }
13
+ result = Utils::Request.get("color_families.json", :color_families)
14
+ result.map { |color_family| ColorFamily.new(color_family) }
15
15
  end
16
16
 
17
+ # Handles GET API call and parses JSON response for the `Misc#color_families` Ravelry endpoint.
18
+ #
19
+ # Returns an array of {Ravelry::ColorFamily} objects.
20
+ #
17
21
  def yarn_weights
18
- request = Typhoeus::Request.get("https://api.ravelry.com/yarn_weights.json", userpwd: "#{Ravelry.configuration.access_key}:#{Ravelry.configuration.personal_key}")
19
- result = JSON.parse(request.response_body, {symbolize_names: true})
20
- @data = result[:yarn_weights]
21
- @data.map { |d| YarnWeight.new(d) }
22
+ result = Utils::Request.get("yarn_weights.json", :yarn_weights)
23
+ result.map { |yarn_weight| YarnWeight.new(yarn_weight) }
22
24
  end
23
25
  end
24
26
  end
@@ -0,0 +1,74 @@
1
+ module Ravelry
2
+
3
+ # The API endpoint for fetching `Needle` objects can be found in {Ravelry::Needles}.
4
+ #
5
+ # A `Needle` object can be created by several different endpoints but is currently only implemented in {Ravelry::Misc}.
6
+ #
7
+ class Needle
8
+ attr_reader :id, :metric, :metric_name, :hook, :name, :pretty_metric, :us, :description, :length, :needle_size_id, :type_name, :comment, :needle_type, :needle_type_id, :data
9
+ def initialize(data)
10
+ @data = data
11
+ @id = data[:id]
12
+ # Crochet hook size.
13
+ # Corresponding to this metric size, if one exists.
14
+ #
15
+ @hook = data[:hook]
16
+ # US size number corresponding to this metric size, if one exists
17
+ #
18
+ @us = data[:us]
19
+ # Combination of US and metric.
20
+ # Example: "US 4 - 3.5 mm"
21
+ #
22
+ @name = data[:name]
23
+ # Metric designation for hook size.
24
+ #
25
+ @metric = data[:metric]
26
+ # Metric size for knitting needles (Integer or Float).
27
+ #
28
+ @metric_name = data[:metric_name]
29
+ # Metric size for knitting needles (pretty format).
30
+ #
31
+ @pretty_metric = data[:pretty_metric]
32
+
33
+ @description = data[:description]
34
+ @length = data[:length]
35
+ @needle_size_id = data[:needle_size_id]
36
+ @type_name = data[:type_name]
37
+ @needle_type = data[:needle_type]
38
+ @needle_type_id = data[:needle_type_id]
39
+ @comment = data[:comment]
40
+ end
41
+
42
+ # Takes the US size and turns it into a string.
43
+ # Example: "US 4"
44
+ #
45
+ def us_string
46
+ "US #{@us}".strip
47
+ end
48
+
49
+ # Takes the metric size and turns it into a string.
50
+ # Example: "3.5 mm"
51
+ #
52
+ def metric_string
53
+ "#{@metric} mm"
54
+ end
55
+
56
+ # Sets @type to 'knitting' or 'crochet'.
57
+ #
58
+ def type
59
+ if hook || data[:crochet]
60
+ 'crochet'
61
+ else
62
+ 'knitting'
63
+ end
64
+ end
65
+
66
+ def knitting?
67
+ type == 'knitting'
68
+ end
69
+
70
+ def crochet?
71
+ type == 'crochet'
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,35 @@
1
+ module Ravelry
2
+
3
+ # Handles API request for the `Needles` endpoints. Always returns an array of {Ravelry::Needle} objects.
4
+ #
5
+ module Needles
6
+ extend self
7
+
8
+ # Get available sizes for each needle type. If you don't pass an argument, you'll get all knitting needle and crochet hook sizes.
9
+ #
10
+ # If you pass an argument (`'knitting'` or `'crochet'`), you will only get results that match that type.
11
+ #
12
+ # Arguments: needle type (string, optional)
13
+ #
14
+ def sizes(craft='')
15
+ result = Utils::Request.get("needles/sizes.json?craft=#{craft}", :needle_sizes)
16
+ result.map { |needle| Needle.new(needle) }
17
+ end
18
+
19
+ # Get needle types.
20
+ #
21
+ def types
22
+ result = Utils::Request.get("needles/types.json", :needle_types)
23
+ result.map { |needle| Needle.new(needle) }
24
+ end
25
+
26
+ # Get needle records for an individual user.
27
+ #
28
+ # Arguments: username (string, required)
29
+ #
30
+ def list(username)
31
+ result = Utils::Request.get("people/#{username}/needles/list.json", :needle_records)
32
+ result.map { |needle| Needle.new(needle) }
33
+ end
34
+ end
35
+ end
@@ -2,7 +2,7 @@ module Ravelry
2
2
 
3
3
  # `Ravelry::Pattern` corresponds to Pattern objects in Ravelry.
4
4
  #
5
- # This class requires your environment variables be set (see {file:README.md README}). API calls are authenticated using HTTP Basic Auth unless otherwise noted.
5
+ # This class requires your configuration variables be set (see {file:README.md README}). API calls are authenticated using HTTP Basic Auth unless otherwise noted.
6
6
  #
7
7
  # If your `pattern.data` is missing one of the attributes below, that method will return `nil`.
8
8
  #
@@ -64,7 +64,7 @@ module Ravelry
64
64
  # To create all associated objects at once, call the following method after initialization:
65
65
  #
66
66
  # ```ruby
67
- # pattern.build_all_objects
67
+ # pattern.build
68
68
  # ```
69
69
  #
70
70
  # Note that this does not perform an API call: it creates the objects using the data returned from the initial `get` for your pattern object.
@@ -74,7 +74,7 @@ module Ravelry
74
74
  # * `pattern.author` - a {Ravelry::Author} object
75
75
  # * `pattern.categories` - an array of {Ravelry::Category} objects
76
76
  # * `pattern.craft` - a {Ravelry::Craft} object
77
- # * `pattern.needles` - an array of {Ravelry::PatternNeedle} objects
77
+ # * `pattern.needles` - an array of {Ravelry::Needle} objects
78
78
  # * `pattern.packs` - array of {Ravelry::Pack} objects
79
79
  # * `pattern.photos` - an array of {Ravelry::Photo} objects
80
80
  # * `pattern.printings` - an array of {Raverly::Printing} objects
@@ -91,11 +91,11 @@ module Ravelry
91
91
  attr_reader :author, :categories, :craft, :needles, :packs, :photos, :printings, :type, :yarns, :yarn_weights
92
92
 
93
93
  # Handles GET API call and parses JSON response.
94
+ #
95
+ # Corresponds to Ravelry API endpoint `Patterns#show`
94
96
  #
95
97
  def get
96
- request = Typhoeus::Request.get("https://api.ravelry.com/patterns/#{@id}.json", userpwd: "#{Ravelry.configuration.access_key}:#{Ravelry.configuration.personal_key}")
97
- result = JSON.parse(request.response_body, {symbolize_names: true})
98
- @data = result[:pattern]
98
+ @data = Utils::Request.get("patterns/#{@id}.json", :pattern)
99
99
  end
100
100
 
101
101
  # Creates all objects associated with your pattern; returns nothing; sets `attr_readers`.
@@ -32,16 +32,16 @@ module Ravelry
32
32
  @craft = Craft.new(data[:craft])
33
33
  end
34
34
 
35
- # Creates and returns an array of {Ravelry::PatternNeedle} objects.
35
+ # Creates and returns an array of {Ravelry::Needle} objects.
36
36
  #
37
37
  # There is more than one API endpoint for Needles. This may not be the one you are looking for.
38
38
  #
39
- # See {Ravelry::PatternNeedle} for more information.
39
+ # See {Ravelry::Needle} for more information.
40
40
  #
41
41
  def self.needles(data)
42
42
  @needles = []
43
43
  data[:pattern_needle_sizes].each do |ndl|
44
- @needles << PatternNeedle.new(ndl)
44
+ @needles << Needle.new(ndl)
45
45
  end
46
46
  @needles
47
47
  end
@@ -0,0 +1,14 @@
1
+ module Ravelry
2
+ module Utils
3
+ module Request
4
+ extend self
5
+
6
+ def get(url, key)
7
+ request = Typhoeus::Request.get("https://api.ravelry.com/#{url}", userpwd: "#{Ravelry.configuration.access_key}:#{Ravelry.configuration.personal_key}")
8
+ data = JSON.parse(request.response_body, {symbolize_names: true})
9
+ return data[key] if key
10
+ return data
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Ravelry
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,20 +1,16 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
- describe Ravelry::PatternNeedle do
3
+ describe Ravelry::Needle do
4
4
  before do
5
- @ndl = Ravelry::PatternNeedle.new(needle)
5
+ @ndl = Ravelry::Needle.new(needle)
6
6
  @data = needle
7
7
  end
8
8
 
9
9
  it 'creates an instance of Needle' do
10
- expect(@ndl).to be_instance_of(Ravelry::PatternNeedle)
10
+ expect(@ndl).to be_instance_of(Ravelry::Needle)
11
11
  end
12
12
 
13
13
  context 'has and sets reader attributes for' do
14
- it 'type' do
15
- expect(@ndl.type).to eq('knitting')
16
- end
17
-
18
14
  it 'hook' do
19
15
  expect(@ndl.hook).to eq(@data[:hook])
20
16
  end
@@ -26,10 +22,6 @@ describe Ravelry::PatternNeedle do
26
22
  it 'metric' do
27
23
  expect(@ndl.metric).to eq(@data[:metric])
28
24
  end
29
-
30
- it 'knitting' do
31
- expect(@ndl.knitting).to eq(@data[:name])
32
- end
33
25
  end
34
26
 
35
27
  context 'class methods' do
@@ -37,7 +29,7 @@ describe Ravelry::PatternNeedle do
37
29
  ndl = { :hook=>"E", :us_steel=>"00", :name=>"US 4 - 3.5 mm",
38
30
  :crochet=>true, :metric=>3.5, :knitting=>false, :us=>"4 ",
39
31
  :id=>4 }
40
- needle = Ravelry::PatternNeedle.new(ndl)
32
+ needle = Ravelry::Needle.new(ndl)
41
33
  expect(needle.type).to eq('crochet')
42
34
  end
43
35
 
@@ -0,0 +1,24 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Ravelry::Needles do
4
+ context '#sizes' do
5
+ it 'should return an array of needles' do
6
+ result = Ravelry::Needles.sizes
7
+ expect(result.first).to be_instance_of(Ravelry::Needle)
8
+ end
9
+ end
10
+
11
+ context '#types' do
12
+ it 'should return an array of needles' do
13
+ result = Ravelry::Needles.types
14
+ expect(result.first).to be_instance_of(Ravelry::Needle)
15
+ end
16
+ end
17
+
18
+ context '#list' do
19
+ it 'should return an array of needles' do
20
+ result = Ravelry::Needles.list("feministy")
21
+ expect(result.first).to be_instance_of(Ravelry::Needle)
22
+ end
23
+ end
24
+ end
@@ -65,7 +65,7 @@ describe Ravelry::Build do
65
65
  end
66
66
 
67
67
  it 'returns an Array of Needle objects' do
68
- expect(@needles[0]).to be_instance_of(Ravelry::PatternNeedle)
68
+ expect(@needles[0]).to be_instance_of(Ravelry::Needle)
69
69
  end
70
70
  end
71
71
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ravelry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liz Abinante
@@ -76,9 +76,10 @@ files:
76
76
  - lib/ravelry/craft.rb
77
77
  - lib/ravelry/data.rb
78
78
  - lib/ravelry/misc.rb
79
+ - lib/ravelry/needle.rb
80
+ - lib/ravelry/needles.rb
79
81
  - lib/ravelry/pack.rb
80
82
  - lib/ravelry/pattern.rb
81
- - lib/ravelry/pattern_needle.rb
82
83
  - lib/ravelry/pattern_type.rb
83
84
  - lib/ravelry/photo.rb
84
85
  - lib/ravelry/printing.rb
@@ -86,6 +87,7 @@ files:
86
87
  - lib/ravelry/user.rb
87
88
  - lib/ravelry/user_site.rb
88
89
  - lib/ravelry/utils/build.rb
90
+ - lib/ravelry/utils/request.rb
89
91
  - lib/ravelry/utils/utilities.rb
90
92
  - lib/ravelry/version.rb
91
93
  - lib/ravelry/yarn.rb
@@ -101,8 +103,9 @@ files:
101
103
  - spec/ravelry/craft_spec.rb
102
104
  - spec/ravelry/data_spec.rb
103
105
  - spec/ravelry/misc_spec.rb
106
+ - spec/ravelry/needle_spec.rb
107
+ - spec/ravelry/needles_spec.rb
104
108
  - spec/ravelry/pack_spec.rb
105
- - spec/ravelry/pattern_needle_spec.rb
106
109
  - spec/ravelry/pattern_spec.rb
107
110
  - spec/ravelry/pattern_type_spec.rb
108
111
  - spec/ravelry/photo_spec.rb
@@ -133,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
136
  version: '0'
134
137
  requirements: []
135
138
  rubyforge_project:
136
- rubygems_version: 2.4.8
139
+ rubygems_version: 2.2.2
137
140
  signing_key:
138
141
  specification_version: 4
139
142
  summary: Ruby gem for accessing the Ravelry API.
@@ -148,8 +151,9 @@ test_files:
148
151
  - spec/ravelry/craft_spec.rb
149
152
  - spec/ravelry/data_spec.rb
150
153
  - spec/ravelry/misc_spec.rb
154
+ - spec/ravelry/needle_spec.rb
155
+ - spec/ravelry/needles_spec.rb
151
156
  - spec/ravelry/pack_spec.rb
152
- - spec/ravelry/pattern_needle_spec.rb
153
157
  - spec/ravelry/pattern_spec.rb
154
158
  - spec/ravelry/pattern_type_spec.rb
155
159
  - spec/ravelry/photo_spec.rb
@@ -160,3 +164,4 @@ test_files:
160
164
  - spec/ravelry/yarn_weight_spec.rb
161
165
  - spec/ravelry_spec.rb
162
166
  - spec/spec_helper.rb
167
+ has_rdoc:
@@ -1,54 +0,0 @@
1
- module Ravelry
2
-
3
- # The information used to create `Ravelry::PatternNeedle` objects comes from {Ravelry::Pattern} objects.
4
- #
5
- # You should not create `PatternNeedle` objects manually; they are all created–and owned–by a {Ravelry::Pattern}.
6
- #
7
- # Note that there are other API endpoints for Needles; this might not be the one that you're looking for.
8
- #
9
- # See {Ravelry::Pattern} for more information about `Pattern` objects.
10
- #
11
- class PatternNeedle
12
-
13
- attr_reader :type, :hook, :us, :metric, :knitting
14
-
15
- def initialize(needle)
16
- @needle = needle
17
- # Crochet hook size.
18
- #
19
- @hook = needle[:hook]
20
- # US size for knitting needles (Integer or Float).
21
- #
22
- @us = needle[:us]
23
- # Metric size for knitting needles (Integer or Float).
24
- #
25
- @metric = needle[:metric]
26
- # Combination of US and metric.
27
- # Example: "US 4 - 3.5 mm"
28
- #
29
- @knitting = needle[:name]
30
- end
31
-
32
- # Sets @type to 'knitting' or 'crochet'.
33
- #
34
- def type
35
- @type = 'knitting' if @needle[:knitting]
36
- @type = 'crochet' if @needle[:crochet]
37
- @type
38
- end
39
-
40
- # Takes the US size and turns it into a sentence.
41
- # Example: "US 4"
42
- #
43
- def us_string
44
- "US #{@us}".strip
45
- end
46
-
47
- # Takes the metric size and turns it into a sentence.
48
- # Example: "3.5 mm"
49
- #
50
- def metric_string
51
- "#{@metric} mm"
52
- end
53
- end
54
- end