wp-api-client 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1e0339d85de70f76fa1053b11e8c81d34498b57
4
- data.tar.gz: 96321f28e3713c144ee3d580e364ead14a530268
3
+ metadata.gz: a7a1b56612823b783b538e87dc5caf6ed4e00781
4
+ data.tar.gz: 103661f8e6887d36dd16d2c09f0f20f89958928e
5
5
  SHA512:
6
- metadata.gz: 0852242e985bd4de60df6820b522845f422f608e1db5efe3e0e40f429ec5353bbdd6310d0050d9a18edb7aef05c91a6ec2d127b76b29d4db2d751a48bed59bff
7
- data.tar.gz: f7bc70aa9662df06d7916f647119021113ff04c838ccb0090681618436b2cbf341d850425f18851b5839eea9108cf9e0638c759fb5a60aaec462c004a6cff3fc
6
+ metadata.gz: b714dee47f9db903f43ae53d755164e8c92f791a2c531e99ad52c72c016765f304575b46b07e42629bbc0fb699f786114b6c207626c87098f467fc80fbf01ee4
7
+ data.tar.gz: bbe61828ae974866f0ece28763ce654a2d34fdaf1b3b2c18b20ea552815d8e2dcb13dce8f7fae7ecc121c5a854f1516515e1165f088614a81e33578c8a2c7680
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /config/oauth.json
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ # A sample Gemfile
2
+ source "https://rubygems.org"
3
+ gemspec
data/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  This unambitious client provides read-only access for WP-API v2.
4
4
 
5
- It does not support authentication (yet).
5
+ It supports authentication via OAuth.
6
6
 
7
- It does not support comments or POST requests.
7
+ It does not support comments, users or POST requests.
8
8
 
9
9
  It requires **Ruby 2.3** and is tested against **WP-API 2.0-beta12**.
10
10
 
@@ -26,8 +26,12 @@ require 'wp_api_client'
26
26
 
27
27
  ```ruby
28
28
  # create a client
29
- @connection = WpApiClient::Connection.new('http://localhost:8080/wp-json/wp/v2')
30
- @api = WpApiClient::Client.new(@connection)
29
+
30
+ WpApiClient.configure do |api_client|
31
+ api_client.endpoint = 'http://example.com/wp-json/wp/v2'
32
+ end
33
+
34
+ @api = WpApiClient.get_client
31
35
 
32
36
  # get some posts
33
37
  posts = @api.get('custom_post_type/') # or "posts/" etc
@@ -51,7 +55,7 @@ term.taxonomy
51
55
  term.posts
52
56
  # => #<WpApiClient::Collection:0x007fd65d07d588 @resources=[#<WpApiClient::Entities::Post...
53
57
 
54
- # term.posts.first.terms.first.taxonomy.terms.first... etc etc etc
58
+ # term.posts("custom_post_type").first.terms("category").first.taxonomy... etc etc etc
55
59
  ```
56
60
 
57
61
  #### Pagination
@@ -72,6 +76,54 @@ page_after_that = @api.get(next_page.page_after_that)
72
76
  # => #<WpApiClient::Collection:0x00bbcafe938827 @resources=[#<WpApiClient::Entities::Post...
