김재형

Implement dummy file api

1 -import { createServer, Model } from "miragejs"; 1 +import { createServer, Model, Response } from "miragejs";
2 import { ModelDefinition } from "miragejs/-types"; 2 import { ModelDefinition } from "miragejs/-types";
3 3
4 interface Item { 4 interface Item {
...@@ -51,10 +51,16 @@ createServer({ ...@@ -51,10 +51,16 @@ createServer({
51 this.get("/items/:item_id/children", (schema, request) => { 51 this.get("/items/:item_id/children", (schema, request) => {
52 const directory = schema.find("item", request.params.item_id); 52 const directory = schema.find("item", request.params.item_id);
53 if (!directory || !directory.is_folder) { 53 if (!directory || !directory.is_folder) {
54 - return { 54 + return new Response(
55 + 404,
56 + {
57 + "Content-Type": "application/json",
58 + },
59 + JSON.stringify({
55 status: 404, 60 status: 404,
56 message: "Not Found", 61 message: "Not Found",
57 - }; 62 + })
63 + );
58 } 64 }
59 65
60 const list = schema.where("item", { parent: directory.id }).models; 66 const list = schema.where("item", { parent: directory.id }).models;
...@@ -68,9 +74,116 @@ createServer({ ...@@ -68,9 +74,116 @@ createServer({
68 }; 74 };
69 }); 75 });
70 76
77 + this.post("/items/:item_id/children", (schema, request) => {
78 + return {
79 + status: 200,
80 + data: {
81 + id: "2341",
82 + is_folder: true,
83 + name: "cloudComputing",
84 + created_timestamp: "2020-05-14T06:20:44Z",
85 + updated_timestamp: "2020-05-14T06:20:44Z",
86 + size: 0,
87 + },
88 + };
89 + });
90 +
91 + this.post("/items/:item_id/upload", (schema, request) => {
92 + return {
93 + status: 200,
94 + data: {
95 + id: "2342",
96 + name: "image.jpg",
97 + is_folder: false,
98 + size: 92929,
99 + path:
100 + "https://presignedurldemo.s3.eu-west-2.amazonaws.com/image.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJJWZ7B6WCRGMKFGQ%2F20180210%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180210T171315Z&X-Amz-Expires=1800&X-Amz-Signature=12b74b0788aa036bc7c3d03b3f20c61f1f91cc9ad8873e3314255dc479a25351&X-Amz-SignedHeaders=host",
101 + },
102 + };
103 + });
104 +
105 + this.post("/items/:item_id/status", (schema, request) => {
106 + return {
107 + status: 200,
108 + message: "ok",
109 + };
110 + });
111 +
112 + this.post("/items/:item_id/move", (schema, request) => {
113 + return {
114 + status: 200,
115 + data: {
116 + id: "2342",
117 + name: "image.jpg",
118 + is_folder: false,
119 + parentinfo: {
120 + id: "1234",
121 + name: "folder",
122 + is_folder: true,
123 + updated_timestamp: "2020-05-14T06:20:44Z",
124 + },
125 + },
126 + };
127 + });
128 +
129 + this.post("/items/:item_id/copy", (schema, request) => {
130 + return {
131 + status: 200,
132 + data: {
133 + id: "2342",
134 + name: "image.jpg",
135 + is_folder: false,
136 + parentinfo: {
137 + id: "1234",
138 + name: "folder",
139 + is_folder: true,
140 + updated_timestamp: "2020-05-14T06:20:44Z",
141 + },
142 + },
143 + };
144 + });
145 +
146 + this.get("/items/:item_id", (schema, request) => {
147 + return {
148 + status: 200,
149 + data: {
150 + id: "2342",
151 + name: "image.jpg",
152 + is_folder: false,
153 + size: 92929,
154 + path:
155 + "https://presignedurldemo.s3.eu-west-2.amazonaws.com/image.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJJWZ7B6WCRGMKFGQ%2F20180210%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180210T171315Z&X-Amz-Expires=1800&X-Amz-Signature=12b74b0788aa036bc7c3d03b3f20c61f1f91cc9ad8873e3314255dc479a25351&X-Amz-SignedHeaders=host",
156 + created_timestamp: "2020-05-14T06:20:44Z",
157 + updated_timestamp: "2020-05-14T06:20:44Z",
158 + },
159 + };
160 + });
161 +
162 + this.delete("/items/:item_id", (schema, request) => {
163 + return {
164 + status: 200,
165 + message: "ok",
166 + };
167 + });
168 +
71 this.post("/users/login", (schema, request) => { 169 this.post("/users/login", (schema, request) => {
72 const body = JSON.parse(request.requestBody); 170 const body = JSON.parse(request.requestBody);
73 - if (body.user_id === "admin" && body.password === "password") { 171 + const admin = schema.findBy("user", {
172 + user_id: body.user_id,
173 + password: body.password,
174 + });
175 + if (!admin) {
176 + return new Response(
177 + 401,
178 + {
179 + "Content-Type": "application/json",
180 + },
181 + JSON.stringify({
182 + status: 401,
183 + message: "unauthorized",
184 + })
185 + );
186 + }
74 return { 187 return {
75 status: 200, 188 status: 200,
76 data: { 189 data: {
...@@ -81,18 +194,13 @@ createServer({ ...@@ -81,18 +194,13 @@ createServer({
81 expiration: "2020-05-14T07:23:24Z", 194 expiration: "2020-05-14T07:23:24Z",
82 }, 195 },
83 }; 196 };
84 - }
85 - return {
86 - status: 401,
87 - message: "unauthorized",
88 - };
89 }); 197 });
90 }, 198 },
91 199
92 seeds(server) { 200 seeds(server) {
93 const user = server.create("user", { 201 const user = server.create("user", {
94 id: "1", 202 id: "1",
95 - user_id: "test", 203 + user_id: "admin",
96 name: "테스트", 204 name: "테스트",
97 password: "password", 205 password: "password",
98 total_size: 1024 * 1024 * 1024 * 5, // 5GB 206 total_size: 1024 * 1024 * 1024 * 5, // 5GB
......