easy_broker 0.1.5 → 1.0.2

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
  SHA256:
3
- metadata.gz: 5c3fc54d9f30598f2a8499cb0be351a5daa7cd03a1bd91f022cb2da545f0b3a1
4
- data.tar.gz: b0407234c841d6b3bf29151e83501f1a7006fb381e0b644acbdb8ef7cf416662
3
+ metadata.gz: 417f7f736a72535965e55d9223869e88f6f3f9e14a055668f8dfe7c165ed0d45
4
+ data.tar.gz: c7196e2f63f4cebe1e9483ce909fdd2be313935d6cca05f5261686e96f4acf58
5
5
  SHA512:
6
- metadata.gz: 409d82992dd0aa86164ca350fde1c5cd4a7fcadfc7961b2f14d7b2f4bfeb8eeaad4cd477a926e857dd480603a2fa7dd61a8821cff9d5da7e23c3c0cb4dbda511
7
- data.tar.gz: c4be1cfa701a33490147c4ce2b45d976eda66aececa774ba30c1dc612bdc259cad335e7d8a72d175bf9f8194ce2c5f3167f224b9e47c028033a68896295bdfc0
6
+ metadata.gz: 05d8a95e19cb55312fc15bc5150d126e26540dea895cfb397ffc4fe896d73a9a7b44c8ba3ed9c54c5bc4c16680a7b350b204b2132cd1a4619b69595c74ff8fdc
7
+ data.tar.gz: a6fee3cde01a6f5381b0aa2e189ff808e88377de181b483b8a37699a15cb8c0de80d38e2b0b63d935466cebfb32141b9b5b5f08623b88218e9e5cc790ac211da
data/CHANGELOG.md CHANGED
@@ -14,3 +14,13 @@
14
14
 
15
15
  ## 0.1.5
16
16
  * Added support for the listing_statuses endpoint for integration partners.
17
+
18
+ ## 1.0.0
19
+ * **Breaking change**: `limit`, `page`, and `search` params should be at the root level requests instead of in the `query` hash.
20
+ * Updated endpoints to use the `api` subdomain; `api.easybroker.com/v1` instead of `www.easybroker.com/api/v1`.
21
+
22
+ # 1.0.1
23
+ * Added support for agencies, agents, properties and property_integrations endpoints for integration partners.
24
+
25
+ # 1.0.2
26
+ * Added support to configure the country code header for integration partners endpoints.
data/README.md CHANGED
@@ -29,6 +29,9 @@ EasyBroker.configure do |config|
29
29
 
30
30
  # Optionally change the root API URL
31
31
  # config.api_root_url = EasyBroker::STAGING_API_ROOT_URL
32
+
33
+ # As an integration partner you must configure the country code
34
+ # config.country_code = 'MX'
32
35
  end
33
36
  ```
34
37
 
@@ -61,7 +64,10 @@ results.next_page
61
64
 
62
65
 
63
66
  # Search for only published properties
64
- client.properties.search(search: { statuses: [:published] } )
67
+ client.properties.search(search: { statuses: [:published] }, limit: 1, page: 1)
68
+
69
+ # As a partner you can update the property integration on EB
70
+ client.integration_partners.property_integrations.update('EB-123', body: { status: 'successful', listing_url: "https://www.yourwebsite.com/EB-XXXX01" })
65
71
  ```
66
72
 