73
77
  ```
74
78
 
79
+ #### Defining relationships
80
+
81
+ The [REST API docs](http://v2.wp-api.org/extending/linking/) invite you to define
82
+ custom relationships to go alongside "http://api.w.org/term" etc.
83
+
84
+ For example, let's say you have a `person` post type and a post-to-post relation
85
+ defined through meta and exposed in the REST API like this:
86
+
87
+ ```php
88
+ add_filter( 'rest_prepare_king', function( $data, $king ) {
89
+ if( $king->queen ) {
90
+ $data->add_link(
91
+ 'http://api.myuniqueuri.com/marriage',
92
+ rest_url( '/wp/v2/person/'.$king->queen ),
93
+ ['embeddable' => true]
94
+ );
95
+ }
96
+ return $data;
97
+ }, 10, 2);
98
+ ```
99
+
100
+ This will cause the `http://api.myuniqueuri.com/marriage` relation to be reflected
101
+ in your `_links` property when you call up the King from the REST API.
102
+
103
+ But you'll get an error if you try to query this relationship using the client.
104
+
105
+ ```ruby
106
+ king = @api.get('person/1')
107
+ queen = king.relations("http://api.myuniqueuri.com/marriage").first
108
+ # => throws WpApiClient::RelationNotDefined
109
+ ```
110
+
111
+ The solution is to register the relationship on configuration:
112
+
113
+ ```ruby
114
+ WpApiClient.configure do |c|
115
+ c.define_mapping("http://api.myuniqueuri.com/marriage", :post)
116
+ end
117
+
118
+ ...
119
+
120
+ king = @api.get('person/1')
121
+ queen = king.relations("http://api.myuniqueuri.com/marriage").first
122
+ # => #<WpApiClient::Entities::Post:0x007fed42b3e458 @resource={"id"=>2...
123
+ ```
124
+
125
+ There is currently support for `:post_type`, `:post`, `:term` and `:meta` (key/value) relations.
126
+
75
127
  #### Loading a taxonomy via a slug
76
128
 
77
129
  WP-API returns an array even if there's only one result, so you need to be careful here
@@ -82,11 +134,25 @@ taxonomy_name = term.taxonomy.name
82
134
  posts = term.posts
83
135
  ```
84
136
 
137
+ #### OAuth
138
+
139
+ Provide a symbol-keyed hash of `token`, `token_secret`, `consumer_key` and `consumer_secret` on configuration.
140
+
141
+ ```ruby
142
+ WpApiClient.configure do |api_client|
143
+ api_client.oauth_credentials = oauth_credentials_hash
144
+ end
145
+
146
+ client = WpApiClient.get_client
147
+ ```
148
+
85
149
  ## Testing and compatibility
86
150
 
87
151
  This library comes with VCR cassettes recorded against a local WP installation
88
152
  running WP-API v2-beta12. It is not tested with other versions.
89
153
 
154
+ If you want to make your own VCR cassettes, use [these scripts](https://github.com/duncanjbrown/WP-REST-Test).
155
+
90
156
  To run the tests, invoke `rspec`.
91
157
 
92
158
  ## Structure
@@ -119,12 +185,10 @@ next_page = @api.get(posts.next_page)
119
185
  # => #<WpApiClient::Collection:0x00bbcafe938827 @resources=[#<WpApiClient::Entities::Post...
120
186
  ```
121
187
 
122
- #### `WpApiClient::Entities::BaseEntity`
188
+ #### `WpApiClient::Entities::Base`
123
189
 
124
- Base class for `Post`, `Term` and `Taxonomy`, so far. Not all methods are implemented.
190
+ Base class for `Post`, `Term`, `Image` and `Taxonomy`, so far. Not all methods are implemented.
125
191
 
126
192
  ## Other
127
193
 
