Skip to content

Instantly share code, notes, and snippets.

View mtreacy002's full-sized avatar
🎯
Focusing

Maya Treacy mtreacy002

🎯
Focusing
  • Victoria, Australia
View GitHub Profile
@mtreacy002
mtreacy002 / api_decorator_utils.py
Created July 6, 2020 02:07
Python decorator - tuple to namedtuple
from collections import namedtuple
def http_response_namedtuple_converter(user_function):
def tuple_to_namedtuple_http_response(result):
HttpNamedTupleResponse = namedtuple("HttpNamedTupleResponse", ["message", "status_code"])
converted_result = HttpNamedTupleResponse(*result)
return user_function(converted_result)
return tuple_to_namedtuple_http_response
@mtreacy002
mtreacy002 / api_response_checker_with_decorator.py
Last active July 6, 2020 05:19
Python decorator - tuple to namedtuple
@http_response_namedtuple_converter
def http_response_checker(result):
if result.status_code == HTTPStatus.NOT_FOUND:
result = http_not_found_status_checker(result)
#... more 'if' here
return result
@http_response_namedtuple_converter
def http_not_found_status_checker(result):
if result.message == messages.WRONG_USERNAME_OR_PASSWORD:
@mtreacy002
mtreacy002 / api_response_checker_without_decoratorr.py
Last active July 6, 2020 05:20
Python decorator - tuple to namedtuple
def http_response_checker(result):
if result[1] == HTTPStatus.NOT_FOUND:
result = http_not_found_status_checker(result)
# ... more 'if' here ...
return result
def http_not_found_status_checker(result):
if result[0] == messages.WRONG_USERNAME_OR_PASSWORD
return messages.WRONG_USERNAME_OR_PASSWORD, HTTPStatus.UNAUTHORIZED
# ... more 'if' here ...
@mtreacy002
mtreacy002 / AuthContext.js
Created July 13, 2020 10:00
Protected pagee with Reactjs
import React, {createContext, useEffect, useState} from "react";
import Cookies from "js-cookie";
export const AuthContext = createContext({
user: null, isAuth: false, login: () => {
}, logout: () => {
}
});
function AuthProvider({ children }) {
@mtreacy002
mtreacy002 / Navigation.js
Last active July 13, 2020 10:29
Protected page with Reactjs
import React, { useContext } from "react";
import { Navbar, Nav, Card, Accordion } from "react-bootstrap";
import { Link } from "react-router-dom"
import { AuthContext } from "./AuthContext";
export default function Navigation() {
const { user, isAuth, login, logout } = useContext(AuthContext);
return (
@mtreacy002
mtreacy002 / Routes.js
Created July 13, 2020 10:47
Protected page with Reactjs
import React from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Home from "./Home";
import Login from "./Login";
import MySpace from "./MySpace";
import ProtectedRoute from "./ProtectedRoute";
import Navigation from "./Navigation";
import AuthProvider from "./AuthContext";
export default function Routes() {
@mtreacy002
mtreacy002 / ProtectedRoute.jsx
Created July 13, 2020 10:52
Protected page with Reactjs
import React, { useContext } from "react";
import { Route, Redirect } from "react-router-dom";
import { AuthContext } from "./AuthContext";
export default function ProtectedRoute({ children, ...rest }) {
const { isAuth } = useContext(AuthContext);
return (
<Route
{...rest}
@mtreacy002
mtreacy002 / users.py
Last active August 3, 2020 03:05
POST and PUT users additional information before refactoring.
@classmethod
@users_ns.doc("create_user_additional_info")
@users_ns.response(
HTTPStatus.CREATED, f"{messages.ADDITIONAL_INFO_SUCCESSFULLY_CREATED}"
)
@users_ns.response(
HTTPStatus.BAD_REQUEST,
f"{messages.USER_ID_IS_NOT_VALID}\n"
f"{messages.IS_ORGANIZATION_REP_FIELD_IS_MISSING}\n"
f"{messages.TIMEZONE_FIELD_IS_MISSING}"
@mtreacy002
mtreacy002 / AdditionalInfo.jsx
Created August 3, 2020 03:11
POST and PUT user additional info frontend before refactor
export default function AdditionalInfo() {
const [responseMessage, setResponseMessage] = useState(null);
const [additionalInfo, setAdditionalInfo] = useState({});
const { access_token, user } = useContext(AuthContext);
const [isValidPhone, setIsValidPhone] = useState(true);
const [isValidMobile, setIsValidMobile] = useState(true);
const requestAdditionalInfo = {
method: "GET",
headers: {
@mtreacy002
mtreacy002 / users.py
Created August 8, 2020 00:02
After refactoring POST PUT to just PUT /user/additional_info
//...
@classmethod
@users_ns.doc("update_user_additional_info")
@users_ns.response(
HTTPStatus.OK, f"{messages.ADDITIONAL_INFO_SUCCESSFULLY_UPDATED}"
)
@users_ns.response(
HTTPStatus.CREATED, f"{messages.ADDITIONAL_INFO_SUCCESSFULLY_CREATED}"
)