local storage and google docs finished
diff --git a/config.py b/config.py
index 26e9800..57888c3 100644
--- a/config.py
+++ b/config.py
@@ -3,4 +3,5 @@
 WORK_SHEET = "Worksheet"
 COL_COUNT = 2
 ROW_COUNT = 10
-DEFAULT_FILE_PATH="test.json"
+DEFAULT_FILE_PATH = "test.json"
+OUTPUT_FILE = "output.json"
diff --git a/make_report.py b/make_report.py
index 0dd363d..eb99ae8 100644
--- a/make_report.py
+++ b/make_report.py
@@ -2,9 +2,9 @@
 import argparse
 import json
 
-from config import DEFAULT_FILE_PATH, PASSWORD, EMAIL, \
-    WORK_SHEET, DOCUMENT_ID, ROW_COUNT
-from gspread.exceptions import WorksheetNotFound
+from config import DEFAULT_FILE_PATH, \
+    WORK_SHEET, DOCUMENT_ID, ROW_COUNT, OUTPUT_FILE
+from storage_api import DiskStorage, GoogleDocsStorage, get_work_sheet, append_row
 
 
 def load_data(file_name):
@@ -14,39 +14,6 @@
 
 
 #getting worksheet from sheet or create it with specified column names.
-def get_work_sheet(sheet, name, column_names):
-    try:
-        work_sheet = sheet.worksheet(name)
-    except WorksheetNotFound:
-        work_sheet = sheet.add_worksheet(title=name, rows=ROW_COUNT,
-                                         cols=max(40, len(column_names)))
-
-        for i in range(1, len(column_names) + 1):
-            work_sheet.update_cell(1, i, column_names[i - 1])
-
-    return work_sheet
-
-
-def get_row_number(work_sheet):
-    num = 2
-
-    while num < work_sheet.row_count and work_sheet.cell(num, 1).value != "":
-        num += 1
-
-    if num == work_sheet.row_count:
-        work_sheet.append_row(["" for x in range(work_sheet.col_count)])
-
-    return num
-
-
-def append_row(work_sheet, row):
-    row_number = get_row_number(work_sheet)
-
-    i = 1
-    for k in row.keys():
-        work_sheet.update_cell(row_number, i, row[k])
-        i += 1
-
 
 def make_report(email, password, data):
     gc = gspread.login(email, password)
@@ -56,9 +23,15 @@
     append_row(work_sheet, data)
 
 
-def main(file_name, email, password):
+def main(file_name, email, password, mode):
     data = load_data(file_name)
-    make_report(email, password, data)
+
+    if mode == 'local':
+        storage = DiskStorage(OUTPUT_FILE)
+    else:
+        storage = GoogleDocsStorage(DOCUMENT_ID, WORK_SHEET, email, password)
+
+    storage.store(data)
 
 
 if __name__ == '__main__':
@@ -70,8 +43,7 @@
     parser.add_argument('-p', '--password', help='user password',
                         default="1234")
     parser.add_argument('-m', '--mode', help='mode type local or global',
-                        default=DEFAULT_FILE_PATH)
+                        default='local')
     results = parser.parse_args()
-    print results
-    # main(file_name, email, password)
+    main(results.name, results.email, results.password, results.mode)
 
diff --git a/storage_api.py b/storage_api.py
index 2b571dd..c0a9cb1 100644
--- a/storage_api.py
+++ b/storage_api.py
@@ -1,6 +1,41 @@
-import gspread
-from config import EMAIL, PASSWORD, DOCUMENT_ID, WORK_SHEET
-from make_report import get_work_sheet, append_row
+from gspread import WorksheetNotFound, login
+import json
+import os
+from config import ROW_COUNT
+
+
+def get_work_sheet(sheet, name, column_names):
+    try:
+        work_sheet = sheet.worksheet(name)
+    except WorksheetNotFound:
+        work_sheet = sheet.add_worksheet(title=name, rows=ROW_COUNT,
+                                         cols=max(40, len(column_names)))
+
+        for i in range(1, len(column_names) + 1):
+            work_sheet.update_cell(1, i, column_names[i - 1])
+
+    return work_sheet
+
+
+def get_row_number(work_sheet):
+    num = 2
+
+    while num < work_sheet.row_count and work_sheet.cell(num, 1).value != "":
+        num += 1
+
+    if num == work_sheet.row_count:
+        work_sheet.append_row(["" for x in range(work_sheet.col_count)])
+
+    return num
+
+
+def append_row(work_sheet, row):
+    row_number = get_row_number(work_sheet)
+
+    i = 1
+    for k in row.keys():
+        work_sheet.update_cell(row_number, i, row[k])
+        i += 1
 
 
 class Measurement(object):
@@ -14,9 +49,17 @@
 
 
 class Storage(object):
+    def store(self, data):
+        pass
 
-    def __init__(self, email, password, doc_id, work_sheet_name):
-        self.gc = gspread.login(email, password)
+    def retrieve(self, id):
+        pass
+
+
+class GoogleDocsStorage(Storage):
+
+    def __init__(self, doc_id, work_sheet_name, email=None, password=None):
+        self.gc = login(email, password)
         self.sh = self.gc.open_by_key(doc_id)
         self.work_sheet = get_work_sheet(self.sh, work_sheet_name, 40)
 
@@ -29,12 +72,9 @@
         if row_number != -1:
             vals = self.work_sheet.row_values(row_number)
             m = Measurement()
-            m.build = vals["build_id"]
-            del vals["build_id"]
-            m.build_type = vals["type"]
-            del vals["type"]
-            m.md5 = vals["iso_md5"]
-            del vals["iso_md5"]
+            m.build = vals.pop("build_id")
+            m.build_type = vals.pop("type")
+            m.md5 = vals.pop("iso_md5")
             m.results = {k: vals[k] for k in vals.keys()}
         else:
             return None
@@ -47,3 +87,36 @@
         return -1
 
 
+class DiskStorage(Storage):
+    def __init__(self, file_name):
+        self.file_name = file_name
+
+        if not os.path.exists(file_name):
+            with open(file_name, "w+") as f:
+                f.write(json.dumps([]))
+
+    def store(self, data):
+        with open(self.file_name, "rt") as f:
+            raw_data = f.read()
+            document = json.loads(raw_data)
+            document.append(data)
+
+        with open(self.file_name, "w+") as f:
+            f.write(json.dumps(document))
+
+    def retrieve(self, id):
+        with open(self.file_name, "rt") as f:
+            raw_data = f.read()
+            document = json.loads(raw_data)
+
+            for row in document:
+                if row["build_id"] == id:
+                    m = Measurement()
+                    m.build = row.pop("build_id")
+                    m.build_type = row.pop("type")
+                    m.md5 = row.pop("iso_md5")
+                    m.results = {k: row[k] for k in row.keys()}
+
+                    return m
+        return None
+