67
73
  You can also pass a logger to log any methods that make remote calls. The logger class must implement a `log` method which will be called with the [HTTParty response](https://www.rubydoc.info/github/jnunemaker/httparty/HTTParty/Response) for every remote request sent.
@@ -79,7 +85,13 @@ client.contact_requests # List and search contact requests in your account - TDB
79
85
  client.properties # List, search and find properties in your account
80
86
  client.mls_properties # List, search and find properties in the MLS - requires MLS API Plan
81
87
  client.listing_statuses # List and search the listing status for properties. Great for syncing large sets of properties. - includes MLS properties if you have the MLS Plan
82
- client.integration_partners.listing_statuses # List and search the listing status for partner properties. Requires an integration partner api key.
88
+
89
+ ### The following require a partner api key.
90
+ client.integration_partners.agencies # List and search connected agencies.
91
+ client.integration_partners.agents # View detailed agent contact information for those agents assigned to properties.
92
+ client.integration_partners.listing_statuses # List and search the listing status for partner properties.
93
+ client.integration_partners.properties # View the full property listing and its details.
94
+ client.integration_partners.property_integrations # Update the property integration on EB with the listing status on your website.
83
95
  ```
84
96
 
85
97
  ## Development
@@ -10,8 +10,9 @@ class EasyBroker::ApiClient
10
10
  def initialize(logger: nil)
11
11
  self.class.base_uri EasyBroker.configuration.api_root_url
12
12
  self.class.headers EasyBroker::DEFAULT_HEADERS.merge(
13
- EasyBroker::AUTHORIZATION_HEADER => EasyBroker.configuration.api_key
14
- )
13
+ EasyBroker::AUTHORIZATION_HEADER => EasyBroker.configuration.api_key,
14
+ EasyBroker::COUNTRY_CODE_HEADER => EasyBroker.configuration.country_code
15
+ ).compact
15
16
  @logger = logger
16
17
  end
17
18
 
@@ -20,11 +21,11 @@ class EasyBroker::ApiClient
20
21
  end
21
22
 
22
23
  def post(path, query: {}, body: {})
23
- send_request(:post, path, query: query, body: body)
24
+ send_request(:post, path, query: query, body: body.to_json)
24
25
  end
25
26
 
26
27
  def put(path, query: {}, body: {})
27
- send_request(:put, path, query: query, body: body)
28
+ send_request(:put, path, query: query, body: body.to_json)
28
29
  end
29
30
 
30
31
  def delete(path, query: {})
@@ -34,9 +35,7 @@ class EasyBroker::ApiClient
34
35
  private
35
36
 
36
37
  def send_request(verb, path = '', params = {})
37
- query = params[:query] || params['query'] || {}
38
-
39
- self.class.send(verb, path, params.merge(query)).tap do |response|
38
+ self.class.send(verb, path, params).tap do |response|
40
39
  check_errors(response)
41
40
  logger&.log response
42
41
  end
@@ -1,8 +1,9 @@
1
1
  class EasyBroker::Configuration
2
- attr_accessor :api_key, :api_root_url
2
+ attr_accessor :api_key, :api_root_url, :country_code
3
3
 
4
4
  def initialize
5
5
  @api_key = nil
6
+ @country_code = nil
6
7
  @api_root_url = EasyBroker::DEFAULT_API_ROOT_URL
7
8
  end
8
9
  end
@@ -5,7 +5,8 @@ module EasyBroker
5
5
  'Accept' => 'application/json',
6
6
  'User-Agent' => USER_AGENT
7
7
  }
8
- DEFAULT_API_ROOT_URL = 'https://www.easybroker.com/api/v1'
9
- STAGING_API_ROOT_URL = 'https://www.stagingeb.com/api/v1'
8
+ DEFAULT_API_ROOT_URL = 'https://api.easybroker.com/v1'
9
+ STAGING_API_ROOT_URL = 'https://api.stagingeb.com/v1'
10
10
  AUTHORIZATION_HEADER = 'X-Authorization'
11
+ COUNTRY_CODE_HEADER = 'Country-Code'
11
12
  end
@@ -10,7 +10,7 @@ module EasyBroker
10
10
 
11
11
  class AuthenticationError < Error
12
12
  def initialize(response)
13
- super('Invalid API Key or missing permissions', response)
13
+ super('Invalid API Key or missing configurations', response)
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EasyBroker
4
+ module IntegrationPartners
5
+ class Agencies
6
+ ENDPOINT = '/integration_partners/agencies'
7
+
8
+ attr_reader :api_client
9
+
10
+ def initialize(api_client)
11
+ @api_client = api_client
12
+ end
13
+
14
+ def find(agency_id)
15
+ response = api_client.get("#{ENDPOINT}/#{agency_id}")
16
+ JSON.parse(response.body, object_class: OpenStruct)
17
+ end
18
+
19
+ def search(query = {})
20
+ stored_query = EasyBroker::Query.new(api_client, ENDPOINT, query)
21
+ EasyBroker::PaginatedResponse.new(stored_query)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EasyBroker
4
+ module IntegrationPartners
5
+ class Agents
6
+ ENDPOINT = '/integration_partners/agents'
7
+
8
+ attr_reader :api_client
9
+
10
+ def initialize(api_client)
11
+ @api_client = api_client
12
+ end
13
+
14
+ def find(agent_id)
15
+ response = api_client.get("#{ENDPOINT}/#{agent_id}")
16
+ JSON.parse(response.body, object_class: OpenStruct)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EasyBroker
4
+ module IntegrationPartners
5
+ class Properties
6
+ ENDPOINT = '/integration_partners/properties'
7
+
8
+ attr_reader :api_client
9
+
10
+ def initialize(api_client)
11
+ @api_client = api_client
12
+ end
13
+
14
+ def find(property_id)
15
+ response = api_client.get("#{ENDPOINT}/#{property_id}")
16
+ JSON.parse(response.body, object_class: OpenStruct)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EasyBroker
4
+ module IntegrationPartners
5
+ class PropertyIntegrations
6
+ ENDPOINT = "/integration_partners/properties/%{property_id}/property_integration"
7
+
8
+ attr_reader :api_client
9
+
10
+ def initialize(api_client)
11
+ @api_client = api_client
12
+ end
13
+
14
+ def update(property_id, body: {})
15
+ response = api_client.put(format(ENDPOINT, property_id: property_id), body: body)
16
+ JSON.parse(response.body, object_class: OpenStruct)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -9,9 +9,25 @@ module EasyBroker
9
9
  @api_client = api_client
10
10
  end
11
11
 
12
+ def agencies
13
+ EasyBroker::IntegrationPartners::Agencies.new(api_client)
14
+ end
15
+
16
+ def agents
17
+ EasyBroker::IntegrationPartners::Agents.new(api_client)
18
+ end
19
+
12
20
  def listing_statuses
13
21
  EasyBroker::IntegrationPartners::ListingStatuses.new(api_client)
14
22
  end
23
+
24
+ def properties
25
+ EasyBroker::IntegrationPartners::Properties.new(api_client)
26
+ end
27
+
28
+ def property_integrations
29
+ EasyBroker::IntegrationPartners::PropertyIntegrations.new(api_client)
30
+ end
15
31
  end
16
32
  end
17
33
  end
@@ -9,8 +9,8 @@ class EasyBroker::Query
9
9
  @query_params = query_params
10
10
  end
11
11
 
12
- def get(page = 1)
13
- query_params[:page] = page
12
+ def get(page = nil)
13
+ query_params[:page] = page if page
14
14
  response = api_client.get(endpoint, query: query_params)
15
15
  JSON.parse(response.body, object_class: OpenStruct)
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module EasyBroker
2
- VERSION = "0.1.5"
2
+ VERSION = "1.0.2"
3
3
  end
data/lib/easy_broker.rb CHANGED
@@ -14,7 +14,11 @@ require 'easy_broker/contact_requests'
14
14
  require 'easy_broker/locations'
15
15
  require 'easy_broker/listing_statuses'
16
16
  require 'easy_broker/integration_partners/public_client'
17
+ require 'easy_broker/integration_partners/agencies'
18
+ require 'easy_broker/integration_partners/agents'
17
19
  require 'easy_broker/integration_partners/listing_statuses'
20
+ require 'easy_broker/integration_partners/properties'
21
+ require 'easy_broker/integration_partners/property_integrations'
18
22
 
19
23
  module EasyBroker
20
24
  def self.configuration
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Northam
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-03 00:00:00.000000000 Z
11
+ date: 2022-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -130,7 +130,11 @@ files:
130
130
  - lib/easy_broker/constants.rb
131
131
  - lib/easy_broker/contact_requests.rb
132
132
  - lib/easy_broker/errors.rb
133
+ - lib/easy_broker/integration_partners/agencies.rb
134
+ - lib/easy_broker/integration_partners/agents.rb
133
135
  - lib/easy_broker/integration_partners/listing_statuses.rb
136
+ - lib/easy_broker/integration_partners/properties.rb
137
+ - lib/easy_broker/integration_partners/property_integrations.rb
134
138
  - lib/easy_broker/integration_partners/public_client.rb
135
139
  - lib/easy_broker/listing_statuses.rb
136
140
  - lib/easy_broker/locations.rb