128
- This library puts `?_embed` on every request to save on HTTP requests right now.
129
-
130
194
  Thanks [WP-API](https://github.com/WP-API/WP-API)!
data/lib/wp_api_client.rb CHANGED
@@ -1,10 +1,29 @@
1
1
  require "wp_api_client/version"
2
+ require "wp_api_client/configuration"
3
+
4
+ require "wp_api_client/entities/base"
2
5
 
3
- require "wp_api_client/entities/base_entity"
4
6
  require "wp_api_client/entities/post"
7
+ require "wp_api_client/entities/meta"
5
8
  require "wp_api_client/entities/taxonomy"
6
9
  require "wp_api_client/entities/term"
10
+ require "wp_api_client/entities/image"
11
+ require "wp_api_client/entities/types"
7
12
 
8
13
  require "wp_api_client/client"
9
14
  require "wp_api_client/connection"
10
15
  require "wp_api_client/collection"
16
+ require "wp_api_client/relationship"
17
+
18
+ module WpApiClient
19
+ def self.get_client
20
+ @client ||= Client.new(Connection.new(configuration))
21
+ end
22
+
23
+ # for tests
24
+ def self.reset!
25
+ @client = nil
26
+ end
27
+
28
+ class RelationNotDefined < StandardError; end
29
+ end
@@ -1,12 +1,6 @@
1
1
  module WpApiClient
2
2
  class Client
3
3
 
4
- Types = [
5
- WpApiClient::Entities::Post,
6
- WpApiClient::Entities::Term,
7
- WpApiClient::Entities::Taxonomy
8
- ]
9
-
10
4
  def initialize(connection)
11
5
  @connection = connection
12
6
  end
@@ -26,21 +20,11 @@ module WpApiClient
26
20
 
27
21
  # Take the API response and figure out what it is
28
22
  def native_representation_of(response_body)
23
+ # Do we have a collection of objects?
29
24
  if response_body.is_a? Array
30
- collection = true
31
- object = response_body.first
32
- else
33
- collection = false
34
- object = response_body
35
- end
36
-
37
- type = Types.find { |type| type.represents?(object) }
38
-
39
- if collection
40
- resources = response_body.map! { |object| type.new(object, self) }
41
- WpApiClient::Collection.new(resources, @headers)
25
+ WpApiClient::Collection.new(response_body, @headers)
42
26
  else
43
- type.new(response_body, self)
27
+ WpApiClient::Entities::Base.build(response_body)
44
28
  end
45
29
  end
46
30
  end
@@ -4,10 +4,13 @@ module WpApiClient
4
4
 
5
5
  attr_accessor :resources, :total_available
6
6
 
7
- def initialize(resources, headers)
8
- @resources = resources
9
- @links = parse_link_header(headers['Link'])
10
- @total_available = headers['X-WP-TOTAL'].to_i
7
+ def initialize(resources, headers = nil)
8
+ resources = [resources] unless resources.is_a? Array
9
+ @resources = resources.map { |object| WpApiClient::Entities::Base.build(object) }
10
+ if headers
11
+ @links = parse_link_header(headers['Link'])
12
+ @total_available = headers['X-WP-TOTAL'].to_i
13
+ end
11
14
  end
12
15
 
13
16
  def each(&block)
@@ -22,10 +25,6 @@ module WpApiClient
22
25
  @links[:prev] && @links[:prev]
23
26
  end
24
27
 
25
- def method_missing(sym)
26
- @resources.send(sym)
27
- end
28
-
29
28
  private
30
29
 
31
30
  # https://www.snip2code.com/Snippet/71914/Parse-link-headers-from-Github-API-in-Ru
@@ -0,0 +1,44 @@
1
+ module WpApiClient
2
+
3
+ class << self
4
+ attr_writer :configuration
5
+ end
6
+
7
+ def self.configuration
8
+ @configuration ||= Configuration.new
9
+ end
10
+
11
+ def self.configure
12
+ yield(configuration)
13
+ end
14
+
15
+ def self.reset
16
+ @configuration = Configuration.new
17
+ end
18
+
19
+ class Configuration
20
+ attr_accessor :endpoint
21
+ attr_accessor :embed
22
+ attr_accessor :oauth_credentials
23
+ attr_accessor :debug
24
+ attr_accessor :cache
25
+
26
+ def initialize
27
+ @endpoint = 'http://localhost:8080/wp-json/wp/v2'
28
+ @embed = true
29
+ end
30
+
31
+ def define_mapping(relation, type)
32
+ WpApiClient::Relationship.define(relation, type)
33
+ end
34
+
35
+ def request_params
36
+ params = {}
37
+ if @embed
38
+ params[:_embed] = true
39
+ end
40
+ params
41
+ end
42
+
43
+ end
44
+ end
@@ -1,15 +1,29 @@
1
1
  require 'faraday'
2
2
  require 'faraday_middleware'
3
+ require 'faraday-http-cache'
3
4
 
4
5
  module WpApiClient
5
6
  class Connection
6
7
 
7
8
  attr_accessor :headers
8
9
 
9
- def initialize(endpoint)
10
- @conn = Faraday.new(:url => endpoint) do |faraday|
11
- faraday.request :url_encoded # form-encode POST params
12
- #faraday.response :logger # log requests to STDOUT
10
+ def initialize(configuration)
11
+ @configuration = configuration
12
+ @conn = Faraday.new(url: configuration.endpoint) do |faraday|
13
+
14
+ if configuration.oauth_credentials
15
+ faraday.use FaradayMiddleware::OAuth, configuration.oauth_credentials
16
+ end
17
+
18
+ if configuration.debug
19
+ faraday.response :logger
20
+ end
21
+
22
+ if configuration.cache
23
+ faraday.use :http_cache, store: configuration.cache
24
+ end
25
+
26
+ faraday.use Faraday::Response::RaiseError
13
27
  faraday.response :json, :content_type => /\bjson$/
14
28
  faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
15
29
  end
@@ -17,7 +31,7 @@ module WpApiClient
17
31
 
18
32
  # translate requests into wp-api urls
19
33
  def get(url, params = {})
20
- @conn.get url, params.merge({_embed: true})
34
+ @conn.get url, params.merge(@configuration.request_params)
21
35
  end
22
36
  end
23
37
  end
@@ -0,0 +1,36 @@
1
+ require 'open-uri'
2
+
3
+ module WpApiClient
4
+ module Entities
5
+ class Base
6
+ attr_reader :resource
7
+
8
+ def self.build(resource)
9
+ raise Exception if resource.nil?
10
+ type = WpApiClient::Entities::Types.find { |type| type.represents?(resource) }
11
+ type.new(resource)
12
+ end
13
+
14
+ def initialize(resource)
15
+ unless resource.is_a? Hash
16
+ raise ArgumentError.new('Tried to initialize a WP-API resource with something other than a Hash')
17
+ end
18
+ @resource = resource
19
+ end
20
+
21
+ def links
22
+ resource["_links"]
23
+ end
24
+
25
+ def relations(relation, relation_to_return = nil)
26
+ relationship = Relationship.new(@resource, relation)
27
+ relations = relationship.get_relations
28
+ if relation_to_return
29
+ relations[relation_to_return]
30
+ else
31
+ relations
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ module WpApiClient
2
+ module Entities
3
+ class Image < Base
4
+ alias :image :resource
5
+
6
+ def self.represents?(json)
7
+ json["media_type"] and json["media_type"] == 'image'
8
+ end
9
+
10
+ def sizes(size = :full)
11
+ image.dig("media_details", "sizes", size.to_s, "source_url")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module WpApiClient
2
+ module Entities
3
+ class Meta < Base
4
+ alias :meta :resource
5
+
6
+ def self.represents?(json)
7
+ json["key"] and json["value"]
8
+ end
9
+
10
+ def key
11
+ meta["key"]
12
+ end
13
+
14
+ def value
15
+ meta["value"]
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,6 @@
1
1
  module WpApiClient
2
2
  module Entities
3
- class Post < BaseEntity
3
+ class Post < Base
4
4
  alias :post :resource
5
5
 
6
6
  def self.represents?(json)
@@ -11,28 +11,32 @@ module WpApiClient
11
11
  post["title"]["rendered"]
12
12
  end
13
13
 
14
+ def slug
15
+ post["slug"]
16
+ end
17
+
14
18
  def date
15
- Time.new(post["date_gmt"])
19
+ Time.parse(post["date_gmt"]) if post["date_gmt"]
16
20
  end
17
21
 
18
22
  def content
19
23
  post["content"]["rendered"]
20
24
  end
21
25
 
26
+ def excerpt
27
+ post["excerpt"]["rendered"]
28
+ end
29
+
22
30
  def id
23
31
  post["id"]
24
32
  end
25
33
 
26
- def terms
27
- if embedded?
28
- terms = []
29
- embedded["https://api.w.org/term"].map do |taxonomy|
30
- taxonomy.each do |term|
31
- terms << WpApiClient::Entities::Term.new(term, @api)
32
- end
33
- end
34
- terms
35
- end
34
+ def terms(taxonomy = nil)
35
+ relations("https://api.w.org/term", taxonomy)
36
+ end
37
+
38
+ def meta(key = nil)
39
+ @meta ||= relations("https://api.w.org/meta", key)
36
40
  end
37
41
  end
38
42
  end
@@ -1,6 +1,6 @@
1
1
  module WpApiClient
2
2
  module Entities
3
- class Taxonomy < BaseEntity
3
+ class Taxonomy < Base
4
4
  alias :taxonomy :resource
5
5
 
6
6
  def self.represents?(json)
@@ -12,7 +12,7 @@ module WpApiClient
12
12
  end
13
13
 
14
14
  def terms
15
- @api.get(links["https://api.w.org/items"].first["href"])
15
+ relations("https://api.w.org/items")
16
16
  end
17
17
  end
18
18
  end
@@ -1,6 +1,6 @@
1
1
  module WpApiClient
2
2
  module Entities
3
- class Term < BaseEntity
3
+ class Term < Base
4
4
  alias :term :resource
5
5
 
6
6
  def self.represents?(json)
@@ -8,13 +8,11 @@ module WpApiClient
8
8
  end
9
9
 
10
10
  def taxonomy
11
- @api.get(links["about"].first["href"])
11
+ WpApiClient.get_client.get(links["about"].first["href"])
12
12
  end
13
13
 
14
- def posts(post_type = "post")
15
- post_type_links = links["http://api.w.org/v2/post_type"]
16
- link = post_type_links.find { |link| link["href"] =~ /wp\/v2\/#{post_type}/ }
17
- @api.get(link["href"]) if link
14
+ def posts(post_type = nil)
15
+ relations("http://api.w.org/v2/post_type", post_type)
18
16
  end
19
17
 
20
18
  def name
@@ -0,0 +1,11 @@
1
+ module WpApiClient
2
+ module Entities
3
+ Types = [
4
+ Image,
5
+ Post,
6
+ Meta,
7
+ Term,
8
+ Taxonomy
9
+ ]
10
+ end
11
+ end
@@ -0,0 +1,110 @@
1
+ require 'open-uri'
2
+
3
+ module WpApiClient
4
+ class Relationship
5
+
6
+ class << self
7
+ attr_writer :mappings
8
+
9
+ def mappings
10
+ @mappings ||= default_mappings
11
+ end
12
+
13
+ def define(relation, type)
14
+ mappings[relation] = type
15
+ end
16
+
17
+ def default_mappings
18
+ {
19
+ "https://api.w.org/term" => :term,
20
+ "https://api.w.org/items" => :terms,
21
+ "http://api.w.org/v2/post_type" => :post_type,
22
+ "https://api.w.org/meta" => :meta,
23
+ "https://api.w.org/featuredmedia" => :post
24
+ }
25
+ end
26
+
27
+ def term(r)
28
+ relations = {}
29
+ r.resource["_links"][r.relation].each_with_index do |link, position|
30
+ relations.merge! Hash[link["taxonomy"], r.load_relation(r.relation, position)]
31
+ end
32
+ relations
33
+ end
34
+
35
+ def terms(r)
36
+ r.load_relation(r.relation, 0)
37
+ end
38
+
39
+ def post_type(r)
40
+ relations = {}
41
+ r.resource["_links"][r.relation].each_with_index do |link, position|
42
+ # get the post type out of the linked URL.
43
+ post_type = URI.parse(link["href"]).path.split('wp/v2/').pop.split('/').first
44
+ relations.merge! Hash[post_type, r.load_relation(r.relation, position)]
45
+ end
46
+ relations
47
+ end
48
+
49
+ def post(r)
50
+ r.load_relation(r.relation)
51
+ end
52
+
53
+ def meta(r)
54
+ relations = {}
55
+ meta = WpApiClient.get_client.get(r.resource["_links"][r.relation].first["href"])
56
+ meta.map do |m|
57
+ relations.merge! Hash[m.key, m.value]
58
+ end
59
+ relations
60
+ end
61
+ end
62
+
63
+ attr_reader :resource
64
+ attr_reader :relation
65
+
66
+ def initialize(resource, relation)
67
+ @resource = resource
68
+ @relation = relation
69
+ end
70
+
71
+ def get_relations
72
+ mapping = self.class.mappings[@relation]
73
+ if !mapping
74
+ raise WpApiClient::RelationNotDefined.new %{
75
+ => The relation "#{@relation}" is not defined.
76
+
77
+ To add a new relation, define it at configuration. For example, to define this
78
+ relation as one that links to a post object, you would do the following.
79
+
80
+ WpApiClient.configure do |c|
81
+ c.define_mapping(#{@relation}, :post)
82
+ end
83
+
84
+ The currently defined relations are:
85
+
86
+ #{self.class.mappings.keys.join("\n") }
87
+
88
+ Available mappings are :post, :term, and :meta.}
89
+ end
90
+
91
+ # Only try to fetch the relation if there are any links to it
92
+ self.class.send(mapping, self) if resource["_links"][relation]
93
+ end
94
+
95
+ # try to load an embedded object; call out to the API if not
96
+ def load_relation(relationship, position = nil)
97
+ if objects = @resource.dig("_embedded", relationship)
98
+ location = position ? objects[position] : objects
99
+ WpApiClient::Collection.new(location)
100
+ else
101
+ unless position.nil?
102
+ location = @resource["_links"].dig(relationship, position.to_i, "href")
103
+ else
104
+ location = @resource["_links"][relationship]["href"]
105
+ end
106
+ WpApiClient.get_client.get(location) if location
107
+ end
108
+ end
109
+ end
110
+ end
@@ -1,3 +1,3 @@
1
1
  module WpApiClient
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -30,6 +30,8 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.add_dependency "faraday", "~> 0.9"
32
32
  spec.add_dependency "faraday_middleware", "~> 0.10"
33
+ spec.add_dependency "faraday-http-cache", "~> 1.2"
34
+ spec.add_dependency "simple_oauth", "~> 0.3"
33
35
 
34
36
  spec.add_development_dependency "bundler", "~> 1.11"
35
37
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wp-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duncan Brown
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-01 00:00:00.000000000 Z
11
+ date: 2016-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday-http-cache
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simple_oauth
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.3'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -105,6 +133,7 @@ files:
105
133
  - ".rspec"
106
134
  - ".travis.yml"
107
135
  - CODE_OF_CONDUCT.md
136
+ - Gemfile
108
137
  - LICENSE.txt
109
138
  - README.md
110
139
  - Rakefile
@@ -113,11 +142,16 @@ files:
113
142
  - lib/wp_api_client.rb
114
143
  - lib/wp_api_client/client.rb
115
144
  - lib/wp_api_client/collection.rb
145
+ - lib/wp_api_client/configuration.rb
116
146
  - lib/wp_api_client/connection.rb
117
- - lib/wp_api_client/entities/base_entity.rb
147
+ - lib/wp_api_client/entities/base.rb
148
+ - lib/wp_api_client/entities/image.rb
149
+ - lib/wp_api_client/entities/meta.rb
118
150
  - lib/wp_api_client/entities/post.rb
119
151
  - lib/wp_api_client/entities/taxonomy.rb
120
152
  - lib/wp_api_client/entities/term.rb
153
+ - lib/wp_api_client/entities/types.rb
154
+ - lib/wp_api_client/relationship.rb
121
155
  - lib/wp_api_client/version.rb
122
156
  - wp_api_client.gemspec
123
157
  homepage: https://github.com/duncanjbrown/wp-api-client
@@ -1,25 +0,0 @@
1
- module WpApiClient
2
- module Entities
3
- class BaseEntity
4
- attr_reader :resource
5
-
6
- def initialize(resource, api)
7
- unless resource.is_a? Hash
8
- raise ArgumentError.new('Tried to initialize a WP-API resource with something other than a Hash')
9
- end
10
- @resource = resource
11
- @api = api
12
- end
13
-
14
- def links
15
- resource["_links"]
16
- end
17
-
18
- def embedded
19
- resource["_embedded"]
20
- end
21
-
22
- alias :embedded? :embedded
23
- end
24
- end
25
- end