Skip to content

Instantly share code, notes, and snippets.

View susimsek's full-sized avatar
🎯
Focusing

Şuayb Şimşek susimsek

🎯
Focusing
View GitHub Profile
@susimsek
susimsek / gateway.js
Created August 27, 2022 09:09
Apollo Federation
const startGateway = (config, apolloGatewayConfig) => {
const corsOptions = {
origin: config.CORS_ALLOWED_ORIGINS.split(", "),
credentials: config.CORS_ALLOW_CREDENTIALS
}
const gateway = new ApolloGateway(apolloGatewayConfig);
const server = new ApolloServer({
gateway,
@susimsek
susimsek / AcceptHeaderResolver.java
Created April 12, 2022 12:52
Spring Boot i18n Customer LocaleResolver
public class AcceptHeaderResolver extends AcceptHeaderLocaleResolver {
private static final String LOCALE_PARAM = "locale";
@Override
public Locale resolveLocale(HttpServletRequest request) {
String localeParam = request.getParameter(LOCALE_PARAM);
if (StringUtils.hasText(localeParam)) {
Locale locale = StringUtils.parseLocaleString(localeParam);
this.setDefaultLocale(locale);
@susimsek
susimsek / ApiError.java
Created March 20, 2022 14:14
Spring Boot i18n Custom Exception Handling
package org.hyperledger.fabric.assettransfer.exception;
import lombok.*;
import lombok.experimental.FieldDefaults;
import org.springframework.http.HttpStatus;
import java.time.LocalDateTime;
import java.util.List;
@FieldDefaults(level = AccessLevel.PRIVATE)
@susimsek
susimsek / AddCapability.js
Created March 14, 2022 20:17
Hateoas Capability Component
const {postLink} = useSelector((store) => ({
postLink: store.capability.links.capabilities.href
}));
const onSubmit = async e => {
e.preventDefault();
const newCapability = {
techStack,
numOfDevelopers,
@susimsek
susimsek / capabilityReducer.js
Created March 14, 2022 20:04
Hateoas Redux Reducer
const initialState = {
capabilities: [],
capability: {},
links: {},
page: {
totalPages: 0,
totalElements: 0,
number: 0,
size: 3
}
@susimsek
susimsek / CapabilityActions.js
Created March 14, 2022 19:48
Hateoas Redux
export const getAllCapabilitiesHandler = (getLink) => async dispatch => {
try {
const res = await getAllCapabilities(getLink);
dispatch({
type: GET_CAPABILITIES,
payload: res.data._embedded ? res.data._embedded.capabilities : [],
links: res.data._links,
page: res.data.page
});
} catch (error) {
@susimsek
susimsek / apiCalls.js
Created March 14, 2022 19:13
React Hateoas Api Call
export const deleteCapability = (deleteLink) => {
return instance.delete(deleteLink);
}
export const addCapability = (capability, postLink) => {
return instance.post(postLink, capability);
}
export const updateCapability = (capability, updateLink) => {
return instance.put(updateLink, capability);
@susimsek
susimsek / CapabilityController.java
Last active March 14, 2022 09:41
Hateoas CapabilityController.java
public ResponseEntity<PagedModel<CapabilityDto>> getAllCapabilitiesWithPagination(@ParameterObject Pageable pageable) {
Page<Capability> page = capabilityService.getAllCapabilitiesWithPagination(pageable);
return ResponseEntity.ok(capabilityModelAssembler.toPagedModel(page));
}
ResponseEntity<CollectionModel<CapabilityDto>> getAllCapabilities() {
List<Capability> entities = capabilityService.getAllCapabilities();
return ResponseEntity.ok(capabilityModelAssembler.toCollectionModel(entities));
}
@susimsek
susimsek / CapabilityModelAssembler.java
Last active March 14, 2022 09:43
Hateoas Assembler
@Component
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class CapabilityModelAssembler implements RepresentationModelAssembler<Capability, CapabilityDto> {
final PagedResourcesAssembler<Capability> pagedResourcesAssembler;
final CapabilityMapper capabilityMapper;
@Override
public CapabilityDto toModel(Capability entity) {
@susimsek
susimsek / CapabilityDto.java
Created March 13, 2022 19:46
Spring boot Hateoas RepresentationModel
@Schema(name="Capability", description = "Capability")
@FieldDefaults(level = AccessLevel.PRIVATE)
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Relation(collectionRelation = "capabilities")
@Builder