Skip to content

Commit

Permalink
Add the webhook endpoint implementation.
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanst-stoyanov committed Jan 23, 2017
1 parent 42b33c8 commit 26f8635
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 3 deletions.
1 change: 1 addition & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/main/java/com/nopcommerce/NopCommerceClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,7 @@ public interface NopCommerceClient

@RequestLine("GET /api/orders?limit={limit}&since_id={since-id}&page={page}&fields={fields}")
OrderList getOrders(@Param("limit") Integer limit, @Param("page") Integer page, @Param("since-id") String sinceId, @Param("fields") String fields);

@RequestLine("POST /api/webhooks/registrations")
WebHook createWebhook(WebHook webhook);
}
14 changes: 13 additions & 1 deletion src/main/java/com/nopcommerce/NopCommerceFactory.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,30 @@
package com.nopcommerce;

import com.nopcommerce.auth.ContentTypeRequestInterceptor;
import com.nopcommerce.auth.OAuthRequestInterceptor;
import feign.Feign;
import feign.RequestInterceptor;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;

import java.util.ArrayList;

public class NopCommerceFactory
{
public static NopCommerceClient create(String accessToken, String storeUrl)
{
// Prepare the request interceptors
ArrayList<RequestInterceptor> requestInterceptors = new ArrayList<>();

requestInterceptors.add(new OAuthRequestInterceptor(accessToken));
requestInterceptors.add(new ContentTypeRequestInterceptor());

NopCommerceClient nopCommerceClient = Feign.builder()
.decoder(new JacksonDecoder())
.encoder(new JacksonEncoder())
.requestInterceptor(new OAuthRequestInterceptor(accessToken))
// .logger(new Logger.JavaLogger().appendToFile("http.log"))
// .logLevel(Logger.Level.FULL)
.requestInterceptors(requestInterceptors)
.target(NopCommerceClient.class, storeUrl);

return nopCommerceClient;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.nopcommerce.auth;

import feign.RequestInterceptor;
import feign.RequestTemplate;

public class ContentTypeRequestInterceptor implements RequestInterceptor
{
@Override
public void apply(RequestTemplate template)
{
template.header("Content-Type", "application/json");
}
}
15 changes: 15 additions & 0 deletions src/main/java/com/nopcommerce/domain/Image.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.nopcommerce.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.nopcommerce.json.JsonConstants;
import lombok.Data;

@Data
public class Image
{
@JsonProperty(value = JsonConstants.ID)
private int id;

@JsonProperty(value = JsonConstants.IMAGES)
private String src;
}
8 changes: 7 additions & 1 deletion src/main/java/com/nopcommerce/domain/Product.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class Product
Expand All @@ -29,6 +30,12 @@ public class Product
@JsonProperty(value = JsonConstants.SKU)
private String sku;

@JsonProperty(value = JsonConstants.SE_NAME)
private String seName;

@JsonProperty(value = JsonConstants.IMAGES)
private List<Image> images;

@JsonProperty(value = JsonConstants.STOCK_QUANTITY)
private int stockQuantity;

Expand All @@ -47,7 +54,6 @@ public class Product
@JsonProperty(value = JsonConstants.PRODUCT_TYPE)
private ProductType productType;


@JsonProperty(value = JsonConstants.CREATED_ON_UTC)
@JsonDeserialize(using = FlexDateDeserializer.class)
@JsonSerialize(using = FlexDateSerializer.class)
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/com/nopcommerce/domain/WebHook.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.nopcommerce.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.nopcommerce.json.JsonConstants;
import lombok.Data;

import java.util.HashMap;
import java.util.Set;

@Data
public class WebHook
{
@JsonProperty(value = JsonConstants.ID)
private String id;

@JsonProperty(value = JsonConstants.DESCRIPTION)
private String description;

@JsonProperty(value = JsonConstants.FILTERS)
private Set<String> filters;

@JsonProperty(value = JsonConstants.IS_PAUSED)
private boolean isPaused;

@JsonProperty(value = JsonConstants.HEADERS)
private HashMap<String, String> headers;

@JsonProperty(value = JsonConstants.PROPERTIES)
private HashMap<String, Object> properties;

@JsonProperty(value = JsonConstants.SECRET)
private String secret;

@JsonProperty(value = JsonConstants.WEB_HOOK_UIR)
private String webHookUri;
}
15 changes: 14 additions & 1 deletion src/main/java/com/nopcommerce/json/JsonConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public final class JsonConstants
public static final String COUNTRY = "country";
public static final String CITY = "city";
public static final String PROVINCE = "province";
public static final String PHONE = "phone";
public static final String PHONE = "phone_number";
public static final String ZIP_CODE = "zip_postal_code";
public static final String ADDRESS1 = "address1";
public static final String ADDRESS2 = "address2";
Expand All @@ -35,13 +35,17 @@ public final class JsonConstants
public static final String SHORT_DESCRIPTION = "short_description";
public static final String FULL_DESCRIPTION = "full_description";
public static final String SKU = "sku";
public static final String SE_NAME = "se_name";
public static final String STOCK_QUANTITY = "stock_quantity";
public static final String PRICE = "price";
public static final String OLD_PRICE = "old_price";
public static final String PRODUCT_COST = "product_cost";
public static final String CUSTOMER_ENTERS_PRICE = "customer_enters_price";
public static final String PRODUCT_TYPE = "product_type";

// Image
public static final String IMAGES = "images";

// Product category mapping
public static final String PRODUCT_CATEGORY_MAPPINGS = "product_category_mappings";

Expand All @@ -63,4 +67,13 @@ public final class JsonConstants
public static final String SHIPPING_METHOD = "shipping_method";

public static final String QUANTITY = "quantity";

// Webhook
public static final String DESCRIPTION = "Description";
public static final String FILTERS = "Filters";
public static final String IS_PAUSED = "IsPaused";
public static final String HEADERS = "Headers";
public static final String PROPERTIES = "Properties";
public static final String SECRET = "Secret";
public static final String WEB_HOOK_UIR = "WebHookUri";
}

0 comments on commit 26f8635

Please sign in to comment.