easy_broker 0.1.5 → 1.0.2

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: 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